ON_COMMAND filtern



  • Hallo,
    kann mir jemand beim Filtern der ON_COMMAND helfen (Code wäre schön).
    Und zwar soll die Nachricht BN_CLICKED gefiltert werden und die Kennung des Conrols welches die Nachricht gesendet hat.
    Steht glaube ich im wParam. Aber in der MSDN ist von low-order und high-order die Rede, was ist das? 😕
    Danke,
    Turbobrain 😃



  • Hallo turbobrain,

    haste denn meinen Beitrag http://www.c-plusplus.net/forum/viewtopic.php?t=52179 nicht gelesen? 😞

    Also der wParam ist zwar vom Typ WPARAM, aber eigentlich auch nur ein DWORD (double word), also eine 4Byte Zahl. Ein WORD hat nur 2 Bytes. Ein low-order word 'xlow' eines DWORD 'x' sind nun die 2 Bytes mit den nidrigsten 2er Potenzen im Koeffizienten als WORD gelesen. Beim hi-order word 'xhi' sind das gerade die 2 Bytes mit den höchsten 2er Potenzen im Koeffizienten.

    Also wenn x = 256^3*a + 256^2*b + 256^1*c + d. Dann ist xlow = 256^1*c + d und xhi = 256^1*a + b;

    Gruss mathi



  • Tag Mathi,
    Natürlich habe ich ihn gelesen und dank dir habe ich von dieser Möglichkeit erfahren. Doch wie muss denn der Code in der If-Abfrage aussehen ?
    Sag es mir bitte. 😃



  • Hallo,

    ich hätte mir das in etwa so gedacht:

    WORD buttonID = LOWORD(wParam);
    WORD msg      = HIWORD(wParam);
    if (msg == BN_CLICKED)
    {
    	switch(buttonID)
    	{
    		case IDC_BUTTON1 : TRACE("-->Funktionen für Button 1\n"); break;
    		case IDC_BUTTON2 : TRACE("-->Funktionen für Button 2\n"); break;
    		// ...
    	    default : TRACE("-->Funktionen für alle anderen Button\n");
    	}
    }
    

    Gruss mathi



  • Danke,
    ich werde es ausprobieren!!
    Turbobrain 😃


Anmelden zum Antworten