Seite 1 von 2
Handles herausfinden / ermitteln
Verfasst: 14.10.2005 23:04
von AND51
Hallo!
ich habe schon oft Code gesehen, wo man ein Handle einsetzen muss, zum Beispiel
Meine Frage: Wie kriege ich hier "hWnd" hraus? Ich weiß nr, dass es das gesuchte Handle (hier von einem Fenster) ist.
Kriege ich das Handle vielleicht so raus:
Code: Alles auswählen
handle = OpenWindow(0, 0, 0, 100, 100, #PB_Window_ScreenCentered, "Titel")
oder ist das Handle hier die ID des Fensters, also 0 ?
Ich weiß, dass es mit WinAPI zu tun hat, aber ich habe trotzdem das Problem.
Danke für eure Antworten, AND51
Verfasst: 14.10.2005 23:09
von nco2k
BringWindowToTop_(WindowID(0))
oder sofern du #PB_Any verwendest:
Code: Alles auswählen
WinID.l = OpenWindow(#PB_Any, 0, 0, 100, 100, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered, "")
If WinID
ShowWindow_(WindowID(WinID), #SW_MAXIMIZE)
Repeat
WinEvent.l = WaitWindowEvent()
Until WinEvent = #PB_Event_CloseWindow
EndIf
End
// EDIT:
ich hab das beispiel nun verständlichkeitshalber geändert.
c ya,
nco2k
Verfasst: 14.10.2005 23:26
von HeX0R
Also #PB_Any hätt ich nun nicht ins Spiel gebracht, aber um die Verwirrung zu perfektionieren hast du auch noch
geschrieben, was zum Verständnis nicht wirklich beiträgt.
Schliesslich kommt da kein Handle (hwnd) raus sondern eine ID.
Also wäre ein Variablenname a la WinID.l angebrachter gewesen.
Dein Beispiel da oben ist übrigens auch brauchbar AND51.
Wenn du KEIN #PB_Any benutzt, bekommst du das Handle zurück.
Sodele, nun dürftest du WIRKLICH verwirrt sein

Verfasst: 14.10.2005 23:43
von nco2k
@HeX0R
hast natürlich recht, ist halt die krankheit, die man sich mit pb aneignen kann.
einige user würden es halt lieber sehen wenn OpenWindow() ein handle bei #PB_Any zurückgeben würde. aber naja, zum ziel kommt man trotzdem immer... irgendwie.
c ya,
nco2k
Verfasst: 15.10.2005 03:12
von edel
so duerfte es auch gehen
WinID.long = OpenWindow(#pb_any...
ShowWindow_(WinID\l,...
hidewindow(WinID,1)
Verfasst: 15.10.2005 13:41
von AND51
Sodele, nun dürftest du WIRKLICH verwirrt sein
Ja, das war ich...
Aber ich glaube, es jetzt verstanden zu haben:
Code: Alles auswählen
a = OpenWindow(0, ...andere parameter...)
; a ist das handle, da kein #PB_any verwendet, 0 ist weiterhin die ID des Fensters
; ======= neues Beispiel =============
a=OpenWindow(#PB_Any, ...andere parameter...)
b=WindowID(a)
; a ist nicht das Handle, da #PB_Any verwendet
; b ist das Handle
Daraus resultiert eine Frage: Im 2. Beispiel ist
WindowID(a) das Handle. Und was ist
a? Ich habe ja
#PB_Any verwendet, ist im 2. Beispiel also
a die ID des Fensters?
Verfasst: 15.10.2005 13:52
von edel
Wenn du kein #pb_any nutzt werden die Fenster Daten in ein Array (siehe unten) gelegt. Die ID ist der Offset des Arrays .
Mit #PB_Any bekommst du eine Adresse auf einen Speicherbereich zurueck.
der so aussieht .
Code: Alles auswählen
Structure PB_WindowStructure
Window.l
NbAccelerators.l
*Accelerators.ACCEL[]
AcceleratorTable.l
EndStructure
Ich hoffe das stimmt so.

Verfasst: 15.10.2005 13:58
von AND51
Offset?
Adresse?
Speicherbereich?
Hilfe! SO weit bin ich noch nicht... ich danke dir aber trotzdem sehr für deinen Beitrag!
Mir würde es schon reichen, wenn jemand sagen kann, ob ich in meinem vorigen Beitrag recht habe, also ob ich das verstanden habe.
oder wenn einer folgenden befehl ausführt:
Code: Alles auswählen
übersetze_hallodri's_beitrag_in_anfängerfreundliche_sprache()

Verfasst: 15.10.2005 14:08
von Danilo
AND51 hat geschrieben:Mir würde es schon reichen, wenn jemand sagen kann, ob ich in meinem vorigen Beitrag recht habe, also ob ich das verstanden habe.
Das war absolut korrekt.
AND51 hat geschrieben:oder wenn einer folgenden befehl ausführt:
Code: Alles auswählen
übersetze_hallodri's_beitrag_in_anfängerfreundliche_sprache()

Mach Dir darüber erstmal keine Gedanken, das brauchst Du
garnicht.
Verfasst: 15.10.2005 14:14
von AND51
Das war absolut korrekt.
Danke!!!