Buttonclick abfragen!
-
Hi!
Ich hab ein Fenster erstellt mit einem Button. Ich will den BUttonclick abfragen.
Wie kann ich das machen. Hab es schon versucht mit WM_COMMAND und dann mit BN_CLICKED. Bekomm es irgednwie net hin. Da kommt immer ein Fehler, dass der Ausdruck keine Konstante ist.
Kann mir jemand ein einfaches Beispiel dafür geben???
Gruß Friggel
-
-
Wenn du es mit switch machen willst musst du über die ID gehen (siehe auch: http://www.c-plusplus.net/forum/viewtopic.php?t=54421 )
Also erst für den Button-Handle die ID ermitteln und damit dann switch aufrufen
-
Danke für dein Beispiel. Das funktioniert jetzt so.
Aber kann ich das denn nicht mit switch Abfragen???
case WM_COMMAND: { if (lParam == (LPARAM)hButton) { if (HIWORD(wParam) == BN_CLICKED) SendMessage(hWnd, WM_CLOSE, 0, 0); } return 0; }
Hier ist ja alles mit if gemacht. Wenn ich lParam mit switch Abfrage, dann geht es nicht mehr. Wieso ist das so???
Gruß Friggel
-
Wenn ich das so mache, dann geht es nicht mehr:
case WM_COMMAND: { switch(HIWORD(wParam)) { case BN_CLICKED: { switch(lParam) { case (LPARAM)hButton: MessageBox(hWnd, "Hallo", "Titel", MB_OK); break; } } } }
Gruß Friggel
-
die Fenster/Button-Handle sind nicht konstant (Voraussetzung für die case-Marken eines switch)
Deswegen kannst du das ganze nur mit einem scwitch machen, wenn du dazu anstelle der Handles die IDs der Buttons verwendest!case WM_COMMAND: { switch(HIWORD(wParam)) { case BN_CLICKED: { switch(GetDlgCtrlID((HWND)lParam)) { case ID_BUTTON1: MessageBox(hWnd, "Hallo", "Titel", MB_OK); break; } } } }
-
Achso, ich kann also mit switch nur die ID´s Abfragen. Das geht dann allerdings auch nur wenn ich beim Button erstellen in der CreateWindow ein Menü angegeben habe oder????
Wenn man das nicht macht, dann gibt es die ID doch nicht oder?? Wenn ja bitte kurzes Beispiel von CreateWindow wenns geht.
Danke schonmal im voraus.
Gruß Friggel
-
Also wenn du bei CreateWindow(Ex) für hMenu nur 0 angibst funktioniert das so nicht, da dann ja alle Buttons die ID 0 haben
-
Du meinst aber bei dem CreateWindow von dem Button oder??? Oder vom ersten Fenster??
Gruß Friggel
-
beim CreateWindow vom Button
-
genau
- also wenn du mit der ID arbeiten willst solltest du beim CreateWindow(Ex) Aufruf für jeden Button eine eindeutige ID vergeben