Butten Klick-Event obwohl nicht geklickt wurde
-
Ich programmiere mit Microsoft Visual C++ 6.0
Ich habe eine einfache Anwendung erstellt, mithilfe des Resourceneditors – mir ist jedoch aufgefallen das die Buttons auf meiner Resource manchmal Klick-Events melden, wenn gar keine stattgefunden haben:Hier der Programmcode:
#include <windows.h> #include <commctrl.h> #include "resource.h" BOOL CALLBACK AudioPlayer(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: EndDialog(hwndDlg, 0); break; case WM_INITDIALOG: break; default: break; } switch(LOWORD(wParam)) { case BUTTON_PLAY1: MessageBox(NULL, "Play1", "", MB_OK); break; case BUTTON_STOP1: MessageBox(NULL, "Stop1", "", MB_OK); break; case BUTTON_PAUSE1: break; case BUTTON_PLAY2: break; case BUTTON_STOP2: break; case BUTTON_PAUSE2: break; case BUTTON_OEFFNEN1: break; case BUTTON_OEFFNEN2: break; default: break; } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // Initialisere Common Controls DLL InitCommonControls(); // Dialog oeffnen DialogBox(hInstance, MAKEINTRESOURCE(DIALOG_SCAW_PLAYER), NULL, AudioPlayer); // Kein Fehler aufgetreten return 0; }Hier mein Dialog:
[url]
http://people.freenet.de/vertexwahn/dialog.JPG
[/url]Schon beim Start des Programmes kommt eine MessageBox die angibt, dass BUTTON_STOP1 geklickt wurde
Was mache ich falsch?
-
Hallo,
du machst es dir ein wenig zu einfach, so kann man Ereignisse nicht abfragen, schließlich gibt es auch noch andere Nachrichten, deren LOWORD(wParam)) mit der ID BUTTON_STOP1 übereinstimmt. Richtig ist: du mußt WM_COMMAND abfangen (siehe MSDN), und dann bekommt du in HIWORD(wParam) die Nachricht BN_CLICKED geliefert, und weißt erst jetzt, daß wirklich ein Button geklickt wurde (welcher das ist, steht dann wiederum in LOWORD(wParam) (ID) bzw. in lparam, wenn das Handle interessant ist.
MfG