孫鑫VC++講座筆記

字號(hào):

孫鑫VC++講座筆記
    -(1)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)通過編碼實(shí)現(xiàn)。
    4,使用VC編程除了良好的C基礎(chǔ)外還需要掌握兩方面:
    一,消息本身。不同消息所代表的用戶操作和應(yīng)用程序的狀態(tài)。
    二,對(duì)于某個(gè)特定的消息來說,要讓OS執(zhí)行某個(gè)特定的功能去響應(yīng)消息。
    5,Window程序入口:
    int WINAPI WinMain(
    HINSTANCE hInstance, // 當(dāng)前事例句柄。
    HINSTANCE hPrevInstance, // 先前事例句柄。
    LPSTR lpCmdLine, // 命令行指針
    int nCmdShow // (窗口)顯示的狀態(tài)
    );
    說明: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)過下面四個(gè)操作步驟:
    一,設(shè)計(jì)一個(gè)窗口類;如:WNDCLASS wndcls;
    二,注冊(cè)窗口類; 如:RegisterClass(&wndcls);
    三,創(chuàng)建窗口; 如:CreateWindow(),CreateWindowEX();
    四,顯示及更新窗口。如:ShowWindow(),UpdateWindow();
    說明:創(chuàng)建窗口的時(shí)候一定要基于已經(jīng)注冊(cè)的窗口類.