GSI

컨트롤의 특정 부분을 사용해서 타이틀바로 인식하게 하고 싶을때가 있습니다.
그럴때는 아래와 같은 코드를 사용하면 됩니다.

void CDlgTest01::OnLButtonDown(UINT nFlags, CPoint point)
{
 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() 함수 안에 아래의 코드를 추가 합니다.

GetDlgItem(IDC_STATIC_CAPTION)->ModifyStyle(0, SS_NOTIFY);

이제 디버깅을 해보시면 호출이 되는걸 확인할 수 있습니다.

마지막으로 작업해 주어야 하는 부분이
마우스 위치를 얻어와서 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));
}

Posted by gsi
: