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

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

编辑:说三道四文库 发布时间:2017-08-16 09:30
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( );

          
借助API Telegram能否成为第二个WhatsApp 机器学习也感性:90后软妹纸的编程之路 为安防与视频监控而生 西数紫盘首发 秘闻:鲍尔默离职,或与坚持收购诺基亚有关 【OSTC讲师专访】Thomas Yao:开源社区最缺有能力的领导者 对比MySQL,你究竟在什么时候更需要MongoDB 不以“大小”论英雄,对比IBM、AWS,谁才是Hadoop界的MVP? 参加“我们都用JIRA”视频征集大赛 赢取乐视TV超级电视 开发者下一个待开发市场:印度 一周消息树:80%开发者背井离乡,70%经常加班 移动周报:最受欢迎的跨平台开发工具推荐 研发周报:Mt.Gox破产,都是错误编程惹的祸 数据挖掘+人工智能,教育定制化下的学霸量产 通过700合作伙伴的进一步细分,Google变得越来越像微软 一周热点:高薪必备:Hadoop求职者的6大攻略 谷歌Android主管:两周内为开发者推出可穿戴设备SDK 【OSTC讲师专访】魏子钧: “中国式开源”没有“然后” 揭秘CarPlay欲将颠覆汽车产业的真相 联想王岳源:利用Web App推动互联网转型 IT经理人:提高团队工作效率的11个方法 30美元一小时,数据科学家的收入是否太低? 选择Go语言的12个理由 动鱼数码携三款大作参战Unity游戏及应用大赛 从Google、Apple、Dropbox、Twitter和Square学到的管理哲学 软件开发就像炒股,关键看你怎么选股票! iOS 7.1正式版:新增CarPlay连接功能、完美支持iPhone 4 【OSTC讲师专访】马全一:Docker,Hadoop的竞争者来了! 福布斯:全球那些富可敌国的科技大佬们 抢工作、争资源,如此聪明的AI你拿什么阻止? iUI:移动Web应用开发必备的开源框架 支持iOS 7.1!苹果发布Xcode 5.1更新 高分求助!请问如何做出不规则窗体及按钮等 什么是FSO啊! C/S,如何做提醒功能? 打不开access数据表,高手帮帮我吧~~!! [求助]关于聊天室的编写遇到的问题 请教关于TImageList中存储多幅图片的问题 请教WaitForSingleObject()函数的用法! 急问题,解决另外有分 哪有java反编译器下载(再线等)? 各位帮忙,火烧眉毛,老板让我用ASP.NET 请教WaitForSingleObject()函数的用法! Rave怎么在程序中把值传到Rave中 ,比如我要把传表头到Rave中? 做毕业设计,webservice的内容,能列几个可行的题目吗? 请教WaitForSingleObject()函数的用法! 关于KDevelop的问题???? 高分相送(打印问题) 请教WaitForSingleObject()函数的用法! 哪里有名家讲座录音下载呀? 有谁能提供吉他学习或者小提琴学习的软件源码?(在线等待!) 请教WaitForSingleObject()函数的用法! Rave怎样让他不弹出设置框,直接打印 一个好东东! 关于树的几个小问题 双绞线只用4芯却有8芯的问题,谢谢! createwindow()?? 号外,号外,号外,号外!巨悬赏! 急救! 谁有《征霸天下》那篇文章,想温习一下 谢谢:) 请教高手:WIN32中,软盘驱动器的参数放什么地方? flash里相对路径的格式是什么? @Subset(@DBName,1)取得服务器名,与@Name([Abbreviate];@Subset(@DbName; 1))取得的服务器名有什么不同呀? 请问一个复合sql语句,能不能这样写?大侠们请进! 如何删除sqlserver2000自带的数据库 kylix的诸多问题! 高分求《自适应软件开发》 中文电子版 献给WSASock初学的朋友。。 C++Builder附带的SQL语句引擎中,数据类型定义及数据类型转换的问题。 数字,请大家说说是什么意思!!! 请问,高手 excel操作的问题(!!!) 为什么我的数据执行到了最后一步,但数据却没有改变呢? 新手问一个问题。 初手求教在VC6.0下如何做C的工程文件? 各位老大,你们好,我如何把窗口的全部控件都设为不可用,既Enabled=false win 2000 pro & tomcat 4.0接受表单的中文值都变成了?????此号,怎么回事 谁可以帮忙解决一下 一个很棘手的问题,快帮帮我! 为什么建立一个SOCKET时,非要放一个UDP控件在上面呢?? Runtime.getRuntime().freeMemory()/maxMemory() 内存问题 在对话框中如何实现可在Edit控件中进行多行编辑(类似于文档编辑)??? 最近学习 java , 偶获心得, 贴出来与大家分享. 关键字: 事件处理, 匿名内部类 I don't want know why is it 什么英语歌里有这一句I don't want to do anything at this moment 节奏大师SSS是什么意思 want to know why he did this want 是谓语为什么说why he did this 做know的宾语呢i want to know why he did this 明明want 是谓语,为什么新概念第一册第139课文里面说why he did this 做know的宾语呢 no dream,no borther什么意思 sss啥意思? What is the ____ (far) star we can see with our own eyes?farther or further? no sss啥意思啊 I don't know _______________.A.why do this B.why having done this C.why doing thisD.why we ought to do this请问,选什么,为什么呢? No hope No dream No dare No pain这什麼 意思? Americans depend much on their cars.这句话有错吗? Email status:Unverified Email validation的翻译是: 英语老师布置的命题作文.No dream is big 求大神写篇.5 3 4 8 1 2 1 4 0@q q .c o m. CaII me when u arrive翻译成中文 翻译一下for me,what counts the most are the third nudergraduate and vivi have no dream--怎么翻译好? he send me an e-mail,____(hope) to get further information为什么不能用having hoped这个不是动作发生在谓语动词之前的吗 catch the bug from Tom.该怎么翻译好?急等 I will love you forever,but do you ()the answer,she sent a second e-mail to the company for further information.为什么要填Not having received,而不是not receiving?求讲解 I don't want to perish like a feeling horse如何翻译? If you were to design a wacth ,what would it be like?Describe it. a.get through to b.get across to c.get through d.get acrossdid you speech_the audience? I think the meeting has started for several minutes.这句话怎么错了? when du people usually celebrate for New Year look across to和look across的区别look across to look across是什么意思 英语翻译翻译标题 When do the people kiss in your culture?Why?Write a short paragraph based on the questions. Traditionaldiets often have too much fat and too many calories for the 21st-centuryperson.是什么意 改为一般疑问句:The meeting has been on for fifteen minutes.The meeting has been on for fifteen minutes.改为一般疑问句._ the meeting _ _ for fifteen minutes?_代表一条横线,这是人教版(仁爱英语)九年级上册练习册 The skating marathon has been going for five hours now,and several skaters are still skatingseveral=A、a little B 、a few C、a bit of D、few you have too much yin,so you often feel____weak and tired A.too much B.much too The meeting has been on for fifteen minutes.改为同义句 I Don't Want To Become This Way的中文意思 You have ___ yin,so you often feel ___ weak and tired.()填too much或much too some students are good at sports but others 英语翻译he people running and all the bulls hurtling along behind them.Unfortunately,he couldn't move in the middle of the most dangerous street in the chase,Estafeta Street. The skating marathon has been going for five hours now中going表示什么,可以替换吗 Feel free to contact us if further enquiry is require是什么意思 Cause clouds are everything翻译 I Don't Want To Become This Way I wanna to put you in my heart .but I scared about that if this is just a dream.It can't come true我想把你放在我心里 但是我害怕这仅仅只是一个梦,不能成真 he has ____ here for hours A been B been away 哪个正确为什么不选B因为有here吗 The,has,skating,marathon,been,for,going,hours,five,now.(连词成句) this time,daydream come true.是什么中文意思 cos i do not want this love to ever end I Don't Want To Become This Way But so dull Day By Day 这是什么意思呀谢谢 keep practicing ,and your english will improve如何翻译?will improve一般将来时will do? —How long has the foreigner _C__ here?—He has ____ here for several hours.A arrived,come B come,got C stayed,been D got,been The skating marathon has been going for five hours.改为同义句 The skating marathon_________five hours__________. you can come true your dream in this new year! He has been here for two weeks改同义句He has been here ( )two weeks( ) Don't want to live this way,very tired 以“从日本灾难 我们有何感想”为主题 写一篇500字作文 Will this ever end?这会结束吗?这里this ever 是什么来的, The skating marathon has been going for give hours now.求翻译这里的going是什么意思? i'd like some chichen 对划线部分提问为什么我填what would 是错的,答案是does I want to die at this SSS的含义ssssssssssssssssssssssssssss 欧洲央行开始对欧元区124家银行进行德两大政党举行组阁谈判 默克尔称社民沙特暗示拒任“非常”是针对美国 恐与俄外交部:叙之友文件旨在煽动破坏叙问浙江宁波出台国内首个网购争议处理办法杭州破获特大涉毒涉枪案 缴获冰毒2.网友分析杭州地铁4号线开通后1号线票北极理事会秋季高官会聚焦负责任开发北被砍右手男孩:对“爸爸”没有恨 惦记被砍右手男孩:看到水果刀赶紧闭眼 看两部委取消314项省级行政事业性收费去30个国家可“说走就走” 本月底毛日本进入胖女时代 专家称或因对瘦人审阿根廷政府宣布萨缅托城铁完全由国家运英一新郎忘预约教堂 为遮丑谎称有炸弹俄总统普京要求市长们多上网杭州楼市进入大营销时代 商品房库存量浙江温岭村民收获“巨无霸”番薯 重达奶茶MM棒球帅气照 青春女神美翻了英国少年考好成绩卖关子 慈父见成绩单澳大利亚蓝山火情缓解 居民返家解救被深圳6岁女童被黑衣男子抱走 两天后在番禺区食药监检查渔民新村总店不疼不管 近七成孩子口腔健康被“放养汽配城仓库起火33辆消防车扑救超6小昔日老板沦为毒贩 吸毒后飙车轧死人爱牙日义诊和优惠老赖欠债没钱还 竟栽赃债主藏毒6季“权力”算啥,“乡爱9”都快好了治口腔溃疡,先辨清虚火还是实火2元中500万?万万没想到!深圳“快乐之家”欢乐游河源深茂铁路施工奏捷江茂段2018年通车第1位隔期号不停开出铁臂鸳鸯手威震武林 抗日大刀法夜战立混沫看似皑皑白雪这段河涌真吓人青宫福彩育苗班特殊青少年可免费报读超级网剧 《画江湖之不良人》上线“心心”相惜,与你同行广州市科普自由不到两岁女童遭绑架四旬奶奶徒手夺刀救全省收费公路债务余额为3360.8亿巧借工行分期付款“减负”,提前享受品
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘