|
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);
Msg.wParam = 0 이런식으로 값을 클리어해주면 될것 같군요.
Msg 인자를 받아오는 것인 참조형식입니다. 즉 여기서 값을 조절하면 실제 Msg 값 자체가변한다는 것이죠.
아마도 OnMessage 라는 가상함수를 실지로 Msg를 처리하기 바로 직전에 한번 호출해줍니다.
실제로 사용자가 죄종단 바로 앞에서 조작을 할 수 있게끔 문을 열어준것이지요...
여기서 님께서 원하는 값으로 넣으면 아마 그대로 동작될것같군요...
안해봐서 모르겠지만.. ㅈㅅ 퇴근해야해서리...
성공하시길~
|