|
void __fastcall TForm1::MyMessageHandler(TMsg &Msg, bool &Handled)
{
if ((Msg.message==WM_KEYDOWN || Msg.message==WM_KEYUP) && (Msg.wParam == VK_BACK || Msg.wParam == VK_TAB)) return;
Handled = IsDialogMessage(CppWebBrowser1->Handle, &Msg);
if (!Handled || CppWebBrowser1->Busy) return;
if ((Msg.message==WM_KEYDOWN || Msg.message==WM_KEYUP) &&
(Msg.wParam==VK_RETURN || Msg.wParam==VK_F5 || Msg.wParam == VK_DELETE || Msg.wParam == VK_CONTROL ||
Msg.wParam == Byte('X') || Msg.wParam == Byte('C') || Msg.wParam == Byte('V') || Msg.wParam == Byte('N') || Msg.wParam == Byte('A')
|| Msg.wParam == Byte('S') || Msg.wParam == Byte('F') || Msg.wParam == Byte('R') || Msg.wParam == Byte('P'))){
if (FOleInPlaceActiveObject) FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
else{
IDispatch *Dispatch = CppWebBrowser1->Application;
if(Dispatch){
IOleInPlaceActiveObject *iOIPAO;
Dispatch->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&iOIPAO);
if(iOIPAO){
FOleInPlaceActiveObject = iOIPAO;
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
}
}
}
}
위와 같이 해서 엔터키/탭키 작동하게 해놨는데요..
문제가 있네요 현제 저 위의 소스는 TAB키는 입력받을때 아무런 처리 없이 리턴하게 해서 그렇저럭 돌아가게 되어있습니다.
만약에 탭키를 아래 부분에 넣어서 처리를 하게 하면 다른곳에선 텝키가 정상작동하나 네이버 로그인에서 두번 적용되네요..
그리고.. 엔터키의 경우는 되는곳이 있는가 하면 안되는 곳이 있네요.. 그 상태에서 엔터키 입력이 들어왔을때 그냥 리턴하게 코딩 하면 그 반대가 되버립니다. 되던곳에선 안되고 안되던 곳에서 잘 됩니다. 엔터키를 아예 빼면 당연히 아예 안되고요..
골고로 키적용이 되게 하는 방법 없을까요?
|