|
1.동작은?
보통 그런경우 Handled=true; 로 해서 처리합니다.
Handled 값이 처리전이라서 false인데 , 이 값을 true로 해주면 처리한것 처럼 됩니다.
문론 밑에 답변처럼 message 나 Param값을 바꿔도 가능합니다.
2. Ctrl+F4 가 되려면?
님에 코드는 그냥 F4나 F6도 Handled=true로 코드를 넣으면 막히게 되네요
Ctrl+F4 또는 Ctrl+F6의 경우에만 막으려면 현재 Ctrl 키가 눌려있는지 확인을 해 봐야겠죠?
if(Msg.message == WM_KEYDOWN)
{
if(GetAsyncKeyState(VK_CONTROL)&&( (Msg.wParam == VK_F4) || (Msg.wParam == VK_F6)) )
{
Handled=true;
return;
}
}
그럼..
unitas 님이 쓰신 글 :
: 프로그램을 MDI로 구성했습니다.
: 프로그램 구동후 Ctrl-F4, 혹은 Ctrl-F6을 클릭하면 Child Form 이 한번에 다 보이게 됩니다.
: [Child Form은 실제로 1개만 보여야 합니다.]
: 계속 Ctrl-F4를 클릭하면 Child Form이 하나씩 없어집니다.
:
: window hotkey를 검색해보니 Ctrl-F4 는
: "동시에 여러 문서를 열 수 있는 프로그램에서 사용 중인 문서를 닫습니다." 라고 되어 있네요.
:
: 어떤분이 올려놓은 소스를 조금 바꿔서 아래처럼 했습니다.
: ShowMessage("in"); 를 넣으면 메세지 뜨고 정상으로 됩니다.
: 막으면 위에 문제가 나타나구요. (메세지 같은거 보이면 안되거든요.)
:
: 강제로 Window hotkey를 막을수 있는 방법이 있나요?
:
: void __fastcall TfrmMain::AppMessage(tagMSG &Msg, bool &Handled)
: {
: CtrlFlag = false;
:
: if(Msg.message == WM_KEYDOWN)
: {
: if( (Msg.wParam == VK_F4) || (Msg.wParam == VK_F6) )
: {
: // ShowMessage("in");
: return;
: }
: }
: }
: //---------------------------------------------------------------------------
:
: CreateForm에 아래 1줄 입력
: Application->OnMessage = AppMessage;
:
: header file에 아래 입력
: bool CtrlFlag;
: void __fastcall AppMessage(tagMSG &Msg, bool &Handled);
|