Datatype Misalignment



  • Hallo,

    ich habe folgendes Problem:
    ich versuche folgende Nachricht zu versenden:

    mycombobox->GetParent()->PostMessage(WM_COMMAND, mycombobox->GetDlgCtrlID(),CBN_SELCHANGE);
    

    aber zur Laufzeit gibts folgende Meldung:
    "Datatype Misalignment"

    Was mache ich falsch ?

    Viele Grüsse
    lukesky22



  • luckyluke24 schrieb:

    Was mache ich falsch ?

    Kommt drauf an, was du damit erreichen willst. So ist das jedenfalls Quatsch. Schau dir in der MSDN Library nochmal an, wie die Parameter bei WM_COMMAND aussehen.



  • Ich mache bereits weiter oben in meinem Code folgendes:

    mybutton->GetParent()->PostMessage(WM_COMMAND, mybutton->GetDlgCtrlID(),BN_CLICKED);
    

    Das funktioniert einwandfrei.
    Ich möchte an die CComboBox mycombobox die Nachricht verschicken "CBN_SELCHANGE"!



  • luckyluke24 schrieb:

    Das funktioniert einwandfrei.

    Vermutlich nur, weil BN_CLICKED zufällig 0 ist.



  • Ich habe folgendes geändert:

    mycombobox->GetParent()->PostMessage(WM_COMMAND, MAKEWPARAM(mycombobox->GetDlgCtrlID(),CBN_SELCHANGE));
    

    diesmal kommt zur Laufzeit keine Fehlermeldung, aber der entsprechende Handler wird nicht aufgerufen!



  • Meine Güte. Schau doch bitte mal in die MSDN Library, statt rumzufrickeln.

    - Der LPARAM bei WM_COMMAND ist ein Handle auf das Steuerelement.
    - Der Benachrichtigungscode kommt ins High-Order Word des WPARAM.


  • Administrator

    Wie MFK sagte, lies einmal in der MSDN! Und noch als Tipp, schau genau hin und schau auch auf das High-Order und das Low-Order. Bzw. such dann vielleicht auch mal weiter nach MAKEWPARAM und MAKELPARAM.

    Grüssli



  • mycombobox->GetParent()->PostMessage(WM_COMMAND, MAKEWPARAM(mycombobox->GetDlgCtrlID(),CBN_SELCHANGE),(LPARAM)mycombobox->m_hWnd);
    

    So funktionierts! Hat doch nur das LPARAM gefehlt.
    Mich wunders nur dass es beim Button ohne das LPARAM funktioniert!

    Vielen Dank

    Gruss
    lukesky


Anmelden zum Antworten