首页
社区
课程
招聘
[求助]让Button 响应 MouseMove 消息
发表于: 2009-4-7 22:21 6514

[求助]让Button 响应 MouseMove 消息

2009-4-7 22:21
6514
我以前学过 SDK 编程 ,现在转入MFC 的学习.书上给出了一个例子,让 一个按钮响应
WM_MOUSEMOVE 消息.当鼠标移动到 这个 按钮 的时候,这个按钮 将 隐藏.

如果 用 SDK实现这个功能,我以前的做法就是,用SetWindowLong改变Button 控件的
WndProc,然后在自己的WndProc中响应 WM_MOUSEMOVE消息.

但是,在MFC中就变得非常简单了。只要新建一个 基于 CButton 的类,然后在这个类中实现
WM_MOUSEMOVE的消息响应函数。就行了。

我就觉得其怪了。Button是标准控件,他的的Wndproc 是已经被 MS实现好了放在DLL中的。

我在没有改变 这个WndProc的 时候,是如何能响应 WM_MOUSEMOVE的呢???

难道MFC使用的BUTTON 不是 SDK中的那个BUTTON???????/

还是 MFC 在底层 已经 替换 了 Button的原 WndProc???

搞不懂啊!!        

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
MFC使用了很巧妙的方法封装了消息的派发。如何封装这些消息的派发,建议你看由李维译注的《深入浅出MFC》一书,那里有详细的解说。
2009-4-7 22:52
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
恭喜你猜对了,就算你不继承CButton,WndProc也照样被替换了。
这个你可以GetWindowLong打印WndProc观察
2009-4-8 09:03
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
好我试试,谢谢你!!

能不能告诉我,MFC是在什么时间  替换的啊??

跟那个 DDX_CONTROL 有关吗???

我刚才试了下,MFC中得到的 地址是:1598629395

我现在用SDK试试看.

SDK中得到的地址是:2011418256

果然不同啊!!!!!!!呵呵
2009-4-8 12:28
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
《深入浅出MFC》 不是 侯俊杰 译的吗?
2009-4-8 12:56
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
嗯,是的,是我记错了。
2009-4-8 12:56
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
请问下版主,我上面的那种 验证方法得到不同的两个地址是不是就说明了。

这个问题??验证方法对吗?
2009-4-8 13:00
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
对,MFC在内部已经处理好了很多烦琐的操作。要了解MFC的内部结构,看候俊杰译的《深入浅出MFC》会有不少的帮助的。
2009-4-8 13:11
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
分为两种情况,如果是用代码创建的,它会在创建前挂一个WH_CBT钩子,在钩子回调里面直接把窗口回调换掉,然后卸载钩子;如果资源里面的,那就是你说的DDX_CONTROL里面,在调用SubclassWindow的时刻把窗口回调换掉了。这些你可以调试跟踪看一下……
2009-4-8 13:26
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
谢谢你!!热心人啊!!!
2009-4-8 13:31
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
通过这个问题 我了学到了 “窗口子类化” 的概念。。

原来 我用SetWindowLong 改变 WndProc 的过程 就叫

“窗口子类化”啊。晕。

为什么叫这个名字呢?有点奇怪!
2009-4-8 14:01
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
罗云彬的WIN32汇编有讲的
2009-4-8 15:43
0
游客
登录 | 注册 方可回帖
返回
//