Gadgetnummer

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Gadgetnummer

Beitrag von Josh »

hallo,

bis jetzt habe ich ja gedacht, dass die gadgetnummer nur von der pb-verwaltung stammt und nichts mit windows zu tun hat. ich hab mir aber jetzt mal die struktur

Structure DRAWITEMSTRUCT
CtlType.l
CtlID.l
itemID.l
itemAction.l
itemState.l
hwndItem.i
hDC.i
rcItem.RECT
itemData.i
EndStructure

angesehn und bin drauf gekommen, dass in der CtlId die gadgetnummer steht. kann man sich drauf verlassen, oder soll man doch lieber auf das windowshandle zurückgreifen?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Gadgetnummer

Beitrag von Kaeru Gaman »

... wenn die Gadget-Nummer gefragt wird, benutz die, wenn etwas das Windows-Handle verlangt, benutz das.

wenn ich mich nicht täusche ist hWnd = GadgetID( Gadgetnummer ).
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Gadgetnummer

Beitrag von ts-soft »

Unter Windows steht die PB-ID in den Properties unter dem String: "PB_ID"

Code: Alles auswählen

#gadget = 20
Define gadget.i

OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "bla", #PB_Window_SystemMenu)

ButtonGadget(#gadget, 10, 10, 80, 30, "#gadget")
gadget = ButtonGadget(#PB_Any, 10, 60, 80, 30, "gadget")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #gadget
          Debug GetProp_(GadgetID(#gadget), "PB_ID")
        Case gadget
          Debug GetProp_(GadgetID(gadget), "PB_ID")
      EndSelect
  EndSelect
ForEver
Code macht zwar keinen Sinn, sollte aber das GetProp_() verdeutlichen.

Gruß
Thomas
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Gadgetnummer

Beitrag von Josh »

ey danke euch. hab zwar schon öfter auf meinen spy++ geschaut, aber dass der die gadgetnummer auch anzeigtn, ist mir noch nie aufgefallen

Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Gadgetnummer

Beitrag von ts-soft »

Wenn Du das händle (hWnd) hast, würde ich mich lieber auf GetProp_(hWnd, "PB_ID") verlassen,
als auf die ControlID. Ob die immer mit der PB-ID übereinstimmt?

Gruß
Thomas
Benutzeravatar
gnozal
Beiträge: 219
Registriert: 04.12.2004 13:01
Wohnort: Frankreich (67)
Kontaktdaten:

Re: Gadgetnummer

Beitrag von gnozal »

Another possibility is GetDlgCtrlID_(), which also works with older PB versions.

Code: Alles auswählen

#gadget = 20
Define gadget.i

OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "bla", #PB_Window_SystemMenu)

ButtonGadget(#gadget, 10, 10, 80, 30, "#gadget")
gadget = ButtonGadget(#PB_Any, 10, 60, 80, 30, "gadget")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #gadget
          Debug GetDlgCtrlID_(GadgetID(#gadget))
        Case gadget
          Debug GetDlgCtrlID_(GadgetID(gadget))
      EndSelect
  EndSelect
ForEver
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Gadgetnummer

Beitrag von Frabbing »

Beide Methode scheinen nicht zu funktionieren. Zumindest nicht mit später durch GetParent() und GetWindow() ermittelte Gadget-IDs.
Gruß, Frank
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Gadgetnummer

Beitrag von ts-soft »

Frabbing hat geschrieben:Beide Methode scheinen nicht zu funktionieren. Zumindest nicht mit später durch GetParent() und GetWindow() ermittelte Gadget-IDs.
Code? Damit ich die Aussage überprüfen kann und auch verstehe!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Gadgetnummer

Beitrag von RSBasic »

@Frabbing
Sicher, dass es die richtige Handle-Nummer ist?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Gadgetnummer

Beitrag von ts-soft »

RSBasic hat geschrieben:@Frabbing
Sicher, dass es die richtige Handle-Nummer ist?
Kann ja nicht, die Property wird sich doch niemals durch irgendeine Verschachtelung ändern :wink:
Deshalb ja auch meine Nachfrage.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten