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]