사용자 정의 커서 사용하기
사용자 정의 커서 사용하면 잘 안된다.
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);
}