太长不看

SetWindowSubClass,然后 return DefSubclassProc(hWnd, uMsg, wParam, lParam);,不要有 WS_CHILD 这个 Style。

缘起

翻 ControlSpy 的时候发现了 BS_GROUPBOX Style,结合脑补觉得这是类似 Frame 的东西,安排了一个还真是。

ControlSpy 截图,无 HiDPI 支持

那么既然控件要放在 Frame 里,而 Frame 是一种 Button,那么就会存在按钮嵌套“按钮”的情况发生,所以 BS_PUSHBUTTON 应该也是可以嵌套 BS_PUSHBUTTON 的,甚至可能可以嵌套 Static


测试程序,开了 HiDPI 支持,所以高清一些

然后测试事件绑定的时候就发现了问题,WndProc 里面没有收到消息,然后简单翻了一下发现会传 WM_PARENTNOTIFY,然后在 WndProc 的回调里面加上了这个 case,的确收到了,但是根据文档来看这个东西给出的事件和信息都很有限,甚至后期测文本框的时候文本框的 CHANGE 事件都收不到,所以就锅++了。

Day 1

搜了一个小时,并没有搜出来什么东西,于是就去 StackOverflow 上面问了。当时问的时候给的图是按钮套按钮的,看上去很怪异,而且并不会有人去这样用控件,而且可能描述上也存在一些问题,导致评论区负面评价比较多,也没获得啥有用信息。


当时查了挺多的东西,翻这些网页流量都 300 多 M(宽带),可见有多猛。。看了许多相关不相关的东西,啥 MFC 的、GetMenu 什么的都有看过,虽然开的时候就知道这种东西不太相关但是还是看了看。

因为前一天太猛,第二天累到爆炸,咕了一天。

Day 3

首先是简单整理了一下原来建 TextBox 的代码,然后依然是从 WM_PARENTNOTIFY 开始找起,看到了 WM_NOTIFY,然后了解了一下 Windows 的消息流程,随着引导看到了 SendAsyncProc,但是对解决问题都没啥用,又抱有一丝希望。花了一段时间去研究为啥收不到 WM_NOTIFY,没啥发现,最后也没收得到,然后看到了 MFC 相关的一些东西,发现这么方便,有一点酸,但是项目架构原因只能用原生。

最后,在这里 Child windows does not receive WM_DESTROY?,看到了真正的答案。既然涉及到了 Child Windows,要手动收到 WM_DESTROY 就说明题主想要在 Destroy 时额外做点什么,而如果能解决,就必定有遍历发消息什么的。其实之前看到了一个提问,只是下面没回答。然后就说到了 SetWindowSubClass,顺理成章地看文档,发现就是要的这个,然后放上去。

放上去之后 F5 开幕雷击,整个窗口算是全白的,之前在新的回调里就是直接调的旧的回调,然后折腾了一下试了几种方案都不行,回去看代码发现在构造的时候 or 了 WS_CHILD,然后既然 SetWindowSubClass 了,就不像是一个 Child,注释掉就好了。

用了这个以后之前注册控件类回调挂掉,错误的注册方法没啥问题的注册函数可以不用要了。

Win32 按钮嵌套收不到消息解决记录的更多相关文章

  1. C#开发微信公众号.NET平台MVC微信开发Demo解决收不到消息的问题

    不得不说现在微信非常火,微信开放平台可以自己写程序跟用户交互,节省了前台开发成本,免去用户装客户端的烦恼.于是今天兴致来潮,想做一个试试. 首先找到了开发者文档,看了看,蛮简单的.(公众号早已申请,有 ...

  2. win32程序之窗口程序,以及消息机制

    win32程序值窗口程序,以及消息机制 一丶简介 通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标 ...

  3. 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务

    搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocke ...

  4. wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法

    原文链接:wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法 最近升级wordpress之后,发现在文章编辑界面的添加新媒体和可视化按钮点击无反应,如下:  然后就在网上找解决办法, ...

  5. PullToRefreshListView中嵌套ViewPager滑动冲突的解决

    PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部 ...

  6. ie6,ie7,ie8 css bug兼容解决记录

    ie6,ie7,ie8 css bug兼容解决记录 转载自:ie6,ie7,ie8 css bug兼容解决记录 - 前端开发 断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面 ...

  7. 解决记录:win10 无法安装VS2017,visual studio installer下载进度始终为0

    问题描述:win10 下无法安装VS2017,visual studio installer下载进度始终为0,点击取消按钮后,也没有反应,visual studio installer也关闭不掉: 具 ...

  8. 错误解决记录------------rhel安装Mysql软件包依赖 mariadb组件

    错误解决记录------------软件包依赖 mariadb组件 错误信息: 错误:软件包:akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda) 需要:maria ...

  9. Apache coredump 问题发现与解决记录

    目录 Apache coredump 问题发现与解决记录 背景 发现问题 解决问题 方法 1 方法 2 总结 Linux 程序编译链接动态库版本问题 ldd 命令 动态库的编译和 soname 线上 ...

随机推荐

  1. 树分治(挑战p360)

    poj1741 题:http://poj.org/problem?id=1741 #include<iostream> #include<algorithm> #include ...

  2. 自定义控件 监控宿主activity的生命周期

    使用不显示的fragment来监控activity生命周期,fragment生命周期基本上跟随宿主activity变化.我们通过fragment的生命周期就可以知到activity的生命周期 我们自定 ...

  3. 火车进出栈 java

    题目描述 一列火车n节车厢,依次编号为1,2,3,…,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入 一个数,n(n<=60000) 输出 一个数s表示n节 ...

  4. Fiddler发送get post测试 笔记

    0 环境 系统环境:win7 1 操作 1 post 类似 2 get

  5. js手机浏览器video标签会一直置顶,遮盖住弹出层问题

    <video x5-playsinline="" playsinline="" webkit-playsinline="">&l ...

  6. 网页中常见返回HTTP状态码含义

    在日常网页浏览的过程中大家经常会碰到400,403,404,500,502等HTTP状态码,这些状态码对于一般用户来说出现什么都是一样的,反正就是页面打不开了,但是作为网站开发人员或者从事相关工作者认 ...

  7. FPGA的存储方式大全

    好的时序是通过该严密的逻辑来实现的.http://blog.csdn.net/i13919135998/article/details/52117053介绍的非常好 有RAM(随机存储器可读可写)RO ...

  8. row_number over( partition by xx)

    在原始表中 新加一个临时列 去重, 排序 比多次join性能提高很多 http://www.mysqltutorial.org/mysql-window-functions/mysql-row_num ...

  9. Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.buding.system.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!

    前几天整体看了一下SpringBoot的简介,觉得看不如自己动手做,于是动手做一个简单的用户管理.启动的时候遇到了Skipping MapperFactoryBean with name 'sysUs ...

  10. RPC 框架性能大比拼

    Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. Motan 是新浪微博开源的一个Java ...