青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天地之靈學(xué)習(xí)小組
我們學(xué)習(xí)小組的OpenGL學(xué)習(xí)筆記 大家一定要互相折磨呀~~
posts - 150,  comments - 156,  trackbacks - 0
天地之靈16:11:17
然后呢,說(shuō)一個(gè)最最最特殊的消息  
天地之靈16:11:21
WM_QUIT  
孫婷16:11:22
?  
天地之靈16:11:36
這是唯一一個(gè)跟窗口沒(méi)有關(guān)系的消息  
天地之靈16:11:44
它表示:這個(gè)程序要結(jié)束了  
天地之靈16:12:14
那么,最外面我們一開(kāi)始那個(gè)循環(huán),就應(yīng)該結(jié)束了  
天地之靈16:12:39
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

while( true )
{      GetMessage(&msg,NULL,0,0));
TranslateMessage(&msg);
DispatchMessage(&msg);
}

回到婷婷剛才的問(wèn)題  
天地之靈16:13:11
GetMessage的作用就是:等待一個(gè)消息。如果這個(gè)消息是WM_QUIT,那么返回FALSE。否則返回TRUE  
wtt PureMilk16:13:52
明白
天地之靈16:13:54
所以它們的區(qū)別就是,前面一個(gè)是標(biāo)準(zhǔn)的,當(dāng)收到WM_QUIT消息的時(shí)候,循環(huán)結(jié)束,正常退出程序。
而后面那個(gè),因?yàn)椴荒芙邮躓M_QUIT消息,所以永遠(yuǎn)不會(huì)結(jié)束  
天地之靈16:14:40
WM_QUIT的作用糖糖明白了嗎  
wtt PureMilk16:14:52
等一下又不明白了
天地之靈16:14:57
 
孫婷16:15:08
恩呢 
天地之靈16:15:16
哪里不明白了 
wtt PureMilk16:15:30
在我們的WindowProc里面是不會(huì)出現(xiàn)WM_QUIT的是嗎
天地之靈16:15:37
是的。 
天地之靈16:15:43
WM_QUIT是唯一一個(gè)與窗口無(wú)關(guān)的消息 
wtt PureMilk16:15:44
那它是怎么來(lái)的呢
孫婷16:15:52
WM_QUIT。。是不是就相當(dāng)于我按下esc或者alt+f4的時(shí)候然后處理消息就推出了。。關(guān)了窗口了 
天地之靈16:15:56
它的來(lái)源是PostQuitMessage函數(shù) 
天地之靈16:16:05
糖糖:不完全是。 
wtt PureMilk16:16:09
啊我知道了
天地之靈16:16:18
其實(shí),當(dāng)你按下Alt+F4的時(shí)候,分為三個(gè)步驟 
wtt PureMilk16:16:20
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的結(jié)束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
天地之靈16:16:35
1、系統(tǒng)發(fā)出WM_CLOSE,表示用戶試圖關(guān)閉窗口 
天地之靈16:16:49
當(dāng)然,這時(shí)候你可以彈一個(gè)提示確認(rèn)一下 
wtt PureMilk16:16:57
MessageBox(hwnd,"是否真的結(jié)束?","weixin",MB_YESNO))
天地之靈16:17:13
2、DestroyWindow,真的關(guān)閉窗口,發(fā)出一個(gè)WM_DESTORY 
天地之靈16:17:32
3、如果這個(gè)窗口關(guān)閉就意味著程序結(jié)束,那么處理函數(shù)里發(fā)出一個(gè)PostQuitMessage 
天地之靈16:17:42
然后GetMessage返回FALSE,程序結(jié)束 
wtt PureMilk16:18:06
徹底明白
孫婷16:18:36
太神奇了 
天地之靈16:18:52
好,還有兩個(gè)內(nèi)容,第一節(jié)課就結(jié)束了 
天地之靈16:19:07
內(nèi)容1是:DefWindowProc 
天地之靈16:19:32
實(shí)際上系統(tǒng)發(fā)出的消息非常非常的多,種類十分十分復(fù)雜 
天地之靈16:19:40
而我們實(shí)際上只關(guān)心我們需要關(guān)心的消息 
天地之靈16:19:56
而對(duì)于我們不關(guān)心的消息,如果我們不做處理,有時(shí)候就會(huì)出問(wèn)題 
天地之靈16:20:12
比如
case WM_CLOSE:
   return;
窗口就關(guān)不掉 
天地之靈16:20:33
對(duì)于這一類消息,我們通常是希望讓W(xué)indows幫我們處理 
天地之靈16:20:42
換句話說(shuō),“一般的窗口應(yīng)該怎么做,就怎么做” 
天地之靈16:20:53
這就是DefWindowProc的作用 
天地之靈16:21:08
舉例來(lái)說(shuō),它會(huì)在WM_CLOSE的時(shí)候自動(dòng)DestoryWindow 
wtt PureMilk16:21:15
真的耶
wtt PureMilk16:21:22
原來(lái)還是關(guān)掉了
天地之靈16:22:22
另外,DefWindowProc也是一個(gè)標(biāo)準(zhǔn)的WindowProc 
天地之靈16:22:53
換句話說(shuō),如果你什么消息都不想自己處理,你可以直接把DefWindowProc作為窗口類的WindowProc 
天地之靈16:23:25
內(nèi)容2:PeekMessage 
天地之靈16:23:39
我們知道GetMessage的意思是“等著一個(gè)消息的發(fā)生” 
天地之靈16:23:57
而我們?cè)谶€沒(méi)有消息發(fā)生的時(shí)候就什么也不能做了 
天地之靈16:24:36
而對(duì)于游戲來(lái)說(shuō),我們要求在沒(méi)有消息發(fā)生的時(shí)候,不斷地重新畫整個(gè)畫面 
天地之靈16:25:01
所以我們不能被GetMessage占住 
wtt PureMilk16:25:15
有道理
天地之靈16:25:21
PeekMessage的意思是:
如果有消息需要處理,返回TRUE,否則返回FALSE 
天地之靈16:26:07
另外它的參數(shù)有很多種,比如這個(gè)被取出的消息是否從消息隊(duì)列中清除 
天地之靈16:27:21
所以,我們可以寫
while (true)
{
   if (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
     Tranlate
      Dispatch()
   }
   else
   {
      doSomething();
      Sleep(0);
   }

天地之靈16:27:43
Sleep(0);的目的是讓出CPU控制權(quán),使得其他程序可以流暢運(yùn)行,詳細(xì)的內(nèi)容以后再講解 
wtt PureMilk16:28:03
耶,那豈不是又像我剛寫的那樣關(guān)不掉了
天地之靈16:28:12
是的 
天地之靈16:28:29
PeekMessage的一個(gè)不同的地方就是,它收到WM_QUIT時(shí)不會(huì)做什么特殊處理 
天地之靈16:28:40
我們要自己來(lái)做這個(gè)處理 
天地之靈16:28:57
while (true)
{
   if (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
     Tranlate
      Dispatch()
   }
   else
   {
      doSomething();
      Sleep(0);
   }

天地之靈16:29:56
另外,我讀過(guò)的代碼里,有許多程序沒(méi)有這個(gè)else。婷婷能分析下這樣會(huì)有什么不好么? 
天地之靈16:30:16
while (true)
{
   if (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
     Tranlate
      Dispatch()
   }
   doSomething();
   Sleep(0);
}

他們這么寫 
wtt PureMilk16:30:24
cpu占用率比較高?
天地之靈16:30:29
不是 
天地之靈16:30:34
仔細(xì)想想 
天地之靈16:31:13
答案是,這樣的代碼每次只能處理一個(gè)消息 
天地之靈16:31:19
然后就進(jìn)入了doSomething 
wtt PureMilk16:31:44
哦……
天地之靈16:31:47
1、如果doSomething是個(gè)非常慢的函數(shù),比如渲染圖形,那么對(duì)消息的處理也會(huì)很慢很慢 
wtt PureMilk16:31:56
知道了
天地之靈16:32:02
積壓的消息不能及時(shí)處理,就容易被windows認(rèn)為沒(méi)有響應(yīng) 
wtt PureMilk16:32:04
啊好有意思啊
天地之靈16:32:14
2、最壞的情況,如果doSomething里每次都發(fā)出了一個(gè)消息 
天地之靈16:32:30
那么消息就永遠(yuǎn)處理不完了,最后程序就會(huì)出現(xiàn)錯(cuò)誤 
wtt PureMilk16:32:38
嗯~
wtt PureMilk16:33:02
哇貓我自己學(xué)的話要學(xué)多久才能明白這一點(diǎn)哦
天地之靈16:33:19
while (true)
{
   if (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
     Tranlate
      Dispatch()
   }
   else
   {
      doSomething();
      Sleep(0);
   }
}


while (true)
{
   while (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
     Tranlate
      Dispatch()
   }
   if (msg.message == WM_QUIT) break;
   doSomething();
   Sleep(0);
}

這兩段代碼卻是等價(jià)的 
天地之靈16:34:05
第二段代碼里把if改為了while,意思就是:把所有的消息處理完,然后才做我想做的事情 
wtt PureMilk16:34:24
嗯~~明白
天地之靈16:34:39
另外,if/while (PeekMessage(xxxx, xxx, PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
這個(gè)比較有時(shí)候比較討厭,我們可以更“優(yōu)雅”的來(lái)寫 
wtt PureMilk16:35:00
怎么個(gè)優(yōu)雅法?
天地之靈16:35:23
if/while (PeekMessage(xxxx, xxx, PM_NOREMOVE))
   {
      if (GetMessage(xxx, xxx))
      {
         Tranlate
         Dispatch
      }
      else
         break; 
wtt PureMilk16:35:50
wow
天地之靈16:35:55
注意PeekMessage的參數(shù)變?yōu)榱瞬灰瞥?nbsp;
天地之靈16:36:03
然后繼續(xù)利用GetMessage的返回值 
孫婷16:36:18
這樣有什么好處呢? 
天地之靈16:36:23
比較帥 
wtt PureMilk16:36:25
漂亮
孫婷16:36:27
- -0 
天地之靈16:36:30
這個(gè)技巧我是在我遺留的早期代碼里學(xué)到的 
孫婷16:36:31
很好 
天地之靈16:36:37
我已經(jīng)忘記早期的我在哪里學(xué)到的了 
wtt PureMilk16:36:40
是很漂亮,漂亮多了
天地之靈16:37:25
 
天地之靈16:37:36
關(guān)于消息、消息循環(huán)的所有內(nèi)容都已經(jīng)講完了 
wtt PureMilk16:37:58
貓我好崇拜你喔
天地之靈16:38:14
 
孫婷16:38:24
哇卡卡卡~~~我今天會(huì)失眠。。 
wtt PureMilk16:40:58
天地之靈(402740419)  16:22:53
換句話說(shuō),如果你什么消息都不想自己處理,你可以直接把DefWindowProc作為窗口類的WindowProc

這句話的意思是,什么消息都自己動(dòng)手寫代碼嗎
天地之靈16:41:09
不是 
天地之靈16:41:23
如果你想寫一個(gè)“非常標(biāo)準(zhǔn)”的窗口,什么消息你都不需要知道 
wtt PureMilk16:41:24
那是什么都不自己動(dòng)手寫
天地之靈16:41:32
對(duì),你就可以什么都不寫 
wtt PureMilk16:41:45
哦哦哦我明白了
孫婷16:41:47
為什么呢? 
wtt PureMilk16:41:49
看錯(cuò)了
孫婷16:42:12
自己寫的和標(biāo)準(zhǔn)窗口是不一樣的么? 
wtt PureMilk16:42:16
就是連WindowProc都不要了對(duì)吧
天地之靈16:42:18
恩 
wtt PureMilk16:42:28
誰(shuí)的恩?
孫婷16:42:33
那我怎么在這個(gè)窗口做什么啊。。 
天地之靈16:42:33
恩婷婷的 
天地之靈16:42:54
有時(shí)候就什么也不做啊 
天地之靈16:43:19
一般在游戲里寫WindowProc就是為了一個(gè)WM_CLOSE一個(gè)WM_DESTORY 
天地之靈16:43:28
在很特殊的時(shí)候也許會(huì)連這兩個(gè)也用不著 
 

FeedBack:
# re: 11月9日_貓很強(qiáng)大_By PureMilk
2008-11-09 22:16 | 陳梓瀚(vczh)
真有耐心……我都是直接翻msdn的那個(gè)條目,按字母排序看的……  回復(fù)  更多評(píng)論
  
# re: 11月9日_貓很強(qiáng)大_By PureMilk
2008-11-10 08:55 | 肖赫_王婷婷_王冠_鄭燚_孫婷
@陳梓瀚(vczh)
恩貓確實(shí)很有耐心  回復(fù)  更多評(píng)論
  

<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用鏈接

留言簿(6)

隨筆分類(149)

隨筆檔案(150)

同道中人

搜索

  •  

積分與排名

  • 積分 - 50317
  • 排名 - 457

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲另类国产综合| 伊人久久av导航| 国产精品白丝jk黑袜喷水| 国产精品亚洲产品| 在线观看视频欧美| 亚洲欧美一区二区三区极速播放| 久久久久88色偷偷免费| 亚洲精品裸体| 久久av最新网址| 欧美猛交免费看| 悠悠资源网久久精品| 在线视频亚洲| 免播放器亚洲一区| 亚洲人在线视频| 欧美一区日韩一区| 欧美午夜精品久久久久久浪潮| 亚洲国产精品va在线看黑人动漫| 欧美一级专区| 亚洲视屏在线播放| 欧美日韩在线一区二区| 亚洲精品一区二区三区樱花| 另类激情亚洲| 久久精品国产综合精品| 国产日韩欧美另类| 午夜日韩视频| 一本色道久久综合亚洲精品婷婷| 欧美福利电影网| 亚洲第一色中文字幕| 久久国产主播精品| 欧美一二三区精品| 国产精品亚洲аv天堂网 | 欧美激情第1页| 伊人一区二区三区久久精品| 欧美一区二区三区电影在线观看| 日韩一级在线| 欧美日韩免费一区二区三区视频| 日韩午夜av在线| 亚洲精品午夜精品| 欧美乱大交xxxxx| 99热在线精品观看| 日韩午夜精品| 国产精品每日更新在线播放网址| 午夜精品电影| 久久久久国产精品麻豆ai换脸| 黄色成人在线网站| 欧美好骚综合网| 欧美日韩国语| 欧美在线视频a| 久久久伊人欧美| 亚洲国产精品一区二区www| 免费一级欧美片在线观看| 欧美主播一区二区三区美女 久久精品人 | 91久久久精品| 亚洲激情电影中文字幕| 欧美屁股在线| 亚洲影院在线| 欧美在线不卡视频| 在线欧美亚洲| 亚洲精品在线二区| 国产欧美精品日韩| 欧美www在线| 欧美日韩国产一级| 久久精品2019中文字幕| 久久av一区二区三区漫画| 国产精品一区二区男女羞羞无遮挡 | 欧美国产日产韩国视频| 亚洲视频香蕉人妖| 亚洲综合色噜噜狠狠| 激情另类综合| 日韩一级在线| 一区在线播放视频| 夜夜夜精品看看| 在线看不卡av| 亚洲天堂免费在线观看视频| 伊人久久大香线蕉av超碰演员| 亚洲精品国产精品乱码不99按摩 | 亚洲三级国产| 午夜天堂精品久久久久| 亚洲乱码日产精品bd| 一区二区三区免费看| 国产情人综合久久777777| 亚洲激情在线| 国产一区二区成人久久免费影院| 久久一区视频| 老妇喷水一区二区三区| 亚洲欧美卡通另类91av| 狼狼综合久久久久综合网 | 亚洲高清不卡在线| 国产日韩精品在线| 亚洲精品老司机| 在线观看日韩av电影| 亚洲专区在线| 亚洲国产精品女人久久久| 亚洲片在线观看| 欧美系列精品| 欧美福利影院| 国产一区成人| 最新国产精品拍自在线播放| 狠狠色狠色综合曰曰| 亚洲高清视频在线| 在线观看成人av| 久久国产欧美| 久久美女性网| 国产在线麻豆精品观看| 午夜免费电影一区在线观看| 亚洲欧美色一区| 欧美成人一品| 亚洲电影免费观看高清完整版| 国产色婷婷国产综合在线理论片a| 日韩亚洲在线| 亚洲曰本av电影| 国产精品美女久久久久久免费| 99综合精品| 亚洲欧美日韩第一区| 国产精品国码视频| 一区二区三区国产盗摄| 亚洲专区一区| 国产欧美一区二区精品忘忧草| 亚洲午夜日本在线观看| 亚洲综合色激情五月| 国产精品v日韩精品| 9l国产精品久久久久麻豆| 亚洲一区二区三区精品在线| 欧美亚州韩日在线看免费版国语版| 亚洲乱码国产乱码精品精可以看| 亚洲精品乱码久久久久久蜜桃麻豆| 美女主播精品视频一二三四| 国产麻豆精品theporn| 欧美多人爱爱视频网站| 亚洲精品久久久久久下一站| 久久婷婷色综合| 亚洲第一网站免费视频| 亚洲精选在线| 国产精品h在线观看| 亚洲欧美激情在线视频| 久热国产精品视频| 亚洲麻豆av| 国产精品久久一区二区三区| 欧美有码在线观看视频| 欧美国产高潮xxxx1819| 一区二区三区视频在线播放| 国产精品视频成人| 久久免费精品视频| 亚洲久久一区| 久久久久国产精品人| 亚洲欧洲在线视频| 国产精品高潮久久| 欧美专区在线播放| 最新高清无码专区| 久久国产日韩欧美| 亚洲日本一区二区| 国产精品久久精品日日| 久久国产精品第一页| 亚洲精品久久久蜜桃| 久久精品91| 99精品视频一区二区三区| 国产欧美一区视频| 欧美另类69精品久久久久9999| 午夜视频一区在线观看| 亚洲黄色影院| 久久精品水蜜桃av综合天堂| 亚洲人成在线观看网站高清| 国产精品资源| 欧美精品久久久久久久免费观看| 亚洲天堂av在线免费观看| 欧美成人69av| 欧美一级在线亚洲天堂| 亚洲人成亚洲人成在线观看图片| 欧美另类专区| 亚洲一区在线观看免费观看电影高清| 亚洲一区观看| 国产精品久久久久久久免费软件 | 国产精品美女主播在线观看纯欲| 久久久久欧美精品| 中日韩美女免费视频网站在线观看| 欧美88av| 久久久久综合一区二区三区| 亚洲综合色丁香婷婷六月图片| 亚洲国产精品毛片| 国产一区91| 国产精品一页| 国产精品大全| 欧美日韩亚洲一区三区| 欧美成人日本| 久久夜色精品国产欧美乱| 香港久久久电影| 亚洲一区在线视频| 9久草视频在线视频精品| 亚洲国产天堂久久综合| 欧美不卡视频一区发布| 久久精品夜色噜噜亚洲aⅴ| 西西裸体人体做爰大胆久久久| 中文在线资源观看网站视频免费不卡 | 国产精品你懂的| 国产日韩一区二区三区| 国产资源精品在线观看| 亚洲成人在线网| 亚洲免费成人av| 香蕉久久夜色精品| 免费看成人av|