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

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

编辑:说三道四文库 发布时间:2017-10-21 04:35
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( );

          
2048 Hello World:跨平台快速应用开发Python框架Kivy Forrester:关于私有云的10个事实 2014年8月操作系统份额:Win 8.x大涨,Linux继续下跌 0代码、不编程—交互式网页设计工具VXPLO 揭秘Instagram Hyperlapse背后的技术 【CTO俱乐部在线教育研讨会】用互联网技术深入创新教育产品 降低门槛!Hybrid应用开发框架LigerMobile 下一代IT革命:微服务器和雾计算 使用Mongo Connector和Elasticsearch实现模糊匹配 时隔8个月,物联网联盟AllSeen如今怎样? 《近匠》简网:开发零门槛 快速建原生App MDCC免费展位申请超预期 大会内容初曝光 在服务器与交换机定制之后,谷歌着手量子计算机CPU设计 电信天翼开放平台鲍占斌:优质能力 分成比例高 艾格拉斯副总裁王晓波:手游定价如何设计 Xcode 6 Beta 7发布:语法定、内库改,Swift何时完善? 干货来袭:由22个联邦机构分享的6482个数据集 Phablet出货量今年将超移动PC,明年再超平板 如何提高Web服务端并发效率的异步编程技术? 改改改!让应用通过审核出人头地的10个方法 正益无线CEO王国春:AppCan如何获得50万开发者青睐 在收购Xtreme Labs之后,Pivotal推出PaaS移动服务 .NET开发者必备的11款免费工具 .NET开发不可错过的25款高效工具 Docker最佳实践!尽在2014 Container技术大会 pflua:用Lua编写的高性能网络包过滤工具箱 掌上明珠张磊:如何设计手游付费体系 云游科技何千军:游戏开发和后端逻辑经验 《近匠》Highway1:孵化,不只是简单的帮助 嘉宾来了 MDCC 2014首批演讲嘉宾名单公布 前雅虎CTO:Hadoop扩展过程中的7个危险信号 怎样在不同数据库间交换信息?急急急急 ODBC:JDBC桥型连接,是不是不适合使用连接池管理 做EntityBean,始终搞不懂怎么样配置数据库(开发时、部署时),大家都来说一说吧~~~ 多播的问题 计算机专业的学生大学期间必须做到哪几件事? 怎样在数据库间实现数据的交换? 自认为很菜的问题救助高手---困扰了多时 使用TGIFImage(刚刚下载的GifImage控件)的时候的奇怪事,请教! 急!在子程序中无法得到server对象? 如何 使用 用PowerDesign 生成文档 ? 这是个实现绩点计算功能, 谁能帮我改改??? SQL Server安装在一台Win2000的机器中,在网络上的一台Win98中为何无法连接? 各位大侠帮帮忙,在线等,立即给分! 如何 使用 用PowerDesign 生成文档 ? extern声明应在.cpp还是.h文件中? 有关于邮件协议详解方面的书吗? 有东环大厦的程序员吗?给分! 这样的文字怎么下载? 在VC中怎样获得硬盘的序列号? ASP access数据库连接问题 如何在ACTIVEX 里补加入 LICENSE ? 这个SQL语句如何写?好难 请大家来讲讲为什么现在做WebApp用J2EE的多于用MSDCOM和COM+的,是微软的东西真的有缺点还是因为别的? 关于treeview的使用! 愿意帮忙的朋友,进来看看吧! 多播组的问题 请教:这个如何实现? 请问在程序中如何增加TADOTable的一个固定字段,用代码实现? 问一个傻瓜问题,给高分 透明窗体,到win2000下运行时为什么会出现强烈的闪烁现象? 大家有没有看过上海大学小电影?很好看的 请问notesR6的客户端硬件的要求,主要是内存要求多少? 写了一软件!可是没地方发布!我没有上传的服务器,求哪未大虾帮助找一个服务器,上传文件 急,为什么我的软件在win200下字体和DBEDIT,DBGRID可以显示正常,在WIN98下就字体和DBEDIT都变大了? 为何我的JSP程序在页面跳转后要经过刷新才能看到最新结果? 请教Rave打印报表中的问题 感谢青润老大电话回答问题! 如何在ACTIVEX 里补加入 LICENSE ? 谁然认识子飞鱼啊 关于一个视图的问题 有谁写过医务室的程序的,请指点一下!提点建议! 高分求解水晶报表简单问题(在线等) 请教jmail的低级问题! 关于APPLICATION里放WAV文件的问题~超简单,送分 JB8.0开发 javabean问题(初级) 数据库建模用什么软件? *.xmf是什么文件呀!用什么软件才能打开! 事到如今,我依然最喜欢听郑智化的歌~~ 怎么用php做站内搜索? 什么是硬盘的序列号,它是怎么来的 有谁写过医务室药品进销存方面的程序的,请指点一下!提点建议! 近乡情更怯下句是什么,同是天涯论落人的下一句是什么 点M(x,y)到定点F(0,4)的距离和它到定直线y=1的距离的比是常数2,求点M的轨迹. 如果|x-4|+|x+3|>a对任意实数x总成立,则a的取值范围是 两岸青山相对出下局同是天涯论落人下局 粉身碎骨全不怕下局他山之石下句近株者赤下句三军可夺师也下句 其身正不令而行下一句 1/x大于x,x的取值范围.a/x大于x,x的取值范围 求多项式-3X^2-2X^2y+3X^2y的值,其中X=二分之一,Y=2 半夜听君一席话,胜我去读十年书.甜言蜜语是骗子,同是天涯论落人. a分之1大于a大于0 a的取值范围是什么 中医用英语怎么说 x+3/4x=35 若a大于a分之1,则a的取值范围 表哥驾到中驾到一词有什么意思 形容对所怨恨的人做出反应是哪个词 若椭圆X²+2tX+3Y²+t²-6=0的右焦点在直线X-Y+4=0上,则实数t= 若a大于等于5分之1,小于等于5,求a+a分之1的取值范围. |a-1|=1-a,则a的取值范围是___ x+3/4x=35 ck代表什么意思 |a-1|=1-a,则a的取值范围是?为什么?我想知道原因,详细一点,谢谢 紧急求助一个几何画板课件动画.要求用几何画板做一个动画,要有创意,保留按钮. CK在公路中代表什么k1+000和CK1+000、GK1+000、表示什么意识? 若|a-1|等于1-a,则a的取值范围是什么 40w日光灯镇流器三极管BUL6825坏.能用mje13003代替吗 现在高三总复习了,可现在才知道自己无机化学没学懂,该怎么补救呢?如题 第二次世界大战后,最具世界意义的变化之一是什么,表现有哪些 等底等高的圆柱体积比圆锥体大多少? 如图,在△ABC中,AB=BC=CA=2cm,AD是边BC上的高,求:(1)AD的长;(2)△ABC的面积. 2.4x-35=x+35 圆柱体积比与他等底等高的圆锥体体积大2倍,这个题对吗 已知△ABC中,AB=Bc=CA=2,AD是边BC上的高 求:(1)AD的长 (2)△ABC的面积 二战后最具世界意义的两个变化是 杨超和张宇的高数谁讲的好些 已知△ABC中,AB=Bc=CA=2cm,AD是边BC上的高求:(1)AD的长 (2)△ABC的面积 二战后最具世界意义的变化或现象有\x05①帝国主义殖民体系的瓦解 ②各国对现代化特别是经济现代化的追求\x05③新的科技革命的兴起 ④社会主义阵营与资本主义阵营的对峙\x05A.①②④ B.② 25600精确到万位,保留一位小数是多少呢? 在△ABC中,AB=BC=CA=2厘米,AD是BC边的高.1、求AD的长.2、△ABC的面积是多少.那个cos什么的是什么 - - 第二次世界大战最具世界意义的变化(帝国主义瓦解是一点,还有几点是什么?) 在线急求歌曲名字歌词如下《同时天涯沦落人,相逢何必曾相识.》 She is a green head中green head means? 直接描写心里活动的句子 ...本是天涯沦落人,相逢何必曾相识谁说的? 在三角形ABC中AB等于15BC是14AC是13求三角形ABC的面积 .第二十题... 思密达呢 《几何画板》在中学化学教学中有何应用 铁锰铜锌 分离求救铁锰铜锌的分离鉴定方法 句容茅山一日游有时间的具体线路 三角形ABC,AB=15BC=18AC=12角A的角平分线交BC于点D求AD 欧核中心的中微子超光速是怎么回事? 一题:定积分 望GG ∫(x+2)/√(2x+1) dx积分上线4 ; 积分下线0求其定积分. 求曲面积分∫∫zdS,其中为平面x+y+z=1在第一卦限的部分 土壤微量金属元素有铁锰铜锌等,但这些也是重金属污染元素吗?这不是矛盾吗 求a的取值范围 请查《浓》是什么意思,代表什么,有繁体字吗? 请问超光速无法达到是怎么证明的 已知ab的取值范围和a的取值范围,能求b的取值范围吗 已知△ABC中,AD为BC边上的中线,AB=4,AC=3,AD=2.5,求△ABC的面积 同是天涯论落人的下一句是什么?我忘了`` 要第2节 欧姆定律及其应用的自主演练A 繁体字代表了什么 华人要求辱华美媒体道歉“甲壳虫”主唱故居获拍77万 列侬遗美国再发灭门惨案 狂徒强杀前女友一家约旦谴责以色列政府决定在耶路撒冷兴建叙利亚副总理贾米勒被解职都江堰拍到野生大熊猫视频:倒立撒尿圈美情报高官供出欧洲盟友 中国5城市上出差“一夜情”伤脸 澳最高法:不算工普京酷爱百达翡丽 萨科齐最爱Prad津巴布韦男蝉联“最丑先生”美男子遭遇车祸脑部创伤不能交流 女友调查总结女性二十“怕”普京力压奥巴马当选《福布斯》全球最有格鲁吉亚警告:别政治化冬奥会法国情侣将女婴弃于轿车后备厢 涉虐待媒体称比尔·盖茨西雅图豪宅的新邻居多《斯大林格勒》曾欲邀周润发,片酬过高美国被爆在驻华使领馆搞监听 北京上海王毅与福田康夫会谈引关注 日媒称或成意邮轮沉没事故发生时船长与情人在船上中国将继续积极支持和参与联合国维和行两个人一台戏照样演出爆棚效果三车追尾 消防员紧急破拆救出17人天津爆炸事件消防员素描:那些消防战士陈菊坐镇蔡英文阵营 洪秀柱:朱立伦不广西防城港一会所发生命案致2死4伤 天津爆炸现场仍有浓烟 武警官兵待命(中国高速铁路展在印尼雅加达举办香港《明报》前总编被砍案 陪审团一致许其亮:要彻底肃清郭伯雄徐才厚流毒签玻璃奥登太冒险?江苏经理:炒股还有中新社记者直击天津滨海新区爆炸事故现马里首都发生枪击事件 致2名警察受伤日本前地方法院院长反对安保法 批安倍天津爆炸事故:一牺牲消防战士结婚刚1天津滨海区长:爆炸原因暂时说不太准我为劳动者点赞之岳淑民:全心全意为患平顶山市郊联社深化法治理念构筑坚实“在泰文明旅游 先从机场做起天津滨海爆炸事故中转发最多的微博苏宁注册“818发烧”商标 电商造节刘晓东:关于中国报道的美国华人视角
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘