Meine PreTranslateMessage-Funktion reagiert nicht auf CStatic-Objekt



  • Ich erstelle ein CStatic-Objekt inmitten meines Dialogs. Jetzt soll beim Drüberfahren mit dem Mauszeiger
    eine MessageBox aufgerufen werden. Allerdings funktioniert meine Abfrage in der PreTranslateFunktion nicht, wenn ich die m_hWnds vergleiche:

    CStatic static; //das objekt, es ist global vorhanen
    static.Create(0,WS_VISIBLE|WS_CHILD|SS_BITMAP,rect,this);
    

    Die Funktion:

    BOOL CLeDlg::PreTranslateMessage(MSG* pMsg)
    {
    
        if ((pMsg->hwnd == static.m_hWnd)&&(pMsg->message == WM_MOUSEMOVE))//bewirkt nichts
        {
           MessageBox("dd,"dd");
        } 
        return CDialog::PreTranslateMessage(pMsg);
    }
    

    Ich denke, dass pMsg->hwnd immer das m_hWnd von meinem Dialog ist... aber warum? Wie krieg ich es hin, dass pMsg->hwnd das hwnd vom CStatic-Objekt ist?



  • Weil das Static-Element standardmässig transparent ist. (antwortet auf WM_NCHITTEST mit HTTRANSPARENT). Setz mal noch SS_NOTIFY.



  • Danke! Funktioniert super!


Anmelden zum Antworten