|
Form 의 KeyPreview 를 true 로 두고
Form 의 OnKeyDown 에서
if((Key == 'n' || Key == 'N') && Shift.Contains(ssCtrl))
{
... <- 이 부분에 내용 추가
}
여기서..내용추가부분에 들어갈 만한 것을 3가지 있습니다.
첫 번째 방법은 컨트롤의 Navigate 메써드의 Flags 파라미터를 이용하는 것입니다.
TVariant opt = 1; // 1 -> navOpenInNewWindow 입니다
CppWebBrowser1->Navigate(CppWebBrowser1->LocationURL, &opt);
두 번째 방법은 현재 사용중인 창을 그대로 다시 띄우는 것입니다.
TForm1* tmpform = new TForm1(this);
tmpform->Show();
tmpform->Update();
tmpform->CppWebBrowser1->Navigate(this->CppWebBrowser1->LocationURL);
세 번째 방법은 직접 Ctrl + N 메시지를 보내주는 것입니다.
이 방법은 SendMessage와는 다르게 키보드가 눌려졌을 때와 완전히 동일한 상황을 만듭니다.
이것은 keybd_event의 두 번째 파라미터가 바로 키보드의 scancode 이기 때문입니다.
CppWebBrowser1->SetFocus();
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
keybd_event(VK_CONTROL, 29, 0, 0); // ctrl 누름
keybd_event('N', 49, 0, 0); // N 누름, 소문자는 안됩니다.
keybd_event('N', 49, KEYEVENTF_KEYUP, 0); // N 놓음
keybd_event(VK_CONTROL, 29, KEYEVENTF_KEYUP, 0); // ctrl 놓음
참고로 키보드의 스캔코드를 알아내는 방법입니다.
UINT scancode = MapVirtualKey('N', 0);
|