• <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>
            We do not always find visible happiness in proportion to visible virtue

            夢幻白樺林

            SHARE

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

            公告

            常用鏈接

            留言簿(5)

            搜索

            •  

            最新隨筆

            最新評論

            閱讀排行榜

            本文主要介紹了Win32 API主消息循環(huán)的兩種處理方法:使用GetMessage方法構(gòu)造主消息循環(huán)、使用PeekMessage方法構(gòu)造主消息循環(huán)。

            (1)使用GetMessage方法構(gòu)造主消息循環(huán)
            一般應(yīng)用程序都使用用GetMessage方法構(gòu)造主消息循環(huán),該方法是獲得一條線程 的消息。對于VS2005自動生成的Win32 Windows程序上面有些不足。
            因為VS2005生成的主消息循環(huán)如下;
            // Main message loop:
            while (GetMessage(&msg, NULL, 0, 0))
            {
            if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
            {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            }
            }
            簡單看看的確沒有問題,但是當(dāng)我們?nèi)ゲ殚哅SDN文檔看到GetMessage消息時候可以看到這樣一段
            If there is an error, the return value is -1.
            所以我們應(yīng)該把上面這個主循環(huán)修改為下面這樣的形式,增加一個臨死變量。
            // Main message loop:
            BOOL bRet;//臨時變量,存儲GetMessage方法返回值
            // Main message loop:
            while ((bRet = GetMessage(&msg, NULL, 0, 0))!=0)
            {
            if(bRet==-1){
            //表示GetMessage獲得的信息有錯誤
            }
            else
            {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            }
            }

            (2)使用PeekMessage方法構(gòu)造主消息循環(huán)
            PeekMessage常常用于Windows開發(fā)游戲中,PeekMessage在處理獲得消息時候和GetMessage一樣,關(guān)鍵不同的是PeekMessage在沒有消息處理的時候還會繼續(xù)保持循環(huán)激活狀態(tài),并且繼續(xù)占用資源。
            // Main message loop:
            while (true)
            {
            if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
            if(msg.message == WM_QUIT){
            break;
            }
            else{
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            }
            //表示GetMessage獲得的信息有錯誤
            }
            else{
            //循環(huán)處理的函數(shù)

            }
            }:

            posted on 2007-02-08 20:51 colys 閱讀(1067) 評論(0)  編輯 收藏 引用

            亚洲七七久久精品中文国产| 久久精品无码av| 久久久国产精品亚洲一区| 99久久精品免费看国产一区二区三区| 亚洲?V乱码久久精品蜜桃 | 日本加勒比久久精品| 欧洲成人午夜精品无码区久久| 国产亚洲精久久久久久无码| 国产免费久久久久久无码| 尹人香蕉久久99天天拍| 久久国产成人精品麻豆| 欧美伊人久久大香线蕉综合| 99久久免费国产特黄| 青草久久久国产线免观| 91精品国产高清久久久久久io| 久久久久亚洲AV无码专区桃色 | 人妻精品久久无码专区精东影业| 97超级碰碰碰碰久久久久| 久久精品免费一区二区| 久久久久一本毛久久久| 97超级碰碰碰久久久久| 中文字幕久久精品无码| 久久亚洲中文字幕精品一区| 久久这里只精品国产99热 | 久久久久久久尹人综合网亚洲| 久久无码专区国产精品发布| 久久精品中文字幕第23页| 亚洲国产精品一区二区久久| 久久久久亚洲Av无码专| 天天爽天天狠久久久综合麻豆| 亚洲日韩欧美一区久久久久我| 国产三级观看久久| 亚洲一区中文字幕久久| 久久午夜电影网| 久久精品无码一区二区三区| 国产日产久久高清欧美一区| MM131亚洲国产美女久久| 国产精品99久久免费观看| 69SEX久久精品国产麻豆| 久久久中文字幕| 99热精品久久只有精品|