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

Code: Alles auswählen

BringWindowToTop_(hWnd)
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

Code: Alles auswählen

hwnd.l = OpenWindow(#PB_Any, ....)
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. :lol:

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 :wink:
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. :D

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()
:wink:

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()
:wink:
Mach Dir darüber erstmal keine Gedanken, das brauchst Du
garnicht.

Verfasst: 15.10.2005 14:14
von AND51
Das war absolut korrekt.
Danke!!!