ShowCursor、MouseHover、MouseLeave使用与MFC框架理解

MFC中,判断鼠标离开控件的方法 一、获取WM_MOUSELEAVE消息:需要TrackMouseEvent来追踪。二、利用SetCapture和ReleaseCapture:设置捕捉。 阅读详情

又是在做计算机图形学大作业时遇到的问题,特此记录备忘~
这次想实现的功能是按下ESC键关闭窗口,以及在渲染窗口里隐藏光标,用图片代替光标位置,窗口其他位置显示默认的光标。

实现效果

这是我目前的工程文件,子窗口就是RenderView那个类。

因为搞不懂MFC默认生成的View类和MainFrame类到底管的是窗口的哪部分,所以我打算把鼠标响应和按键的事件加到这两个类试试。加到MainFrm里,调试发现根本就不响应。加到View类里也是如此。在论坛里提问,有人说

“MainFrame的区域只包括那些边边角角的地方,不包括视图、菜单、工具条、状态条等等……”

,所以不应该在MainFrm里面添加。而View类不响应却没人知道为什么。咨询老师之后,老师说可能是不小心删掉了什么默认生成的代码,所以才不响应。于是我新建了一个MFC,什么都不做,只在View类里添加了KEYDOWN的响应,一运行,成功到达断点位置!我那个奇怪啊,我记得我原来的那个程序根本就没动MFC默认生成的代码啊。但是响应成功就是目的,于是我就打算把原来程序的代码移植到新的“干净的”MFC程序内。但是,移植过来以后发现又不响应了。我思考过后认为,应该是wndSplitter划分子窗口时添加了自定义的RenderView类,因此默认的View类就不再响应,感觉像是被“替换”了。那默认的View类又有什么用呢?我想干脆把RenderView类的代码移到默认View类里,然后在wndSplitter的CreateClient里添加默认View类为右子窗口。但是VC给我报了奇怪的错误,定位在默认View里的GetDocument函数那,天知道为什么在那报错……!咨询老师后,老师说

wndSplitter的RUNTIME_CLASS那里添加的类必须是动态的类,而默认生成的View类是静态类,如果想要添加的话,需要在默认View的头文件里添加一行宏:DECLARE_DYNCREATE(CWorldEditorver10View),这样就把默认View类声明为一个动态类。

不过后来我并没有这么做,还是保留了RenderScene类,毕竟在默认生成的View类里加宏感觉还是虚虚的。ESC按键的问题通过论坛高人指点

可以在 App PreTranslateMessage 中截获消息

解决了,方法是类向导->CWorldEditorver10App->虚函数->PreTranslateMessage,添加后这样写:

BOOL CWorldEditorver10App::PreTranslateMessage(MSG* pMsg)
{
    // TODO:
如何让MFC窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息 如何让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息 阅读详情

相关推荐

别再傻傻分不清!5分钟搞懂倾斜摄影里‘地面分辨率’和‘模型精度’到底啥关系

本文深入解析倾斜摄影中‘地面分辨率’与‘模型精度’的关系,帮助读者快速理解两者的本质区别与内在关联。通过实战案例和公式计算,详细说明如何从航飞设计到精度验证全流程控制,避免常见认知误区,并针对不同应用场景提供精度需求建议。

weixin_33700350的博客 476

微信公众号数据采集实战:历史文章、互动数据与评论详情全解析

本文提供了一套完整的微信公众号数据采集实战方案,详细解析了如何通过接口调用获取公众号的历史文章列表、单篇文章的互动数据以及详细的用户评论。文章从环境准备、核心参数解析到分页逻辑、批量处理和异常处理,提供了可运行的Python代码示例,旨在帮助开发者高效、稳定地构建自动化采集工具,用于竞品分析、内容研究和舆情监控。

u5v6w7的博客 1593

QSPI Flash的原理与QSPI时序的Verilog实现

本节主要是讨论QSPI(Quad SPI,四线SPI总线)的相关内容。我的开发板上有一片型号是W25Q128BV的Quad SPI Flash存储器,本文将以它为例子来说明QSPI操作的一些内容。

Go Forward Forever! 4164

GitHub 镜像站点

国内访问 GitHub 有时会遇到速度慢或不稳定的情况,这时 GitHub 镜像站点就能帮上忙。它们通过代理或缓存机制,让你更顺畅地浏览仓库、下载资源甚至克隆代码。希望这些信息能帮你更顺畅地访问 GitHub 资源。下面表格汇总了一些常见的镜像站及其主要用途。

BillKu的博客 6万+

AI提示词设计中的批判性思维训练方法

在人工智能应用中,提示词(prompt)设计是影响生成内容质量的关键因素。通过引入批判性思维框架,可以有效提升AI输出的逻辑性和多样性。该方法基于目的澄清、证据评估、假设检验和多视角分析四大支柱,构建结构化的问题拆解和证据链。在学术论文辅助写作、商业决策模拟等场景中,这种训练方式能显著提高内容质量,特别适合学生、职场人士和内容生产者。结合思维可视化工具和本地知识库,可以实现从基础应用到专家级分析的进阶。

weixin_33624741的博客 227

双向升压和降压的DC-DC转换器设计

c复制// 类型定义与常量MODE_FORWARD_BOOST, // 正向升压模式(输入700V→输出1200V)MODE_FORWARD_BUCK, // 正向降压模式(输入700V→输出<700V)MODE_REVERSE_BOOST, // 反向升压模式(输入1200V→输出700V)MODE_REVERSE_BUCK // 反向降压模式(输入<700V→输出700V)// 硬件参数float Vin;// 输入电压(0-1200V)

567

一文搞懂LDO !

Start-up 时间是 IC 做死的,如果想要延时启动,最简单的办法是在 EN 上接一个大一些的电容到地,构成一个简单的 RC 电路。电容太小,电压跌落大,响应快。输出电流高,功率大;外围器件少,电路简单,成本低,负载响应快,输出纹波小;将采集的电压输入到比较器反向输入端,与正向输入端的基准电压(期望输出的电压)进行比较,再将比较结果进行放大;是指在给定负载变化下的输出电压的变化,这里的负载变化通常是从无负载到满负载。芯片的静态电流大小与其他性能成反关系,如低噪声,高电源电压抑制比,静态电流大。

weixin_46969363的博客 4382

2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码

2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码。基于视频数据重构进球轨迹,建立空间坐标系并进行曲线拟合,推算初始速度。建立"香蕉球"、"电梯球"、"落叶球"三种典型直接任意球轨迹的动力学模型,分析C罗进球的类型。针对C罗这类强力球员的直接任意球,提出人墙排布策略和守门员防守策略。

YOLO 663

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: MFC中的MainFrame Dlg,App,Doc,View的关系
下一篇: OpenGL VBO顶点缓冲的使用
code_xbug
博客等级 码龄13年 26粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值