|
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();
라고 해 봤는데(후후~~) 택도 없네요.
최성규
|