객체 위에 마우스 올렸을때 마우스 이벤트 발생(?) 어케 표현해야 하지?;; ㅋ
우선 마우스를 쓸거니깐 WM_MOUSEMOVE 메시지를 추가해야겠죠?
요렇게 추가하면
void CTest::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
CDialog::OnMouseMove(nFlags, point);
}
요런게 파일이름Dlg.cpp 파일에 생기죠.
우선 첫번째 방법은?
void CTest::OnMouseMove(UINT nFlags, CPoint point) UpdateData(0); |
보통 이런 식으로 마우스 포인트 범위 지정해서 마우스 이동위치를 체크해서 객체위에 마우스가 올라간것과 같은 표현을해 줄 수 있습니다.
일종의 눈속임??
이럴 경우 사용자가 일일이 픽셀 체크해서 범위를 지정해야 하는 압박이 ㅡㅡ;;
이에 대한 해결법은...?
void CTest::OnMouseMove(UINT nFlags, CPoint point) { CWnd* pWnd1 = GetDlgItem(IDC_BITMAP1); CWnd* pWnd2 = GetDlgItem(IDC_BITMAP2); CRect rect1; CRect rect2; pWnd2->GetWindowRect(&rect2); if(rect.PtInRect(point))
|
요로케 하면 되는데
위에 빨갛게 표시해둔건 마우스가 올라갈때 선택될 객체입니다. 객체의 ID가 들어가죠. 전 IDC_BITMAP으로 이미지를 추가했습니다.
그담엔 CRect로 rect 객체를 만듭니다. CRect는 사각형을 만드는 클래스입죠.
이렇게 만든 rect에 GetDlgItem으로 얻은 객체의 주소를 넣어서 이용하는데,
요기서 뽀인트가 PtInRect입니다.
마우스가 지정한 사각형안에 들어가게 되면 이벤트가 발생합니다.
왠만하면 객체 생성은 BOOL CTest::OnInitDialog(){}안에 넣어주는게 좋겠죠? ㅋ
이상 과제하다가 해본거 적어봤습니다.
소스 출처가 어딘지 기억이 안나네요;;;
요것도 참고하세요 ▼
GetWindowRect
ScreenToClient |
'programming > 임시' 카테고리의 다른 글
맥에서 mysql 삭제 (0) | 2011.09.02 |
---|---|
왜 2의 보수를 하면 부호를 바꾼 값이 되나요? (0) | 2011.03.18 |
modal 값넘기고 종료될때 값 넘겨받기 (0) | 2011.03.18 |
지역 날씨 코드 (0) | 2011.03.18 |
MFC로 원형 차트만들기 (0) | 2010.01.05 |