사용자 정의 커서 사용하면 잘 안된다.
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);
}
'프로그래밍 > VC++' 카테고리의 다른 글
VC++ 2003 tlb를 이용해서 ATL 맹글기 (0) | 2006.11.06 |
---|---|
CRectTracker를 확대 축소의 경우에 쓸 때 주의할 점. (0) | 2006.10.29 |
MFC ActiveX에서 BackSpace가 안먹히는 문제 해결 (0) | 2006.10.28 |
VC++에서 ADO 사용하기 (0) | 2006.10.18 |
MFC 탭컨트롤에 TCN_SELCHANGE 메시지 날리는 방법 (0) | 2006.10.08 |