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


Anmelden zum Antworten