版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFCTRACKMOUSEEVENTmouseHover为框添加WM_MOUSEHOVER或WM_MOUSELEAVEvoidCmfcDlgDlg::OnMouseMove(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值//if(!m_bTracking){TRACKMOUSEEVENTtme;e=sizeof(TRACKMOUSEEVENT);tme.dwFlags=TME_LEAVE|TME_HOVER;//要触发的消息tme.hwndTrack=this->m_hWnd;tme.dwHoverTime=10;//若不设此参数,则无法触发mouseHoverif(::_TrackMouseEvent(&tme))//MOUSELEAVE|MOUSEHOVER消息由此函数触发{m_bTracking=true;}}CDialogEx::OnMouseMove(nFlags,point);}voidCmfcDlgDlg::OnMouseHover(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值GetDlgItem(IDC_BUTTON)->SetWindowText("Hover");_bTracking=false;CDialogEx::OnMouseHover(nFlags,point);}voidCmfcDlgDlg::OnMouseLeave(){//TODO:在此添加消GetDlgItem(IDC_BUTTON)->SetWindowText("Leave");m_bTracking=false;CDialogEx::OnMouseLeave();}本来打算自绘CButton,时间不足,总结一下这个知识点。随后研究一下MFC的自绘,可以制作非常牛的界面。 默认情况下,窗口是不响应WM_MOUSELEAVE和WM_MOUSEHOVER消息的,所以要使用_TrackMouseEvent函数来激定时间或离开窗口后,该函数会Post这两个消息到指定窗口。不断重复产生WM_MOUSEHOVER。BOOL_bMouseTrack=TRUE在OnMouseMove中调用_TrackMouseEvent函数if //若允许追踪,则。{TRACKMOUSEEVENTcsTME.cbSize=sizeofcsTME.dwFlags=TME_LEAVE|TME_HOVER;csTME.hwndTrack=m_hWnd;//指定要追踪的窗口csTME.dwHoverTime=10; //鼠标在按钮上停留超过10ms,才认为状态为::_TrackMouseEvent(//开启Windows的WM_MOUSELEAVE,WM_MOUSEHOVER支持_bMouseTrack=FALSE; //若已经追踪,则停止追踪}(#add摘自MSDN:The_TrackMouseEventfunctionpostsmessageswhenthemousepointerleavesawindoworhoversoverawindowforaspecifiedamountoftime.ThisfunctioncallsTrackMouseEventifitexists,otherwiseitemulatesit.)在OnMouseLeave中再次允许追踪鼠标状态_bMouseTrack=TRUE注意:也可以用下面代码在PreTranslateMessage函数中接收,不需要自己写WM_MOUSELEASE和WM_MOUSEHOVER消息if(pMsg->AfxMessageBox( leaveelseif(pMsg->message==WM_MOUSEHOVER)AfxMessageBos("mouseleave"); .h .cpp
{ }LRESULT CIconButton::OnMouseHover(RAM {POINTpoint;//亦用如下方法,推荐.OnMouseMove也可用.CPointpt;pt.x=LOWORD(lParam);//horizontalpositionofpt.y=HIWORD(lParam);//verticalpositionofPOINTpt={GET_X_LPARAM(lParam),Param)C } { }#ifndefON_WM_MOUSELEAVE#defineON_WM_MOUSELEAVE()\{WM_MOUSELEAVE,0,0,0,AfxSig_vv,\(AFX_PMSG)(AFX_PMSGW)\(static_cast<void(AFX_MSG_CALLCWnd::*)(void)>(*&ThisClass::*/OnMouseLeave))},#ifndefON_WM_MOUSEHOVER#defineON_WM_MOUSEHOVER()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 听力保护文化的企业构建策略
- 合并基础疾病患者的手术方案优化
- 2025年职场培训复盘与2026年培训效果评估
- 心理咨询在临床中的应用与技巧
- 2025年国际贸易合同
- 可穿戴医疗技术绩效提升方案
- 2025江西吉安市永新县县直事业单位选调18人备考题库附答案
- 2025年福建省高速公路集团有限公司招聘43人笔试备考试题附答案
- 去甲基化药物联合方案在MDS中的应用
- 2025浙江丽水市莲都区城乡建设投资集团有限公司派遣制员工招笔试备考试题附答案
- 加油站冬季安全教育培训试题及答案解析
- 穿条纹睡衣的男孩
- 机房巡检制度与实施细则
- 中二考试数学题目及答案
- 2025及未来5年中国聚乙烯吡咯烷酮市场调查、数据监测研究报告
- 2025年国家开放大学(电大)《电子商务安全》期末考试备考试题及答案解析
- 2025绿电直供、直连技术交流课件
- 医院培训课件:《消毒质量现场采样及检测方法》
- 水箱清洗前安全培训课件
- 天然气管道穿越河流施工专项方案
- 机械售后服务安全培训课件
评论
0/150
提交评论