为什么在鼠标消息处理函数编程时要8253初始化编程终点

君,已阅读到文档的结尾了呢~~
中国象棋对弈程序论文(可编辑),中国象棋在线对弈,中国象棋对弈,中国象棋对弈单机版,中国象棋论文,中国象棋的论文,中国象棋,中国象棋游戏,中国象棋大师,中国象棋残局
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
中国象棋对弈程序论文(可编辑)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口随时随地,快速访问
只要手机在手,您都可以快速、方便地看贴发帖,与论坛好友收发短消息。
极致优化,畅快"悦"读
独有的论坛界面和触屏设计,手机论坛也变得赏心悦目,操作自如。
即拍即发,分享生活
不管是风景图画,还是新闻现场,拍照发帖一气呵成,让您在论坛出尽风头。
下载客户端后,拍摄二维码快速访问本站:
或者通过以下地址访问:
Powered by3453人阅读
关于 WM_MOUSEENTER 和 WM_MOUSELEAVE消息
这两个消息比较古怪,虽然你能找到他们的定义,看起来也似乎挺有用,但是却接收不到。
如果要处理这两个消息需要手动在WM_MOUSEMOVE消息处理函数中添加:
添加变量:
m_bTracking = FALSE;
添加消息处理函数:
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
用ON_MESSAGE宏进行消息映射:
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
在WM_MOUSEMOVE消息处理函数中进行处理:
void CDemo::OnMouseMove(UINT nFlags, CPoint point)
&&& // TODO: Add your message handler code here and/or call default
&&& if (!m_bTracking)
&&& &&& TRACKMOUSEEVENT
&&& &&& tme.cbSize = sizeof(tme);
&&& &&& tme.hwndTrack = m_hW
&&& &&& tme.dwFlags = TME_LEAVE | TME_HOVER;
&&& &&& tme.dwHoverTime = 1;
&&& &&& m_bTracking = _TrackMouseEvent(&tme);
LRESULT CDemo::OnMouseLeave(WPARAM wParam, LPARAM lParam)
&&& return 0;
LRESULT CDemo::OnMouseHover(WPARAM wParam, LPARAM lParam)
&&& return 0;
WM_MOUSELEAVE ,WM_MOUSEENTER 应该算是个自定义的消息,因为Windows通常都不会发送这个消息。只有你调用TrackMouseEvent 才会收到这个消息。
实际上这个消息 是 TrackMouseEvent 而不是windows 发出的。很奇怪微软会定义出这样子的API。而且TrackMouseEvent 个人感觉也不大好用(主要是感觉别扭,不是说功能不行)。其实TrackMouseEvent 的原理也蛮简单的,自己三两句语句就搞定了,不必理会微软搞的这个古里古怪的API,还得去查找消息定义。
原理如下:
鼠标在窗口区域时会收到MouseMove消息,第一次收到这个消息时 就是 WM_MOUSEENTER。
On_MouseMove(...)
BOOL bFirst = TRUE;
if (bFirst)
&&& // PostMessage(WM_MOUSEENTER...) or call some function.
&&& bFirst = FALSE;
&&& SetTimer(...);
在 Mouse Enter 自后启动了一个计时器, 通常100ms 就足够了。计时器里检测鼠标是否离开。
On_Timer(...)
GetCursorPos(pt);
GetWindowRect(rect);
if (PtInRect(&rect,pt))
&&& KillTimer(...); // kill self.
&&& PostMessage(WM_MOUSELEAVE...); // or call some function.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3351637次
积分:35102
积分:35102
排名:第85名
原创:583篇
转载:182篇
译文:16篇
评论:807条
文章:129篇
阅读:816110
文章:33篇
阅读:125859
文章:16篇
阅读:66288
阅读:6515
文章:29篇
阅读:191406
文章:18篇
阅读:147493
文章:44篇
阅读:219764
(9)(25)(34)(19)(15)(17)(15)(23)(12)(12)(14)(13)(14)(20)(58)(25)(31)(16)(33)(31)(20)(24)(23)(21)(20)(14)(36)(14)(14)(7)(6)(15)(3)(2)(9)(6)(7)(32)(3)(8)(7)(22)(2)(30)(4)为什么鼠标单击一下,会进2次OnLButtonUp()函数?
[问题点数:60分,结帖人xianglitian]
为什么鼠标单击一下,会进2次OnLButtonUp()函数?
[问题点数:60分,结帖人xianglitian]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 鼠标初始化 的文章

 

随机推荐