说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教关于Windows消息机制的问题

编辑:说三道四文库 发布时间:2017-12-12 04:53
HTML文档下载 WORD文档下载 PDF文档下载
小弟在做DirectX程序,以下是游戏的循环(其中GameActive是全局变量,是游戏进行的标志)

GameActive = true;  // 游戏开始
while(1)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message==WM_QUIT)
break;
TranslateMessage(&msg); 
DispatchMessage(&msg);
}
else if( GameActive )
{
myGame->Reflash();
}
}

消息函数里捕捉
case WM_KILLFOCUS:
GameActive = false;
break;
case WM_SETFOCUS:
GameActive = true;
break;
消息来设定当游戏窗口失去焦点时游戏停止,得到焦点后游戏重新开始

由于游戏是不断刷新画面的,我在刷新的函数加上了
if( GameActive )
{ // 如果当前的游戏在运作的话
GetClientRect( hwnd, &rect );
ClientToScreen( hwnd, (POINT*)&rect );
lpDDSPrimary->BltFast(rect.left, rect.top,lpDDSBack,NULL,NoKey);
}
来设定游戏运行时才刷新

现在在游戏窗口前把一个最小化的程序展开,没有问题;但如果把一个游戏窗口后面一个失去焦点的窗口提前到游戏窗口前时,则游戏程序会在改窗口上绘制一次画面,遮住改窗口的一些东西(但可以正常使用);另外如果QQ的选单申出来时,也会有上面的错误,请问这是为什么?
PS:本来想在游戏版提问,但那里的人气太少了



是不是那里缺少判断条件
up
汗~~~没有人帮忙吗?
这类WinAPI的帖子,我真的不知道在什么板块贴的好了。。。
if( ::getfocus() == this )
{ // 如果当前的游戏在运作的话
GetClientRect( hwnd, &rect );
ClientToScreen( hwnd, (POINT*)&rect );
lpDDSPrimary->BltFast(rect.left, rect.top,lpDDSBack,NULL,NoKey);
}
楼上的那语句和我本来的效果一样啊:
我的是在失去焦点时把GameActive关了,楼上的是在失去焦点时检测当前有焦点的是否这个窗口
实行时完全一样。。。
申明全局 static GameActive = true; 试试看
最好在QQ窗口弹出时跟踪刷新消息(WM_PAINT??)看看GameActive
我的GameActive是全局变量
实验过,QQ弹出(没有点击)时,焦点还是在我的窗口上

另外对于WM_ACTIVATE我有这样的想法,不知道对不对:
当两个窗口同时存在Windows上(都并非最小化状态),无论用点击鼠标还是按键盘的方式让后面没有焦点的窗口获得焦点,Windows首先做的是让后面的窗口得到焦点并重绘(前面的窗口还没有收到失去焦点Msg),然后再让原来有焦点的窗口得到失去焦点的Msg......
up
声明一个WNDCLASSEX myWClass;
myWClass..lpfnWndProc=myWProc;
...
LRESULT CALLBACK myWProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch(msg){
   case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    ...//your paint progress
    EndPaint(hwnd,&ps);
   case ....
.....
}
}
应该没问题了
DX是在Winmain里设置一个循环不断刷新的,不能等WM_PAINT消息啊......
昏倒!

楼主从网上找一个游戏的代码,看看就知道了。

睡...
不清楚你的画面是怎么画上去的,一般画面变黑是因为刷新被覆盖重画或者是图象句柄被提前释放。
llrock(百乐宝||昨夜星辰):我能找到的公开代码的游戏都是全屏的啊

不明白楼上的在说什么,不过我的画面不是变黑,只是在某种情况下失去焦点的时候进行了一个多余的重绘——我现在就想知道把后面窗口提前的时候,是不是先让后面窗口得到焦点,再让我的游戏窗口得到失去焦点的事件......
KyosukeNo1(裕作) 大哥,好久不见了.帮你UP一下
当你的绘图区失去焦点,directdraw也同时会失去了对页面的控制,就会发生"DDERR_SURFACELOST"错误。所以你应该使用下面的方法恢复页面,
lpdd->RestoreAllSurfaces( );
ReloadBitmap( );

不知道你做了这个工作没?
如果没有,我想你一定会用缓冲机制,那么再你换页的时候做个判断,
HRESULT result;
result=lpdd->Flip(NULL,DDFLIP_WAIT);
if (result==DDERR_SURFACELOST)
{
lpdd->RestoreAllSurfaces( );
ReloadBitmap( );

          
怎样成为优秀的产品经理? Google发布新版AdMob 将在更多市场推出 触控ARM“结连理”,Cocos2d-x性能提速70% Per Brashers:智能、能耗、安全将是未来数据中心发展的关键! 梁博:OpenStack已在IaaS层面扮演重要角色 云计算三大主流阵营的竞争与合作 如何使用15美元每月的机器实现百万文档检索 外媒路透社:小米本周四发布首款平板电脑,八九不离十 移动支付帝国战:谷歌、苹果、Facebook、亚马逊孰胜孰负? 十大响应式Web设计框架 Giraph助力Facebook打造亿万用户间关系链 跪求出名:让应用在App Store中出人头地的12种方式 束文辉:Intel如何玩转OpenStack Facebook社交业务进军中国内地,困难重重 《近匠》透镜:代码级定位,让App性能监控更从容! 联想移动与云新战略 重点深耕企业移动方案 美国高通公司在深圳召开参考设计及无线创新峰会 提供“一站式”整合服务 友盟正式推出消息推送平台 iOS 8新功能再曝光:或推出分屏多任务功能 Framer:开源原型设计工具,巨头们的心头好 亚特兰大峰会精彩看点:软件吞噬世界,OpenStack是变革核心 数据中心基础设施是大数据战略成败的关键 实时大数据分析:网络分析的一种新方法 最新消息:iPhone 6将采用更大、更清晰的1704x960分辨率屏幕 吴毅挺:OpenStack是开源IaaS平台大势所趋的集大成者 做好扁平化设计-交互篇 狙击Google Glass?三星将推基于Tizen系统的Gear Glass GamePlay:跨平台开源3D游戏引擎,黑莓的努力你不懂 “少即是多” 高通QRD大会精华汇总 天云盾:构筑在云端的Web安全防护 解析大数据时代的数据库集群技术 一道四级题有一点不明白的地方,谢谢各位高手帮我解决一下困惑。。 websphere的问题? 在一个对话框CDialog类中访问窗体视图类CFormView中的函数发生错误? 有关简繁体转换的问题 怎么分离这个字符串 aa|bb|cc|dd| ASP连接Oracle9i的连接字符串是什么? 请教:EXCEL中使用VB进行串口编 websphere的问题(4)? 如何在自己写的类的属性、方法在被使用的时候显示一些相关信息? 高分:大侠们,帮我看一下这个设计思路对吗?(在线等待!) 初级问题:请问用ASP开发BS结构程序,应该选什么工具啊 请教各位pb的可执行程序的分发 我运行了一个网络管理软件时 这个软件显示的信息是乱码?而别的程序都没有乱码? 多谢awpking ,请进给你洒分. asp里调ActiveX控件,客户端却不能用,请帮助解决,100分相送。 如何让两个网段的电脑互相访问 在线等!打开文档的问题! HtmlHelp用法问题。急急!!1 只有在这问,关于笔记本网卡的驱动程序 我运行了一个网络管理软件时 这个软件显示的信息是乱码?而别的程序都没有乱码? 菜鸟的问题,大虾解决 本地安全策略打不开,怎么解决? 高分求教,如何让asp.net生成的网页转为pdf输出,在线等待 求救:用JMail发送邮件,用IIS的SMTP虚拟服务器,邮件都堵在Queue目录里发不出去 时间问题 在线等待 !!!没分啦!以后报答!! 为何执行int n=str.GetLength()后,n为0??? 急寻《基于XML电子公文格式规范》 初学 关于datagrid的问题 讨论用例分析技术 .net被我安在D盘,D盘下有一个WINNT目录被我删了,.NET就起不来了,我的系统在C盘 怎样删除表中的重复数据,急!! web datagrid的页脚怎样显示整个列的合计值或整个表的记录数? 如何使下拉选择框的默认为空? 初學者求助,請看下面代碼,幫忙解釋動態建立問題.... Crosstab数据窗口中的设计问题 基础问题 我问一个Form的问题 大一不能带电脑,晕!!!! EJB调用的问题 请高手多多指教!十万火急 关于多表更新的问题! LNK2001难题,高手来看看!在线急等(50) 学用VC.net 我想问一下有关函数的删除问题。 如何用 sax编辑一个xml文件 如何算是一位成功的程序员? ACESS数据库为什么 那么容易被损坏 对象不支持此属性 是怎么回事?? 还有如何让空间支持Stream文件流??? 我发现ADO有个Version属性,怎么把它写出来呢? 如何加入行号 请问一下现在是用ASP用得广泛还是ASP。NET 高贵典雅因为貂,歌声委婉因为蝉的意思是当属蝉,不是因为蝉 双子座女孩,性格开朗,希望取一个有高贵典雅、善良、纯洁含义的英文名 master数据库备份了,如何还原 某修路队前三天每天修路160千米,后4天共修路710千米,平均每天修路多少千米? 修路队≡天修了3.6千米后4天平均每天修1.85千米这个周共修路多少千米 深感意外反义词 是什么?祁黄羊推举解狐时,掉公深感意外,更觉得是在( )[填反义词】 古诗词三首中,儿童的形象惹人喜爱.牧童中是这样描绘的 五年级古诗词三首在内容上写的都是(),分别描写了().().()等古代儿童的形象急急急急急急急急急急急急急急急急急急急 第一个回答好的给40悬赏分,如果非常好,最多给100,快来抢啊 根据五年级下册课文内容填空 古诗词三首中描绘的儿童形象十分惹人喜爱.是这样描绘的(村居)。2.( )的晏子,( )的小金花,( )的杨氏之子,( )的老汉3.在括号里填上恰当的关联 牧童描写了一个什么儿童的形象? 高贵典雅的雅是什么意思 临安破获特大涉毒涉枪案 缴获整枪43温州:成绩将非评价学校教育质量唯一标最高院公开失信者名单 查谁是老赖浙江院士揭露伪大师治病行骗:治疗效果系心商合杭高铁拿到准生证 安吉将结束不通杭州地铁3号线为啥比原先的规划短了十已婚男连续胸袭女同事遭解雇 自称“没国考报名结束平均70人争1个岗位 湖美国情报机构被爆监听35名国际政要电杭州推新能源交通 新能源车:年底再推美油轮在尼日利亚遇袭 两人被海盗劫为成都第二机场最快年底动工2批次卫生巾不合格 经销企业被查被传将进军好莱坞登全球白手起家女富豪榜首善行才是企业语言招摇撞骗 借钱不还 “警察”男友竟是全省首个“一元注册公司”诞生如果在“一个灶”吃饭低龄帮高龄 有事就找“老伙伴”沃尔沃XC60换“芯”上市奋力开创“文化之都”偷天鬼道猎魂全能奇才器神超级优化官道之色戒大周皇族哥几个,走着天地决斗神云的抗日重庆旅游大连旅游北戴河旅游桂林旅游崂山旅游武汉旅游都江堰旅游广州旅游张家界旅游天津旅游峨眉山旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘