프로그래밍/VC++

사용자 정의 커서 사용하기

panpro 2006. 10. 28. 23:46

사용자 정의 커서 사용하면 잘 안된다.

SetCursor(LoadCursor(NULL, IDC_WAIT));
이렇게 미리 정의되어 있는 거 사용하면 무쟈게 잘 되는데, 사용자 정의 커서는 잘 안된다.

예를 들어, IDC_PENCIL 을 정의해 놓고, (이런 연필 모양 커서는 C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Graphics\cursors 에 가보면 많다.) 이걸 쓰려고 하는데, 툴 버튼을 누르는 곳에서 SetCursor을 하면 안된다.

WM_SETCURSOR 메시지 처리를 하면서 다시 원래 arrow로 바꿔 버리기 때문이다.
그래서 결국에는 WM_SETCURSOR 메시지 핸들러에서 마우스 커서를 바꿔줘야 한다.

아래와 같이 경우에 따라 마우스를 처리해 주고, return TRUE를 해서 더 이상 밑으로 전달되지 않도록 해야 한다.
BOOL CMyFormView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// 마우스 커서 처리
switch (this->m_nToolIndex)
{
case TEXTTOOL_NEW :
 m_nToolIndex = TEXTTOOL_NEW;
 HCURSOR hCursor;
 hCursor= AfxGetApp()->LoadCursor(IDC_PENCIL);
 SetCursor(hCursor);
 return TRUE;
}

return CFormView::OnSetCursor(pWnd, nHitTest, message);
}