[MFC] 해당 컨트롤 타이틀바 인식 - HTCAPTION 처리
C++ 2007. 11. 30. 10:11 |컨트롤의 특정 부분을 사용해서 타이틀바로 인식하게 하고 싶을때가 있습니다.
그럴때는 아래와 같은 코드를 사용하면 됩니다.
{
CDialog::OnLButtonDown(nFlags, point);
TRACE2("mousepos : %d, %d\n", point.x, point.y);
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKEWPARAM(point.x, point.y));
}
이거 말고 Static 컨트롤을 사용해서 클릭 이벤트를 추가 하고 캡션 처리는 아래와 같이 하면 되는거 같네요.
우선 Dialog에 Static 컨트롤을 추가 하고 그 컨트롤을 사용해서 처리 해줄때
Static의 "IDC_STATIC_CAPTION" 이벤트 함수를 추가 했습니다.
하지만 해보면 이 이벤트 함수는 호출이 되지 않는데요.
왜냐 하면 스타일에 "SS_NOTIFY"가 없어서 그렇습니다.
BOOL CDlgTest01::OnInitDialog() 함수 안에 아래의 코드를 추가 합니다.
이제 디버깅을 해보시면 호출이 되는걸 확인할 수 있습니다.
마지막으로 작업해 주어야 하는 부분이
마우스 위치를 얻어와서 PostMessage를 호출해 주면 됩니다.
void CDlgTest01::OnStnClickedStaticCaption()
{
CPoint mousePos;
GetCursorPos(&mousePos);
ScreenToClient(&mousePos);
//TRACE2("Edit mousepos : %d, %d\n", mousePos.x, mousePos.y);
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKEWPARAM(mousePos.x, mousePos.y));
}