wndproc回调函数究竟是干什么用的?先调用wndproc还是先调用响应函数?
比如,我们需要响应鼠标点击函数。那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。那么wndproc函数究竟是干嘛用的?--------------是...
比如,我们需要响应鼠标点击函数。
那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。
那么wndproc函数究竟是干嘛用的?--------------是不是用于自定义响应?
他能捕捉所有的WM消息?
如果存在系统的响应函数,又存在wndproc函数,那么当鼠标点击时,是先调用wndproc函数,还是先调用鼠标响应函数?两者是先后调用关系,还是屏蔽关系?
我如何在wndproc函数里去调用系统响应函数?又该如何传参? 展开
那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。
那么wndproc函数究竟是干嘛用的?--------------是不是用于自定义响应?
他能捕捉所有的WM消息?
如果存在系统的响应函数,又存在wndproc函数,那么当鼠标点击时,是先调用wndproc函数,还是先调用鼠标响应函数?两者是先后调用关系,还是屏蔽关系?
我如何在wndproc函数里去调用系统响应函数?又该如何传参? 展开
2个回答
展开全部
比如,我们需要响应鼠标点击函数。
那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。
<- 你觉得为什么你增加的响应消息函数能在消息来的时候被执行?
WndProc是一个窗口的所有消息处理代码的统一入口,你之所以能增加鼠标点击的消息响应,实质就是在进入这个函数以后,某个地方的代码判断了要处理的消息是不是“鼠标点击的消息”,如果是,就调用你增加的函数。如果WndProc进入以后,没有执行这样判断的代码,那么你“增加的函数”就不会被执行。
系统响应函数是 DefWindowProc,参数和WndProc一致。第一个参数是窗口句柄,第二个是消息,第三个和第四个是消息附带的参数,具体参数是什么意义根据消息而定。如何调用……既然参数一致,你就把所有送进来的参数原样送进DefWindowProc,然后把DefWindowProc的返回值原样返回,就可以了
那直接增加响应消息,他会自动生成一个对应的函数,然后我们在里面写内容。
<- 你觉得为什么你增加的响应消息函数能在消息来的时候被执行?
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、把屏蔽的地方去掉,它就能响应了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询