鼠标形状动态改变的问题
在MSFlexGrid控件中用到comboBox控件,需要当鼠标移动到ComboBox窗体上时鼠标形状变成手的模样,并画出一个矩形框,在CSDN上搜索了一天,并试了N种方法都没有解决。
最后想通过用SetClassLong()的方法来实现当鼠标移至不同的窗体时改变形状,可是发现其并不好用。
以下是我试用的几种方法:
#ifndef IDC_HAND
#define IDC_HAND MAKEINTRESOURCE(32649) // from winuser.h
#endif
void CMainDlg::OnMouseMove(UINT nFlags, CPoint point)
{
this->OnSetCursor(this, HTCLIENT, WM_SETCURSOR);
CDialog::OnMouseMove(nFlags, point);
}
1. 用SetClassLong方法
BOOL CMainDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
POINT point;
GetCursorPos(&point);
CRect rect;
GetClientRect(rect);
ScreenToClient(&point);
if(!rect.PtInRect(point))
{
return FALSE;
}
HWND hWnd = (HWND) GetDlgItem(IDC_COMBO1);
SetClassLong(hWnd, GCL_HCURSOR, (LONG) AfxGetApp()->LoadCursor(IDC_HAND));
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
2.setCursor的方法
BOOL CMainDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
}
3.
#ifndef OCR_HAND
#define OCR_HAND 32649 // from winuser.h
#endif
void CMainDlg::OnMouseMove(UINT nFlags, CPoint point)
{
HCURSOR hCur = AfxGetApp()->LoadCursor(IDC_HAND);
SetSystemCursor(CopyCursor(hCur), OCR_HAND);
DestroyCursor(hCur);
}
我不知道问题出在哪儿了都,希望各位能帮个忙,谢谢!