• <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>

            依舊的博客

            技術(shù)學習

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              17 Posts :: 1 Stories :: 2 Comments :: 0 Trackbacks
            關(guān)于Windows程序模型的最重要之處在于,程序是在Windows面向?qū)ο蟮捏w系結(jié)構(gòu)中運行的。

            在WinMain()函數(shù)中,程序所進行的最重要工作是注冊窗口類,從而把自定義的窗口過程提供給Windows。然后程序調(diào)用Windows創(chuàng)建和顯示窗口,由此啟動同用戶的交互過程。在消息循環(huán)中,程序不斷取得消息,但并不進行處理,而是將其發(fā)回Windows,由Windows將消息發(fā)給相應(yīng)的窗口過程。消息循環(huán)的作用在于控制生命期,如果沒有消息循環(huán),進程將立即結(jié)束。

            在較高層次上來看,一個可擴展的系統(tǒng)會給模塊提供資源和自由,而模塊應(yīng)當配合系統(tǒng)的整體結(jié)構(gòu)。程序執(zhí)行時,Windows會為其創(chuàng)建進程,分配資源,并調(diào)用WinMain()。WinMain()是進程入口,也是進程出口,在此期間進程可以做任何事情,但是為了使用Windows提供的各種便利,它必須符合Windows程序模型,將自己的運行結(jié)合到Windows環(huán)境中。作為進程出口,WinMain()決定著程序生命期。一個提供窗口過程而等待Windows調(diào)用的程序如何維持和結(jié)束自己的生命期呢,應(yīng)該由消息來決定。當進程沒有要處理的消息時,它應(yīng)該等待,所以WinMain()必須知道有沒有消息,Windows發(fā)給窗口過程的消息不能繞過WinMain();當進程收到特定的消息時,它結(jié)束生命期,所以WinMain()還應(yīng)該了解消息的內(nèi)容。這正是GetMessage()所做的,如果取不到消息就阻塞,如果取到WM_QUIT消息就返回0,結(jié)束消息循環(huán)。那么如果取到普通的消息呢,由WinMain()直接調(diào)用窗口過程不可以嗎?這種做法有悖于程序由Windows調(diào)用的基本思想,而實際上也會出現(xiàn)問題。一個窗口程序可能有很多窗口類,一些窗口類及其窗口過程是程序自定義的,另一些則是在Windows內(nèi)部定義的,程序看不到其窗口過程,比如各種控件窗口。窗口程序運行起來以后,這些窗口類互相配合,它們通信的方式就是消息。由于消息指向的窗口過程可能是自定義的,也可能是Windows內(nèi)部的,只有Windows才能把它們都送到目的地,并保持發(fā)送方式的一致性。所以WinMain()取到消息后,通過DispatchMessage()將其發(fā)回Windows,由Windows為其調(diào)用適當?shù)拇翱谶^程,直到窗口過程調(diào)用后返回Windows,DispatchMessage()才返回。(Windows調(diào)用窗口過程之后控制首先返回Windows,由WinMain()調(diào)用窗口過程之后控制保持在程序中,這種區(qū)別是否也有作用?不過經(jīng)我試驗,在一個Win32 SDK的Hello程序中改由WinMain()調(diào)用窗口過程,沒有發(fā)現(xiàn)什么問題)

             
            參考資料:

            1.《Windows程序設(shè)計》/Charles Petzold 著 北京博彥科技發(fā)展有限公司 譯 北大出版社
            posted on 2007-04-15 13:08 依舊的博客 閱讀(362) 評論(0)  編輯 收藏 引用
            亚洲嫩草影院久久精品| 精品久久久久香蕉网| 中文字幕无码久久精品青草| 一本久道久久综合狠狠爱| 国产亚洲综合久久系列| 久久亚洲国产成人影院网站| 亚洲AV无一区二区三区久久| 国产亚洲欧美成人久久片| 久久久国产精华液| 国产精品久久久久久| 精品久久久一二三区| 一本久久a久久精品综合夜夜| 中文精品99久久国产| 99久久国产综合精品网成人影院 | 久久久久亚洲精品无码网址 | 久久青青色综合| 精品久久777| 日韩av无码久久精品免费| 色99久久久久高潮综合影院| 久久99精品久久久久久久久久| 久久伊人色| 久久综合五月丁香久久激情| 久久国产乱子精品免费女| 日韩人妻无码精品久久免费一| 亚洲中文字幕伊人久久无码| 久久99精品免费一区二区| 久久精品无码一区二区三区| 99久久国产热无码精品免费| 亚洲AV日韩精品久久久久| 久久人妻少妇嫩草AV蜜桃| 热99RE久久精品这里都是精品免费| 久久综合成人网| 香蕉99久久国产综合精品宅男自| 狠狠精品久久久无码中文字幕| 日本精品久久久久中文字幕| 色偷偷888欧美精品久久久| 精品久久一区二区| www亚洲欲色成人久久精品| 国内精品伊人久久久久| 久久精品夜色噜噜亚洲A∨| 久久性生大片免费观看性|