CppWebbrowser - Enter-Taste funktioniert nicht
-
Probierts aus, man kann Enter nicht benutzen, und das liegt nicht an mir.
So ists kaum möglich damit etwas zu schreiben etc., wie aktiviert man sie[ Dieser Beitrag wurde am 31.12.2002 um 02:49 Uhr von Jansen editiert. ]
-
Du musst dafür einen eigenen Messagehandler erstellen:
// in .h, unter private: void __fastcall ReturnMsgHandler(tagMSG &Msg, bool &Handled); IOleInPlaceActiveObject *OleInPlaceActiveObject; // in .cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Application->OnMessage = ReturnMsgHandler; } //--------------------------------------------------------------------------- void __fastcall TForm1::ReturnMsgHandler(tagMSG &Msg, bool &Handled) { if (CppWebBrowser1 && (!CppWebBrowser1->Busy) && (Msg.message == WM_KEYDOWN || Msg.message == WM_KEYUP) && (Msg.wParam == VK_RETURN || Msg.wParam == VK_EXECUTE)) { Handled = IsDialogMessage(CppWebBrowser1->Handle, &Msg); if (Handled) { if (!OleInPlaceActiveObject) { CppWebBrowser1->Application->QueryInterface( IID_IOleInPlaceActiveObject, (void **)&OleInPlaceActiveObject); } if (OleInPlaceActiveObject) OleInPlaceActiveObject->TranslateAccelerator(&Msg); } } else Handled = false; } //---------------------------------------------------------------------------
Bei Verwendung mehrerer CppWebBrowser-Instanzen muss nach dem Ausführen von TranslateAccelerator das OleInPlaceActiveObject wieder auf NULL gesetzt werden, damit es beim nächsten Aufruf für die gewünschte CPPWB-Instanz neu erzeugt wird. Ansonsten würde QueryInterface nachfolgend immer übersprungen werden und OleInPlaceActiveObject ständig auf dieselbe (erste) CPPWB-Instanz zeigen.