|
최성규 님이 쓰신 글 :
: WM_NCLBUTTONDOWN에 대한 handler를 정의하면,
: -> Titlebar에 있는 system menu, caption부, min/max buttons, close button,
: form resize area에 대한 mouse down(not click)을 감지한다.
: 정확하게 얘기하면 window의 nonclient 부분에서의 mouse down을 감지한다.
:
: 단, Handler에서 원래 처리해 주어야 할 부분을 call해야 menu나 button이
: 작동한다. 그냥 사용자 코드만 넣어 두면, system munu도 나오지 않고,
: min/max도 되지 않고, move도 되지 않고, close도 되지 않는다.
:
: TForm1 ...
: ...
: ...
: int __fastcall HandlerWM_NCLBUTTONDOWN(TMessage &Msg);
: BEGIN_MESSAGE_MAP
: MESSAGE_HANDLER(WM_NCLBUTTONDOWN, TMessage, HandlerWM_NCLBUTTONDOWN)
: END_MESSAGE_MAP(TForm)
: end;
:
: int __fastcall TForm1::HandlerWM_NCLBUTTONDOWN(TMessage &Msg)
: {
: if(Msg.WParam == HTCAPTION)
: // ...어쩌고, 저쩌고
:
: // How can I with "inherited"???
: return 0;
: }
:
: 질문은 이겁니다. 위와 같이 해 두면, 마우스 버튼 다운의 원래 목적이
: 막혀 버립니다. 예를 들면 title bar의 minimize button이 작동하지 않고
: system menu도 뜨지 않는다는 말입니다.
: 이 handler 내에서 무엇을 어떻게 해 주어야, 원래 시스템에 정의된 기능이
: 실행이 될까요?
: 델파이의 inherited 뭐 그런 것이 빌더에서 어떻게 대응되는 것입니까?
: 빌더에서
: this->Inherited();
: 라고 해 봤는데(후후~~) 택도 없네요.
:
: 최성규
:
안녕하십니까?
한꼬맹이 입니다.
메세지 맵에서 델파이의 inherited; 와 같이 적용시키려면
Dispatch(&Msg);
이거 한줄만 추가 시키면 됩니다...
그럼 참고하시길....
|