您的位置:首页 > 其它

MFC下按钮自绘的实现(二)

2010-07-20 13:51 363 查看
=============================================================
标题:MFC下按钮自绘的实现(二)
摘要:
备注:MFC + VC2005
日期:2010.7.20
姓名:朱铭雷
=============================================================
上篇文章中提到使用WM_MOUSELE***E消息,但是在Windows CE操作系统下,手动添加WM_MOUSELE***E消息响应函数之后,编译会发现WM_MOUSELE***E没有定义。之前在Windows XP操作系统下执行的程序没有这个提示。找到原来的程序,发现WM_MOUSELE***E的定义在/microsoft visual studio 8/vc/platformsdk/include/winuser.h文件中。
#if(WINVER >= 0x0500)
#define WM_NCMOUSEHOVER 0x02A0
#define WM_NCMOUSELE***E 0x02A2
#endif /* WINVER >= 0x0500 */
据此手动添加如下代码:
#ifndef WM_MOUSELE***E
#define WM_MOUSELE***E 0x02A3
#endif
对于WM_MOUSEHOVER消息也是一样:
#ifndef WM_MOUSEHOVER
#define WM_MOUSEHOVER 0x02A1
#endif
重新编译即可。
另外上篇文章中说道TrackMouseEvent函数用来投递WM_MOUSELE***E和WM_MOUSEHOVER消息。貌似这个函数在Windows CE操作系统下也找不到。找不到就不用它了,自己直接调用PostMessage投递出去算了。
比如:
::PostMessage(m_hWnd, WM_MOUSELE***E, 0, 0);
那么当光标滑过按钮时,会触发WM_MOUSEMOVE消息,在这个函数中如何判断光标是在按钮上停留着还是离开了,从而是发送WM_MOUSELE***E消息还是WM_MOUSEHOVER消息呢?这个不难吧,至少PtInRect函数可以搞定。
自己测试了一下,完全可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: