2011/03/28
TCppWebBrowser Enter 키에 반응하기
C++ Builder 로 간단한 프로그램을 만들던 중 TCppWebBrowser 컨트롤이 Enter 키에 대한 반응이 동작을 하지 않는 경우가 많았다. 그래서 해결 책을 찾아 보았다. 이미 오래전부터 문제가 되었던 것으로 보이는데 해결책도 나와 있었다.
출처 : 볼랜드 포럼
//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);
}
}
}
}
}
출처 : 볼랜드 포럼
Labels:
C++ Builder
,
Enter
,
RAD STUDIO
,
TCppWebBrowser
,
TistoryOldPost
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment