landgrave 2005年07月28日
鼠标形状动态改变的问题
在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);
}

我不知道问题出在哪儿了都,希望各位能帮个忙,谢谢!
...全文
202 点赞 收藏 11
写回复
11 条回复

还没有回复,快来抢沙发~

发动态
发帖子
VC/MFC
创建于2007-09-28

7883

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告