본문 바로가기

old drawer/C, C++, MFC

[MFC] 특정 영역 속에 마우스 클릭시 이벤트 발생법

탭컨트롤 상단에 오른쪽 마우스를 이용하여 어떤 탭을 클릭했는지 출력하도록 구성한다면
아래와 같이 작성할수 있습니다. 제가 링크해드린 예제에서처럼 CTabCtrl에서 계승 받은 클래스에
WM_RBUTTONUP 메시지를 등록하시고 아래와 같은 코드를 추가하세요 ^^;;

WM_LBUTTONDOWN 메시지 핸들러에서 다음과 같은 처리를 해줍니다...

 

CRect rt;  // 픽쳐 컨트롤의 사각형 영역 조사

 

// 픽쳐 컨트롤의 사각형 좌표를 구함

// GetClientRect 는 크기를 구하니 GetWindowRect 이용...

 ((CStatic*)GetDlgItem(IDC_STATIC_PIC))->GetWindowRect(&rt);

 

// GetWindowRect 로 얻은 좌표는 스크린 좌표(물리적) 이니 이를

// 화면 좌표(논리적, 클라이언트 좌표)로 변환

 ScreenToClient(&rt);

 

 if (rt.PtInRect(point)) // 픽쳐 컨트롤의 사각형 영역에 마우스 클릭 좌표(point) 가 있으면...TRUE

{

 DoSomething...

}

else  // 픽쳐 컨트롤 영역에 마우스 클릭 좌표가 없으면... FALSE

{

 DoSomething...

}