首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書(shū)資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

C++筆記:Windows程序內(nèi)部運(yùn)行機(jī)制

1,windows程序設(shè)計(jì)是種事件驅(qū)動(dòng)方式的程序設(shè)計(jì),主要基于消息的。當(dāng)用戶需要完成某種功能時(shí),需要調(diào)用os某種支持,然后os將用戶的需要包裝成消息,并投入到消息隊(duì)列中,最后應(yīng)用程序從消息隊(duì)列中取走消息并進(jìn)行響應(yīng)。
2,消息結(jié)構(gòu):
typedef struct tagmsg {     // msg
    hwnd   hwnd;     //接收消息的窗口句柄。和哪個(gè)窗口相關(guān)聯(lián)。
    uint   message;  //消息標(biāo)識(shí)。消息本身是什么。
    wparam wparam;   //消息的附加信息。具體取決于消息本身。  
    lparam lparam;
    dword  time;     //消息投遞時(shí)間。 
    point  pt;       //消息投遞時(shí),光標(biāo)在屏幕上的位置。 
} msg;

3,消息隊(duì)列:
每個(gè)應(yīng)用程序os都為它建立一個(gè)消息隊(duì)列,消息隊(duì)列是個(gè)先進(jìn)先出的緩沖區(qū),其中每個(gè)元素都是一個(gè)消息,os將生成的每個(gè)消息按先后順序放進(jìn)消息隊(duì)列中,應(yīng)用程序總是取走當(dāng)前消息隊(duì)列中的第一條消息,應(yīng)用程序取走消息后便知道用戶的操作和程序的狀態(tài),然后對(duì)其處理即消息響應(yīng),消息響應(yīng)通過(guò)編碼實(shí)現(xiàn)。

4,使用vc編程除了良好的c基礎(chǔ)外還需要掌握兩方面:
一,消息本身。不同消息所代表的用戶操作和應(yīng)用程序的狀態(tài)。
二,對(duì)于某個(gè)特定的消息來(lái)說(shuō),要讓os執(zhí)行某個(gè)特定的功能去響應(yīng)消息。

5,window程序入口:
int winapi winmain(
  hinstance hinstance,  // 當(dāng)前事例句柄。
  hinstance hprevinstance,  // 先前事例句柄。
  lpstr lpcmdline,      // 命令行指針
  int ncmdshow          // (窗口)顯示的狀態(tài)
);
說(shuō)明:winmain函數(shù)是windows程序入口點(diǎn)函數(shù),由os調(diào)用,當(dāng)os啟動(dòng)應(yīng)用程序的時(shí)候,winmain函數(shù)的參數(shù)由os傳遞的。

6,創(chuàng)建一個(gè)完整的窗口需要經(jīng)過(guò)下面四個(gè)操作步驟:
一,設(shè)計(jì)一個(gè)窗口類;如:wndclass wndcls;
二,注冊(cè)窗口類;    如:registerclass(&wndcls);
三,創(chuàng)建窗口;      如:createwindow(),createwindowex();
四,顯示及更新窗口。如:showwindow(),updatewindow();

說(shuō)明:創(chuàng)建窗口的時(shí)候一定要基于已經(jīng)注冊(cè)的窗口類.

7,windows提供的窗口類:
typedef struct _wndclass {
    uint    style;        //窗口的類型
    wndproc lpfnwndproc;  //窗口過(guò)程函數(shù)指針(回調(diào)函數(shù))
    int     cbclsextra; //窗口類附加字節(jié),為該類窗口所共享。通常0。
    int     cbwndextra; //窗口附加字節(jié)。通常設(shè)為0。
    handle  hinstance;  //當(dāng)前應(yīng)用程序事例句柄。
    hicon   hicon;      //圖標(biāo)句柄 loadicon();
    hcursor hcursor;    //光標(biāo)句柄 loadcursor();
    hbrush  hbrbackground; //畫(huà)刷句柄 (hbrush)getstockobject();
    lpctstr lpszmenuname;  //菜單名字
    lpctstr lpszclassname; //類的名字
} wndclass;

希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇

更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)等級(jí)考試欄目

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。