//Header
IOleInPlaceActiveObject *FOleInPlaceActiveObject;
void __fastcall MyMessageHandler(TMsg &Msg, bool &Handled);
//Source
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
OleInitialize(NULL);
Application->OnMessage = MyMessageHandler;
}
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
OleUninitialize();
}
void __fastcall TfrmMain::MyMessageHandler(TMsg &Msg, bool &Handled)
{
Handled = IsDialogMessage(WebBrowser->Handle, &Msg) == true;
if(!Handled || WebBrowser->Busy)
{
return;
}
if ( (Msg.message==WM_KEYDOWN || Msg.message==WM_KEYUP) &&
(Msg.wParam==VK_RETURN || Msg.wParam==VK_TAB) )
{
if(FOleInPlaceActiveObject != NULL)
{
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
else
{
IDispatch *Dispatch = WebBrowser->Application;
if(Dispatch != NULL)
{
IOleInPlaceActiveObject *iOIPAO;
Dispatch->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&iOIPAO);
if( iOIPAO != NULL )
{
FOleInPlaceActiveObject = iOIPAO;
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
}
}
}
}
출처 : 볼랜드 포럼
No comments :
Post a Comment