SendMessage WM_LBUTTONDOWN / WM_LBUTTONUP



  • Hi,

    ich möchte einem Fenster eine WM_LBUTTONDOWN Nachricht senden.
    Das komplizierte daran ist folgendes:

    Ich habe ein Browserfenster erstellt:

    CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC_SERVER, IID_IWebBrowser2, (LPVOID*) &m_pWebBrowser2); 
    	AtlAxAttachControl(m_pWebBrowser2, m_WndBrowser,(IUnknown**)&m_pContainerWindow);
    

    Da die Anwendung eine DirectX Anwendung ist lass ich das Fenster über eine selbst erstellte WM_PAINT Nachricht auf einen HDC Zeichnen.
    Das ganze klatsch ich dann auf eine Textur und zeichne es. So weit kein Problem.
    Wenn der User mit der Maus auf die Textur klickt dann bekomme ich das auch mit und weiß auch schon auf welcher stelle er geklickt hat.
    Jetzt kommt die WM_LBUTTONDOWN / WM_LBUTTONUP Nachricht ins Spiel.
    Diese schicke ich wie folgt:

    ::SendMessage(m_WndBrowser, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(iX, iY));
    ::SendMessage(m_WndBrowser, WM_LBUTTONUP, NULL, MAKELPARAM(iX, iY));
    

    Nur kommt die Nachricht (so wie es aussieht) nicht beim Fenster an - also er macht nichts.
    Das Fenster (WndBrowser) ist hidden - was ich jetzt auch schon probiert habe ist, es mit ShowWindow() anzuzeigen und danach wieder zu verstecken, klappt aber auch nicht 😞

    Hat jemand einen Tipp für mich?


  • Mod

    Man kann keine Mauskationen mit SendMessage simulieren, genauso wenig wie Tastatureingaben mit WM_KEY... Nachrichten.

    Verwende SendInput!

    Passt zum Thema:
    http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/



  • uh, das hatte ich auch mal wo gelesen, aber irgendwie verdrängt 😃

    Danke für die Info!!!


Anmelden zum Antworten