| |
|
|
Jörg Sellmeyer | Wenn ich eine Klasse habe und mit New ein neues Objekt erstellt habe: Ist es möglich das Objekt zu zerstören und den gleichen Bezeichner wieder mit New(...) zu verwenden?
Wenn ich z. B. mit TB# = New(RGHToolbar,%hwnd,hToolbarBmp&,0,tbHight%,ID%,0) eine Toolbar erstelle. und die mit DestroyWindow(TB#.GetHandle()) abschieße, gibts nach neuem: TB# = New(RGHToolbar,%hwnd,hToolbarBmp&,0,tbHight%,ID%,0) eine Fehlermeldung. DeleteObjekt TB# oder Clear TB# bringen auch nichts, b. z. w. Fehlermeldung. KompilierenMarkierenSeparierenDeclare appexit%,TB#
$H WINDOWS.PH
$H commctrl.ph
$I RGHTOOLBAR.INC
Def GetSysColor(1) !USER32,GetSysColor
Def TBClicked(1) Abs(%menuitem) = &(1)
UserMessages 16
Proc MyToolBar
TB# = New(RGHToolbar,%HWnd,0,2,0,2000,0)
TB#.AddButton(0,2000,Button 1)
TB#.Separator()
TB#.AddButton(10,2001,Button 2)
TB#.AddButton(10,2002,Button 3)
TB#.Separator()
TB#.AddButton(3,2003,Button 4)
TB#.AddButton(4,2004,Button 5)
TB#.CheckButton(2004,1)
TB#.HideButton(2004)
TB#.Separator()
TB#.AddButton(3,2005,Ende)
EndProc
WindowTitle Test
WindowStyle $023A
SetTrueColor 1
Window 100,100-270,64
Cls GetSysColor(15)
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
MyToolBar
WhileNot appexit%
WaitInput
Case Or(%umessage = 16,appexit% > 0):Break
If TBClicked(2005)
appexit% = 1
ElseIf TBClicked(2000)
DestroyWindow( TB#.GetHandle())
DeleteObject TB#bewirkt nichts
Clear TB#Fehlermeldung
MyToolBarFehlermeldung
ElseIf TBClicked(2001)
WindowTitle Button 2 gedrückt
ElseIf TBClicked(2002)
WindowTitle Button 3 gedrückt
ElseIf TBClicked(2003)
Engage% = 1
TB#.HideButton(2003)
TB#.ShowButton(2004)
ElseIf TBClicked(2004)
Engage% = 0
TB#.HideButton(2004)
TB#.ShowButton(2003)
EndIf
Wend
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.08.2006 ▲ |
|
|
|
|
RGH | Hallo Jörg, ein Objekt wird ebenso wie ein Bereich mit Dispose freigegeben. Also einfach Dispose TB# hinter DestroyWindow(TB#.GetHandle()) einfügen und es klappt!
Die Funktion NEW macht zunächst dasselbe wie DIM, und ruft anschließend den Konstruktor auf. Deshalb sollten auch alle mit NEW erzeugten Objekte nach Gebrauch mit DISPOSE freigegeben werden.
Gruß Roland (mitten in den Urlaubsvorbereitungen) |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.08.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | manchmal hab ich echt ein Brett vorm Kopf! Danke Roland. Viel Spaß im Urlaub! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.08.2006 ▲ |
|
|
|