首页 新闻 搜索 专区 学院

WndProc函数在什么时候被调用?

0
[已解决问题] 解决于 2010-04-10 15:15

  我参考网上一些资料写了个: 剪切板监视程序,里边有如下代码:

        protected override void WndProc(ref System.Windows.Forms.Message m)
        {.....................................}

   本来就不太明白的我,本想用单步调试来看个究竟,可是程序已启动就来到此函数上,所以想问问此函数运行的条件和时机

(本人初学,请尽量详细地讲一讲,谢谢了!)

钢的锅的主页 钢的锅 | 初学一级 | 园豆:14
提问于:2010-04-08 20:14
< >
分享
最佳答案
1

..

这个函数是个回调函数.他的作用就是处理消息(有一个死循环来给他消息).

你点击一个BUTTON,他怎么对应到你的处理函数OnButton上的.就是这个函数来对应的.

这个函数我们不会去调用他的.上面说了是个回调函数.他是由操作系统来调用的.上面有死死循环接受消息.然后系统就会调用这个函数来处理接受到的消息 .

这个函数调用的时机.这个. . 这个. .,就我所知.应用程序主窗口初始化后就没有那个时候不会调用他.

因为就算鼠标移动一下他也会调用.他会找有没有对应鼠标移动的事件,没有就会调用默认函数来处理.

我也讲不怎么清楚 .你随便找个Win32函数.或是你可以用VS里的C++模版里建个WIN32应用程序你就知道了.

在MFC还没出来,大家编写WIN32应用程序时,这个函数就是所有的消息处理的地方.你点击一下,移动一下鼠标都可以交给他处理.

天天不在 | 小虾三级 |园豆:926 | 2010-04-09 16:08
其他回答(2)
0

简单的办法:

在你WndProc里添加一句:

Trace.WriteLine(m);

然后调试时不要设断点,看VS里的“输出”窗口的内容。

 

复杂的办法:

看Programming Windows: http://www.china-pub.com/2100271

deerchao | 园豆:8167 (大侠五级) | 2010-04-08 20:56
0

虽然我没学过C++,但这个函数应该来自C++的句柄获取,它应该可以理解为实时调用的,以监听该对象的事件句柄,所以,断点的时候,应该先判断在哪个状态下之后,在if语句里面加断点

cleven | 园豆:205 (菜鸟二级) | 2010-04-09 09:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册