Windows/WTL
SetCursor
aucd29
2013. 10. 2. 13:50
[code]
/*
----------------------------------------------------------------------
DATE : August 27, 2007 11:27:9
----------------------------------------------------------------------
LICENSE : GPL
----------------------------------------------------------------------
CODER : aucd29(ccd@apsat.co.kr)
----------------------------------------------------------------------
NOTE
----------------------------------------------------------------------
codeproject에서는 ALT_MSG_MAP을 이용하라고 햇는데 MFC9.0 + WTL8.0 에서
는 오류가 발생하므로 다음과 같이 아에 상속을 하고 마우스 커서를 설정
해주는 식으로 하니 문제가 없더라 -_ -;
----------------------------------------------------------------------
URL
----------------------------------------------------------------------
http://www.codeproject.com/wtl/wtl4mfc4.asp?df=100&forumid=15263&fr=51
----------------------------------------------------------------------
Cursor Type
----------------------------------------------------------------------
IDC_ARROW
IDC_IBEAM
IDC_WAIT
IDC_CROSS
IDC_UPARROW
IDC_SIZE
IDC_ICON
IDC_SIZENWSE
IDC_SIZENESW
IDC_SIZEWE
IDC_SIZENS
IDC_SIZEALL
IDC_NO
IDC_HAND
IDC_APPSTARTING
IDC_HELP
----------------------------------------------------------------------
Example
----------------------------------------------------------------------
m_wndOKBtn.SetCursorType(IDC_HAND);
m_wndOKBtn.SubclassWindow(GetDlgItem(IDOK));
----------------------------------------------------------------------
*/
class CButtonImpl : public CWindowImpl<CButtonImpl, CButton>
{
BEGIN_MSG_MAP(CButtonImpl)
MSG_WM_SETCURSOR(OnSetCursor)
END_MSG_MAP()
public:
HCURSOR m_hCursor;
public:
LRESULT OnSetCursor(HWND hwndCtrl, UINT uHitTest, UINT uMouseMsg)
{
if (NULL != m_hCursor)
{
SetCursor(m_hCursor);
return TRUE;
}
else
{
SetMsgHandled(false);
return FALSE;
}
}
void SetCursorType(LPWSTR dwCursor)
{
m_hCursor = LoadCursor(NULL, dwCursor);
}
};
[/code]
/*
----------------------------------------------------------------------
DATE : August 27, 2007 11:27:9
----------------------------------------------------------------------
LICENSE : GPL
----------------------------------------------------------------------
CODER : aucd29(ccd@apsat.co.kr)
----------------------------------------------------------------------
NOTE
----------------------------------------------------------------------
codeproject에서는 ALT_MSG_MAP을 이용하라고 햇는데 MFC9.0 + WTL8.0 에서
는 오류가 발생하므로 다음과 같이 아에 상속을 하고 마우스 커서를 설정
해주는 식으로 하니 문제가 없더라 -_ -;
----------------------------------------------------------------------
URL
----------------------------------------------------------------------
http://www.codeproject.com/wtl/wtl4mfc4.asp?df=100&forumid=15263&fr=51
----------------------------------------------------------------------
Cursor Type
----------------------------------------------------------------------
IDC_ARROW
IDC_IBEAM
IDC_WAIT
IDC_CROSS
IDC_UPARROW
IDC_SIZE
IDC_ICON
IDC_SIZENWSE
IDC_SIZENESW
IDC_SIZEWE
IDC_SIZENS
IDC_SIZEALL
IDC_NO
IDC_HAND
IDC_APPSTARTING
IDC_HELP
----------------------------------------------------------------------
Example
----------------------------------------------------------------------
m_wndOKBtn.SetCursorType(IDC_HAND);
m_wndOKBtn.SubclassWindow(GetDlgItem(IDOK));
----------------------------------------------------------------------
*/
class CButtonImpl : public CWindowImpl<CButtonImpl, CButton>
{
BEGIN_MSG_MAP(CButtonImpl)
MSG_WM_SETCURSOR(OnSetCursor)
END_MSG_MAP()
public:
HCURSOR m_hCursor;
public:
LRESULT OnSetCursor(HWND hwndCtrl, UINT uHitTest, UINT uMouseMsg)
{
if (NULL != m_hCursor)
{
SetCursor(m_hCursor);
return TRUE;
}
else
{
SetMsgHandled(false);
return FALSE;
}
}
void SetCursorType(LPWSTR dwCursor)
{
m_hCursor = LoadCursor(NULL, dwCursor);
}
};
[/code]