|
안녕하세요.
전에 이 글을 보았는데, 제 브라우져에서 이런 저런 상황을 만들어서 해보니, 홍지곤님 말씀처럼 프레임이 있는 페이지에서는 가끔 안되더군요..
그래서 수정할데까지 수정을 해봤지만 해결이 되는지는 잘 모르겠네요.. 어쨌든 저는 제가 알고 있는 홈페이지에서는 수정을 하였는데, 혹시 적용이 안되는 홈페이지가 있다면 알려주시면 정말 감사하겠습니다.
아래는 제 MyMessageHandler 이고요, 저 역시 FAQ 20 번을 참고로 작성을 한 것입니다.
이 문제에 대하여 뉴스그룹에 올렸는데요.. 한 분은, EmbeddedWB 컴포넌트를 쓰라고 하고, 다른 한 분은, 아래 방법으로 끝까지 된다고 말씀하시네요. ㅠ_ㅠ.. 제가 묘사력이 부족해서 일까요.. -_-a
void __fastcall TMain::MyMessageHandler(TMsg &Msg, bool &Handled)
{
if(Msg.message == WM_CLOSE) {
// 종료시 에러가 나는 부분. OLE가 먼저 해제되기 때문에, 메세지를 가로채어
// 해당 브라우저를 종료시킨다.
Task->_tiTick->Enabled = false;
dynamic_cast<TMain *>(_meSignal->Parent)->OnCloseQuery = NULL;
Application->OnMessage = NULL;
OleUninitialize();
delete dynamic_cast<TMain *>(_meSignal->Parent);
Task->ACTIVE_BROWSER_NAME = "*재처리*";
Task->ACTION_TOOL = MOVE_TOP;
Task->RefreshTaskBar();
Application->ProcessMessages();
Task->_tiTick->Enabled = true;
return;
}
Handled = IsDialogMessage(_wbBrowser->Handle, &Msg) == true;
if(!Handled || _wbBrowser->Busy) return;
if((Msg.message == WM_KEYDOWN || Msg.message == WM_KEYUP) &&
(Msg.wParam == VK_RETURN || Msg.wParam == VK_TAB || Msg.wParam == VK_EXECUTE ||
Msg.wParam == VK_DELETE || Msg.wParam == 67 || Msg.wParam == 86)) {
if(FOleInPlaceActiveObject != NULL) {
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
} else {
IDispatch *Dispatch = _wbBrowser->Application;
if(Dispatch != NULL) {
IOleInPlaceActiveObject *iOIPAO;
Dispatch->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&iOIPAO);
if(iOIPAO != NULL) {
FOleInPlaceActiveObject = iOIPAO;
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
}
}
}
}
홍지곤 님이 쓰신 글 :
: 안녕하세요! Magic.홍지곤 입니다.
:
: FAQ20번에 있는 내용을 그대로 코딩하여 테스트
:
: 했는데요, 엔터키가 먹는 html파일이 있는 것도
:
: 있고 html파일에서 엔터키가 먹지 않는 것도 있어요..
:
: 그리고 복사도 되는 곳이 있고 안되는 곳이 있는데요...
:
: 왜 그런가요?
:
: 참고로 한쪽 html에서는 그냥 입력하는 것만 입고,
:
: 다른 html에서는 입력하는것에 IFRAME도 같이 있습니다.
:
: 그럼...방법 알고 계신분 알려주세요~~
:
: 감사합니다..즐프하세요!~
|