wndproc回调函数究竟是干什么用的?先调用wndproc还是先调用响应函数?

比如,我们需要响应鼠标点击函数。那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。那么wndproc函数究竟是干嘛用的?--------------是... 比如,我们需要响应鼠标点击函数。

那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。

那么wndproc函数究竟是干嘛用的?--------------是不是用于自定义响应?

他能捕捉所有的WM消息?

如果存在系统的响应函数,又存在wndproc函数,那么当鼠标点击时,是先调用wndproc函数,还是先调用鼠标响应函数?两者是先后调用关系,还是屏蔽关系?

我如何在wndproc函数里去调用系统响应函数?又该如何传参?
展开
 我来答
空雪梦见
2013-12-01 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1198万
展开全部
比如,我们需要响应鼠标点击函数。
那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。

<- 你觉得为什么你增加的响应消息函数能在消息来的时候被执行?
WndProc是一个窗口的所有消息处理代码的统一入口,你之所以能增加鼠标点击的消息响应,实质就是在进入这个函数以后,某个地方的代码判断了要处理的消息是不是“鼠标点击的消息”,如果是,就调用你增加的函数。如果WndProc进入以后,没有执行这样判断的代码,那么你“增加的函数”就不会被执行。

系统响应函数是 DefWindowProc,参数和WndProc一致。第一个参数是窗口句柄,第二个是消息,第三个和第四个是消息附带的参数,具体参数是什么意义根据消息而定。如何调用……既然参数一致,你就把所有送进来的参数原样送进DefWindowProc,然后把DefWindowProc的返回值原样返回,就可以了
更多追问追答
追问
不太懂,我用mfc创建窗口。就用了两个派生类。一个show 一个里面create.

然后我在类里面增加消息响应,他就有对应函数,然后就能响应了。没见到wndproc。难道是他封装了?其实是先调用wndproc,这个函数里面再调用对应的响应函数?

那我想用wndproc怎么办

还有DefWindowProc跟wndproc又是什么关系?
追答

对,它封装了。


MFC的一个很重要的工作就是把非面向对象的Windows API式的界面编程,变成面向对象的。


如果想知道MFC的工作原理,看看“深入浅出MFC”这书似乎可以。

我对MFC不熟,所以……

试了一下,重载WindowProc,然后屏蔽掉指定消息,按按钮就真的没有反应了。

示例:

1、IDC_BUTTON1有响应函数

2、改了WindowProc,屏蔽掉IDC_BUTTON1的消息

3、把屏蔽的地方去掉,它就能响应了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hv...e@sohu.com
2013-12-01
知道答主
回答量:7
采纳率:0%
帮助的人:9488
展开全部
什么用的?先调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式