Prototype WndProc(hWnd,uMsg,wParam,lParam) Structure AddWindowStruct hWnd.l height.l cont.l WndProc.WndProc EndStructure Procedure _subclass_aw_cb_(hWnd,uMsg,wParam,lParam) Protected *EWindow.AddWindowStruct = getprop_(hWnd,"wichtiger_speicher") Protected rc2.rect,rc.rect,*rc.rect Protected result,pen,hdc If uMsg = #WM_SIZE GetClientRect_(hWnd,rc) MapWindowPoints_(hWnd,GetParent_(*EWindow\cont),@rc,2) If getwindowlong_(hWnd,#GWL_STYLE) & #WS_VSCROLL rc\right-rc\left+GetSystemMetrics_(#SM_CXVSCROLL) Else rc\right-rc\left EndIf BringWindowToTop_(*EWindow\cont) SetWindowPos_(*EWindow\hWnd,0,rc\left,rc\top-*EWindow\height-1,rc\right,*EWindow\height,#SWP_NOZORDER) EndIf If uMsg = #WM_NCHITTEST If *EWindow\WndProc(hWnd,uMsg,wParam,lParam) = #HTNOWHERE ProcedureReturn #HTTRANSPARENT EndIf EndIf If uMsg = #WM_NCPAINT pen = CreatePen_(#PS_SOLID,1,GetSysColor_(#COLOR_3DSHADOW )) GetClientRect_(hWnd,rc) hdc = GetWindowDC_(hWnd) SelectObject_(hdc,pen) MoveToEx_(hdc,0,*EWindow\height+2,0) If getwindowlong_(hWnd,#GWL_STYLE) & #WS_VSCROLL rc\right + GetSystemMetrics_(#SM_CXVSCROLL) + 2 Else rc\right + 2 EndIf LineTo_(hdc,rc\right,*EWindow\height+2) DeleteObject_(pen) ReleaseDC_(hWnd,hdc) EndIf If uMsg = #WM_NCCALCSIZE *EWindow\WndProc(hWnd,uMsg,wParam,lParam) *rc = lParam *rc\top + *EWindow\height + 1 ProcedureReturn 0 EndIf If uMsg = #WM_NCDESTROY DestroyWindow_(*EWindow\cont) FreeMemory(*EWindow) ProcedureReturn 0 EndIf ProcedureReturn *EWindow\WndProc(hWnd,uMsg,wParam,lParam) EndProcedure Procedure AddExtraWindow(hWnd,hWnd2) Protected *EWindow.AddWindowStruct Protected rc.rect *EWindow = getprop_(hWnd,"wichtiger_speicher") If Not *EWindow *EWindow = AllocateMemory(SizeOf(AddWindowStruct)) Setprop_(hWnd,"wichtiger_speicher",*EWindow) *EWindow\WndProc = setwindowlong_(hWnd,#GWL_WNDPROC,@_subclass_aw_cb_()) EndIf GetClientRect_(hWnd2,rc) *EWindow\hWnd = hWnd2 *EWindow\height = rc\bottom + 1 *EWindow\cont = hWnd2 SetWindowPos_(hWnd, 0, 0, 0, 0, 0,#SWP_FRAMECHANGED|#SWP_NOMOVE|#SWP_NOSIZE|#SWP_NOACTIVATE|#SWP_NOZORDER) EndProcedure Procedure CreateTreeToolbar(id,hWnd) Protected *con.long Protected tb.l,hTB.l Protected style *con = ContainerGadget(#PB_Any,0,0,0,21) CloseGadgetList() tb = CreateToolBar(id,*con\l) If id = #PB_Any hTB = ToolBarID(tb) Else hTB = tb EndIf style = getwindowlong_(hTB,#GWL_STYLE) setwindowlong_(hTB,#GWL_STYLE,style|#CCS_NODIVIDER) AddExtraWindow(hWnd,*con\l) ProcedureReturn tb EndProcedure ;################################################################## ;# ;# TEST ;# ;################################################################## Procedure main() Protected hWnd Protected event,item,count,i hWnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,320,240,"leer") TreeGadget(0,5,5,310,230,#PB_Tree_AlwaysShowSelection) CatchImage(0,?collapseall) CatchImage(1,?expandall) CatchImage(2,?delete) CatchImage(3,?enabled) If CreateTreeToolbar(0,GadgetID(0)) ToolBarImageButton(0, ImageID(0)) : ToolBarToolTip(0,0,"Alle einklappen") ToolBarImageButton(1, ImageID(1)) : ToolBarToolTip(0,1,"Alle aufklappen") ToolBarImageButton(2, ImageID(2)) : ToolBarToolTip(0,2,"Item loeschen") ToolBarImageButton(3, ImageID(3),#PB_ToolBar_Toggle) : ToolBarToolTip(0,3,"Deaktivieren") EndIf For i = 0 To 10 AddGadgetItem(0, -1, "Normal Item "+Str(i), 0, 0) AddGadgetItem(0, -1, "Node "+Str(i), 0, 1) Next Repeat event = WaitWindowEvent() If event = #PB_Event_Menu Select EventMenu() Case 0 : count = CountGadgetItems(0) For i = 0 To count -1 SetGadgetItemState(0,i,#PB_Tree_Collapsed) Next Case 1 : count = CountGadgetItems(0) For i = 0 To count -1 SetGadgetItemState(0,i,#PB_Tree_Expanded) Next Case 2 : item = GetGadgetState(0) RemoveGadgetItem(0,item) Case 3 : state = GetToolBarButtonState(0,3) DisableGadget(0,state) SetGadgetState(0,-1) EndSelect EndIf Until event = #PB_Event_CloseWindow EndProcedure:main() DataSection collapseall: Data.l $00010000,$10100001,$00000010,$01280004,$00160000,$00280000,$00100000,$00200000,$00010000,$00000004,$00C00000,$00000000 Data.l $00000000,$00000000,$00000000,$FCFF0000,$FAFF00FC,$94AC00F9,$AFC4008C,$FCFF00A6,$FAFF00FA,$F8FF00F6,$457C00F1,$F7FF0004 Data.l $F8FF00EC,$F0FF00EE,$000000D5,$00000000,$00000000,$00000000,$00000000,$BBBB0000,$BBBBBBBB,$BBBBBBBB,$22222222,$BBBB2B22 Data.l $0000002A,$33BB2B00,$4444442A,$3ABB2B44,$1111112A,$3ABB2B11,$AAAA5A2A,$3ABB2BAA,$7777772A,$3ABB2B76,$6666662A,$3ABB2B66 Data.l $9999992A,$3ABB2B99,$8888882A,$3ABB2B88,$AAAAAA2A,$3ABB2BAA,$22222222,$3ABB2B22,$AAAAAAAA,$33BBBB3B,$33333333,$BBBBBB3B Data.l $BBBBBBBB,$BBBBBBBB,$BBBBBBBB,$FFFFBBBB,$01F00000,$01F00000,$01C00000,$01C00000,$01C00000,$01C00000,$01C00000,$01C00000 Data.l $01C00000,$01C00000,$01C00000,$07C00000,$07C00000,$FFFF0000,$FFFF0000 Data.b $00,$00 expandall: Data.l $00010000,$10100001,$00000010,$01280004,$00160000,$00280000,$00100000,$00200000,$00010000,$00000004,$00C00000,$00000000 Data.l $00000000,$00000000,$00000000,$96AB0000,$B1C3008B,$467A00A5,$FDFF0001,$F3FF00F9,$FBFF00D5,$FAFF00F1,$FBFF00EC,$FDFF00EE Data.l $FFFF00F6,$FFFF00FA,$FFFF00FC,$FFFF00FF,$FFFF00FF,$FFFF00FF,$000000FF,$FFFF0000,$FFFFFFFF,$FFFFFFFF,$00000000,$FFFF0F00 Data.l $4AAAAA04,$11FF0FAA,$49929904,$14FF0F99,$43323304,$14FF0F33,$44428404,$14FF0F44,$22222204,$14FF0F25,$45525504,$14FF0F55 Data.l $47727704,$14FF0F77,$66626604,$14FF0F66,$44444404,$14FF0F44,$00000000,$14FF0F00,$44444444,$11FFFF1F,$11111111,$FFFFFF1F Data.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$01F00000,$01F00000,$01C00000,$01C00000,$01C00000,$01C00000,$01C00000,$01C00000 Data.l $01C00000,$01C00000,$01C00000,$07C00000,$07C00000,$FFFF0000,$FFFF0000 Data.b $00,$00 delete: Data.l $00010000,$10100001,$00000000,$05680008,$00160000,$00280000,$00100000,$00200000,$00010000,$00000008,$01400000,$00000000 Data.l $00000000,$00000000,$00000000,$33350000,$717400C7,$737400F4,$727400F4,$737500F3,$2A2F00F3,$2C3400D8,$2C3300E0,$293000DF Data.l $363E00C7,$363E00E6,$202B00E5,$303900C5,$556000E5,$636B00F2,$636A00F4,$636B00F3,$646B00F3,$182700F3,$192800C5,$192700C6 Data.l $202C00C5,$546000C6,$132500F2,$3F5200C5,$3F5100F1,$485800F0,$485800F2,$657400F1,$9CA800D4,$5D4900DF,$6E5E00CA,$574600CE Data.l $584600CA,$584600CA,$887C00C9,$504300D5,$A6A000C9,$473E00DC,$473F00C9,$473F00C9,$3D3900C8,$615B00C7,$817D00E0,$3D3A00F5 Data.l $524F00C7,$807E00E3,$807E00F5,$C4C400F4,$000000E3,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$75000000,$76000075,$77000076,$78000077,$79000078 Data.l $7A000079,$7B00007A,$7C00007B,$7D00007C,$7E00007D,$7F00007E,$8000007F,$81000080,$82000081,$83000082,$84000083,$85000084 Data.l $86000085,$87000086,$88000087,$89000088,$8A000089,$8B00008A,$8C00008B,$8D00008C,$8E00008D,$8F00008E,$9000008F,$91000090 Data.l $92000091,$93000092,$94000093,$95000094,$96000095,$97000096,$98000097,$99000098,$9A000099,$9B00009A,$9C00009B,$9D00009C Data.l $9E00009D,$9F00009E,$A000009F,$A10000A0,$A20000A1,$A30000A2,$A40000A3,$A50000A4,$A60000A5,$A70000A6,$A80000A7,$A90000A8 Data.l $AA0000A9,$AB0000AA,$AC0000AB,$AD0000AC,$AE0000AD,$AF0000AE,$B00000AF,$B10000B0,$B20000B1,$B30000B2,$B40000B3,$B50000B4 Data.l $B60000B5,$B70000B6,$B80000B7,$B90000B8,$BA0000B9,$BB0000BA,$BC0000BB,$BD0000BC,$BE0000BD,$BF0000BE,$C00000BF,$C10000C0 Data.l $C20000C1,$C30000C2,$C40000C3,$C50000C4,$C60000C5,$C70000C6,$C80000C7,$C90000C8,$CA0000C9,$CB0000CA,$CC0000CB,$CD0000CC Data.l $CE0000CD,$CF0000CE,$D00000CF,$D10000D0,$D20000D1,$D30000D2,$D40000D3,$D50000D4,$D60000D5,$D70000D6,$D80000D7,$D90000D8 Data.l $DA0000D9,$DB0000DA,$DC0000DB,$DD0000DC,$DE0000DD,$DF0000DE,$E00000DF,$E10000E0,$E20000E1,$E30000E2,$E40000E3,$E50000E4 Data.l $E60000E5,$E70000E6,$E80000E7,$E90000E8,$EA0000E9,$EB0000EA,$EC0000EB,$ED0000EC,$EE0000ED,$EF0000EE,$F00000EF,$F10000F0 Data.l $F20000F1,$F30000F2,$F40000F3,$F50000F4,$F60000F5,$F70000F6,$F80000F7,$F90000F8,$FA0000F9,$FB0000FA,$FC0000FB,$FD0000FC Data.l $FE0000FD,$FF0000FE,$000000FF,$00280000,$00000000,$00000000,$00000000,$31310000,$31313131,$31313131,$31313131,$31313131 Data.l $31313131,$31313131,$31313131,$31313131,$1C173031,$31313131,$30171C31,$31313131,$17061730,$3131311C,$1707171C,$31313130 Data.l $1918171D,$1C1D1C17,$17191817,$3131311D,$18131C31,$05120518,$1C141918,$31313131,$151C3131,$18181818,$311C0B18,$31313131 Data.l $08313131,$1A1A1B0C,$3131080C,$31313131,$00313131,$160D0D0A,$31310009,$31313131,$2C1C3131,$0E0F1011,$311C290F,$31313131 Data.l $04282331,$2A262A02,$23270103,$31313131,$2B2E2425,$1F251F24,$242B2F24,$31313125,$212D2130,$31313123,$202D2223,$31313130 Data.l $231E3031,$31313131,$301E2331,$31313131,$31313131,$31313131,$31313131,$31313131,$31313131,$31313131,$31313131,$FFFF3131 Data.l $FFFF0000,$E3E30000,$C1C10000,$01C00000,$03E00000,$07F00000,$0FF80000,$0FF80000,$07F00000,$03E00000,$01C00000,$C1C10000 Data.l $E3E30000,$FFFF0000,$FFFF0000 Data.b $00,$00 enabled: Data.l $00010000,$10100001,$00000000,$05680008,$00160000,$00280000,$00100000,$00200000,$00010000,$00000008,$01400000,$00000000 Data.l $00000000,$00000000,$00000000,$ABB40000,$808A00BC,$C7D30092,$749200CB,$7492007D,$E1EA007C,$9AB800E2,$C3D5009C,$A7C200C4 Data.l $B5CB00A8,$CBDE00B6,$E7EE00CB,$639F00E7,$EAF4005D,$C1D900E9,$52AB00BE,$52AB003D,$79B3003E,$46B3006B,$B5E10028,$407800A9 Data.l $50900000,$80B00000,$A0C00040,$FFFF0070,$000000FF,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 Data.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$96960000,$97970096,$98980097,$99990098,$9A9A0099 Data.l $9B9B009A,$9C9C009B,$9D9D009C,$9E9E009D,$9F9F009E,$A0A0009F,$A1A100A0,$A2A200A1,$A3A300A2,$A4A400A3,$A5A500A4,$A6A600A5 Data.l $A7A700A6,$A8A800A7,$A9A900A8,$AAAA00A9,$ABAB00AA,$ACAC00AB,$ADAD00AC,$AEAE00AD,$AFAF00AE,$B0B000AF,$B1B100B0,$B2B200B1 Data.l $B3B300B2,$B4B400B3,$B5B500B4,$B6B600B5,$B7B700B6,$B8B800B7,$B9B900B8,$BABA00B9,$BBBB00BA,$BCBC00BB,$BDBD00BC,$BEBE00BD Data.l $BFBF00BE,$C0C000BF,$C1C100C0,$C2C200C1,$C3C300C2,$C4C400C3,$C5C500C4,$C6C600C5,$C7C700C6,$C8C800C7,$C9C900C8,$CACA00C9 Data.l $CBCB00CA,$CCCC00CB,$CDCD00CC,$CECE00CD,$CFCF00CE,$D0D000CF,$D1D100D0,$D2D200D1,$D3D300D2,$D4D400D3,$D5D500D4,$D6D600D5 Data.l $D7D700D6,$D8D800D7,$D9D900D8,$DADA00D9,$DBDB00DA,$DCDC00DB,$DDDD00DC,$DEDE00DD,$DFDF00DE,$E0E000DF,$E1E100E0,$E2E200E1 Data.l $E3E300E2,$E4E400E3,$E5E500E4,$E6E600E5,$E7E700E6,$E8E800E7,$E9E900E8,$EAEA00E9,$EBEB00EA,$ECEC00EB,$EDED00EC,$EEEE00ED Data.l $EFEF00EE,$F0F000EF,$F1F100F0,$F2F200F1,$F3F300F2,$F4F400F3,$F5F500F4,$F6F600F5,$F7F700F6,$F8F800F7,$F9F900F8,$FAFA00F9 Data.l $FBFB00FA,$FCFC00FB,$FDFD00FC,$FEFE00FD,$FFFF00FE,$54F000FF,$54F00032,$00F80032,$00000000,$00000000,$00000000,$066C0000 Data.l $006B0000,$03240000,$00000003,$00000000,$55780000,$55A00032,$55C00032,$00000032,$00000000,$00200000,$000000CC,$13A80000 Data.l $4C240003,$13840032,$4C240003,$00000032,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$4C240000 Data.l $000F0032,$000B0085,$55740088,$55740032,$00740032,$D0080000,$55100002,$0E940032,$5548002B,$00080032,$00600000,$00280000 Data.l $00230000,$A4380000,$00000002,$D0280000,$55100002,$13CC0032,$5548002B,$00480032,$001F0000,$A5380000,$00000002,$D0480000 Data.l $55100002,$57340032,$5548002B,$3A8C0032,$3A8C0032,$00100032,$042C0000,$19190000,$19191919,$19191919,$19191919,$19191919 Data.l $19191919,$19191919,$19191919,$19191919,$12121211,$16131312,$19191919,$19191919,$18180A10,$14161818,$19191916,$19191919 Data.l $07070810,$1614170B,$19191714,$19191919,$0909060C,$0E170509,$19171517,$19191919,$09090604,$020D0909,$17151719,$19191919 Data.l $12121211,$00121212,$15171919,$19191919,$09090D10,$0F060909,$19191919,$19191919,$09090D10,$0F060909,$19191919,$19191919 Data.l $0707180C,$0C080707,$19191919,$19191919,$18180D04,$030A1818,$19191919,$19191919,$01010111,$00010101,$19191919,$19191919 Data.l $19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$19191919,$FFFF1919 Data.l $FFFF0000,$3FC00000,$1FC00000,$0FC00000,$07C00000,$23C00000,$33C00000,$3FC00000,$3FC00000,$3FC00000,$3FC00000,$3FC00000 Data.l $FFFF0000,$FFFF0000,$FFFF0000 Data.b $00,$00 EndDataSection
|
Sehr hilfreich *daumen-hoch*
Vielleicht sollte man für die neuen Versionen das CreateGadgetList herausnehmen
"Wenn man keine Ahnung hat, einfach mal Fresse halten!"
Der Code geht doch gut...
Warum einfach wenns auch kompliziert geht, aber Hauptsache objektorientiert Alder!