Buttons zur Laufzeit erstellen lassen
-
Hallo Zusammen,
ist es möglich Buttons erst zur Laufzeit dynamisch erstellen zu lassen? Also in etwa so:WND *Buttondyn = new HWND[100]; // Speicher reservieren. Max. 100 int zaehler; int WINAPI WinMain (.....) { zaehler = 0; ... if(Irgendetwas > zaehler) { // Button erstellen Buttondyn[zaehler] = CreateWindow("button", "BlahBlah".... zaehler++; } ... } Callback(...) { ... switch case Buttondyn[zaehler] machwas; break; ... }Das Erstellen der Buttons zur Laufzeit würde schon gehen aber wie mach ich das dann mit der Case-Anweisung bei mehreren Buttons? Über welchen Namen spreche ich dann den einzelnen Button an schliesslich soll dann ja auch noch was passieren wenn man auf den Button klickt!
Danke im Voraus, liebe Grüsse rommi
-
Keine case Anweisung.
default clause erzeugen und dort eine Schleife über Deinen Array mit if...
-
Herr Petzhold hat das in seinem Buch zur Win32-API schon Ende der 90er ausführlich erklärt.
(siehe Kapitel9 - Beispiel btnlook.c)Der Trick war das er den HMENU Parameter von CreateWindow() fortlaufend durchnummeriert.
hWndButton[i] = CreateWindow( TEXT("button"), .... , hWnd, (HMENU)i, ((LPCREATESTRUCT)->lParam)->hInstance, NULL);Die Buttons werden unter
case WM_CREATE:in einer for() Schleife mit CreateWindow() erzeugt, die handles in einem Array
gesammelt.das Drücken erzeugt dann eine Meldung
case WM_COMMAND:Welches Fenster gemeint ist steht in wParam und lParam
LOWORD(wParam) // Fenster-ID HIWORD(wParam) // Aktionscode lParam // FensterhandleDen default Zweig braucht man dann nicht

-
Hallo Martin,
danke für die schnelle Antwort! Das mit default ist klar aber was meinst du mit "dort eine Schleife über Deinen Array mit if... "? Wie soll ich das mit der Schleife mache sodass ich dann in der Schleife abfragen kann welcher Button akutell gedrückt wurde. Woher krieg ich denn den Wert welcher Button gedrückt wurde sodass ich das dann in der Schleife verarbeiten kann oder steh ich jetzt irgenwie auf der Leitung?Gruss, rommi
-
Was wo steht hatte ich doch alles sehr genau beschieben, oder ?
-
Sorry merano,
die Beiträge haben sich überschnitten!! Vielen Dank!liebe grüsse, rommi