45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:GetMessage和DispatchMessage得详细联系

GetMessage和DispatchMessage得详细联系

2016-08-29 10:30:43 来源:www.45fan.com 【

GetMessage和DispatchMessage得详细联系

在看 Programming Role Playing Games with DirectX 一书中有下面的代码片段

GetMessage和DispatchMessage得详细联系while(Msg.message!=WM_QUIT)
GetMessage和DispatchMessage得详细联系GetMessage和DispatchMessage得详细联系
{
GetMessage和DispatchMessage得详细联系
if(PeekMessage(&Msg,NULL,0,0,PM_REMOVE))
GetMessage和DispatchMessage得详细联系GetMessage和DispatchMessage得详细联系
{
GetMessage和DispatchMessage得详细联系TranslateMessage(
&Msg);
GetMessage和DispatchMessage得详细联系DispatchMessage(
&Msg);
GetMessage和DispatchMessage得详细联系}

GetMessage和DispatchMessage得详细联系GetMessage和DispatchMessage得详细联系else{}
GetMessage和DispatchMessage得详细联系}

GetMessage和DispatchMessage得详细联系

发现建立的一个简单的窗口cpu的占有率几乎100%后来在其他介绍window api的书上有下面类似写法:

GetMessage和DispatchMessage得详细联系while(GetMessage(&msg,NULL,0,0))
GetMessage和DispatchMessage得详细联系GetMessage和DispatchMessage得详细联系
{
GetMessage和DispatchMessage得详细联系TranslateMessage(
&msg);//进行一些键盘消息的转换
GetMessage和DispatchMessage得详细联系DispatchMessage(&msg);
GetMessage和DispatchMessage得详细联系}

GetMessage和DispatchMessage得详细联系//TheDispatchMessagefunctiondispatchesamessagetoawindowprocedure.
GetMessage和DispatchMessage得详细联系
//ItistypicallyusedtodispatchamessageretrievedbytheGetMessagefunction.

后来在网上查到,我总结如下:

后者是用SDK进行Windows程序设计的标准写法。
使用PeekMessage一定会使系统变慢,因为PeekMessage无论是否有消息都会返
回,因此你的程序始终在执行一个死循环,在抢先多任务系统中会使系统变慢
在win3.x这种写作时多任务系统中则会使操作系统down掉。

GetMessage检查事件队列,如果没有事件就会挂起本进程等待时间发生

DispatchMessage总是返回的,及时是空消息也要讲小许分派到窗口过程处理函数的,这样自然cpu100%了

但是Programming Role Playing Games with DirectX 一书用的是前者,不知道3D游戏里面要检测所有的包括空消息的处理么?继续研究中,哪天明白了为什么这本书里面这么写吧,高手看到了一定要给点指点

 

本文地址:http://www.45fan.com/dnjc/69283.html
Tags: 关于 GetMessage DispatchMessage
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部