#PB_any mit WinApi

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

#PB_any mit WinApi

Beitrag von Konne »

Hallo wie kann ich eine ID für CreateWindowEx ermitteln die noch nicht existiert?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Gibt kein 'PB_Any' fuer die WinApi.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

CreateWindowEx gibt die dir doch ein handle zurück. Und das ist deine
einmalige ID.
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

Beitrag von ts-soft »

Simples Beispiel:

Code: Alles auswählen

; HWND CreateWindowEx(          DWORD dwExStyle,
;     LPCTSTR lpClassName,
;     LPCTSTR lpWindowName,
;     DWORD dwStyle,
;     int x,
;     int y,
;     int nWidth,
;     int nHeight,
;     HWND hWndParent,
;     HMENU hMenu,
;     HINSTANCE hInstance,
;     LPVOID lpParam
; );
Global Button1.l, hWndParent.l, hInstance.l

Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  
  Select Message
    Case #WM_COMMAND
      Select lParam
        Case Button1
          Debug "Button1"
      EndSelect
  EndSelect
  
  ProcedureReturn Result
EndProcedure

If OpenWindow(0, #PB_Ignore, 0, 150, 50, "TestFenster")
  

  hWndParent = WindowID(0) ; Parent ist das Hauptfenster
  hInstance = GetModuleHandle_(0)
  
  Button1 = CreateWindowEx_(#Null, "Button", "Drück mich", #WS_CHILD | #WS_VISIBLE, 35, 10, 80, 25, hWndParent, 0, hInstance, #Null)
  
  SetWindowCallback(@MyWindowCallback(), 0)
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
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
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Mit ID meine ich:
HMENU hMenu,
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

Beitrag von ts-soft »

Konne hat geschrieben:Mit ID meine ich:
HMENU hMenu,
hMenu ist normallerweise #NULL
Ansonsten wird es nur für Dialogfenster gebraucht, PB erstellt aber nur
Windows, keine Dialogfenster. Diese ID bekommste mit GetDlgCtrlID_ vom
übergeordneten Control, wovon Deins Parent sein soll. Für mich höchst
unwahrscheinlich das sowas für PB gebraucht wird
:wink:
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