改变CButton的光标问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:44:51
我重写了个继承CButton的类,里面只改写了OnSetCursor();
在OnSetCursor();中添加了一句
SetCursor(::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_CURSOR1)));
可是为什么 鼠标移上去时还是不会改变光标,在父窗口中这么做是可以改变。

WM_SETCURSOR 是反射消息,由父窗口控制的。你看他的消息函数第一个参数就知道什么意思了。
第一个参数为子窗口指针,也就是在处理中可根据当前鼠标所在的子窗口来确定要显示的光标。
所以你设置光标的操作最好放在父窗口里面。
当然,放在你自己的窗口类定义里面也可以,但必须在父窗口的OnSetCursor里面设置当前窗口光标的时候返回false;

试一下这个

BOOL k=CButton::OnSetCursor(pWnd, nHitTest, message);
HCURSOR hHandCursor = ::LoadCursor(NULL, MAKEINTRESOURCE(IDC_CROSS));
::SetCursor(hHandCursor);
return true;