WndProc函数在什么时候被调用
答案:2 悬赏:0 手机版
解决时间 2021-02-05 01:07
- 提问者网友:欺烟
- 2021-02-04 19:57
WndProc函数在什么时候被调用
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-02-04 21:26
函数调用形式本身没有好坏之分 任何函数代码如果有错误都可能导致软件出问题,甚至导致崩溃 c 里可以使用指针,函数指针 这就使程序可以更灵活 当 函数指针 做为函数的参数,传递给一个被调用函数, 被调用函数就可以通过这个指针调用外部的函数...
全部回答
- 1楼网友:酒安江南
- 2021-02-04 21:59
wndproc在winmain里面没有直接调用,但是它被间接调用。下面的消息循环往往被称为主消息循环,是win32程序驱动的根源,所有的win32程序都会有类似的循环(mfc也不例外,在cwinthread::run函数里面):
msg msg;
while (getmessage(&msg, null, 0, 0))
{
translatemessage(&msg);
dispatchmessage(&msg);
}
你的wndproc看起来似乎和上面的代码压根没有关系,但是奥妙就在dispatchmessage里面,这个函数的作用和他名字一样,是分发消息的,所有的窗口句柄都对应一个窗口过程函数,每个消息的窗口句柄则是在这个msg结构中保存的,dispatchmessage的源代码虽然没有公开,但是几乎可以肯定,他先调用windows api函数getwindowlongptr加上参数gwlp_wndproc,就可以获得窗口句柄所对应的窗口函数指针,接下来他就调用这个窗口函数。所以窗口函数被这个主消息循环间接调用了。当getmessage获得的msg结构中的窗口句柄是null的时候,dispatchmessage不调用任何窗口过程函数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯