C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[51180] Re:[질문]window hotkey 막을수 있나요?
시녕tm [palindrome] 1232 읽음    2007-11-08 20:51
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를 처리하기 바로 직전에 한번 호출해줍니다.

실제로 사용자가 죄종단 바로 앞에서 조작을 할 수 있게끔 문을 열어준것이지요...

여기서 님께서 원하는 값으로 넣으면 아마 그대로 동작될것같군요...

안해봐서 모르겠지만.. ㅈㅅ 퇴근해야해서리...

성공하시길~

+ -

관련 글 리스트
51179 [질문]window hotkey 막을수 있나요? unitas 1163 2007/11/08
51182     Re:[감사] 두분 모두 감사합니다. - 2가지 너무 잘 되네요. unitas 1097 2007/11/09
51181     Re:[질문]window hotkey 막을수 있나요? 장성호 1401 2007/11/08
51180     Re:[질문]window hotkey 막을수 있나요? 시녕tm 1232 2007/11/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.