| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:windows编程中常提到的“窗口过程”是什么意思呀?
只看楼主 加入收藏
sdudy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-11-3
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
windows编程中常提到的“窗口过程”是什么意思呀?
在看windows编程的书中,常提到的“窗口过程”,这四个字是什么意思呀?本人新手,望各位大侠赐教。
搜索更多相关主题的帖子: 窗口过程 windows 中常 
2010-11-03 20:44
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:5 
详细说巨麻烦!我给你简单讲一下,想了解全部就看Charles Petzold著《Windows程序设计》(第五版)北京大学出版社。
首先,你必须已经建立了一个窗口。这时,你在这个窗口内点了一下鼠标左键,Windows系统会将这个“消息(或者说事件)”放入到系统消息队列里。之后它会自动分辨出这是哪个窗口所接收的消息,并将这个消息放入到该窗口所对应的应用程序消息队列里。
第二,你的应用程序主函数:WinMain()执行到消息循环后,代码是:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GetMessage()函数从应用程序消息队列里边接收“单击鼠标左键”这一消息,返回值不为0,所以进入循环体,第二个函数用来转换某些键盘消息,而我们点的是鼠标,所以在此直接跳过;第三个函数,将该消息发送回Windows。
Windows接收到DispatchMessage()函数发送的消息后,它会自动找到应把消息发往的窗口过程。并把消息向其传递。之后,进入WndProc函数。你会感到这是“Windows调用了WndProc()”,所以WndProc()才被称为“回调函数”。
进入WndProc()之后,通过switch()逻辑检测接收的信息并做出相应的处理和操作。例如,单击鼠标左键,由WndProc()函数掌管的窗口应该进行怎样的变化……这些东西要我们自己来写喽。但其中有些东西几乎是固定的。比如收到WM_DESTROY消息后,一般调用PostQuitMessage(0)发送WM_QUIT消息,用来结束消息循环,但也不一定,前不久我才写过一个双窗口的程序,当关掉一个窗口后,你应当保证另一个窗口不被关闭……
当WndProc()处理完毕后,DispatchMessage()函数才返回,这时,又要从GetMessage()函数开始新一轮的循环啦~


百度上的
2010-11-03 22:44
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
其实应该是回调函数!

★★★★★为人民服务★★★★★
2010-11-05 08:41
快速回复:windows编程中常提到的“窗口过程”是什么意思呀?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018757 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved