資源描述:
《孫鑫vc++講座筆記》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、孫鑫VC++講座筆記孫鑫VC++講座筆記-(1)Windows程序內(nèi)部運行機制選擇自hbyufan的Blog關(guān)鍵字孫鑫VC++講座筆記-(1)Windows程序內(nèi)部運行機制出處1,windows程序設(shè)計是種事件驅(qū)動方式的程序設(shè)計,主要基于消息的。當(dāng)用戶需要完成某種功能時,需要調(diào)用OS某種支持,然后OS將用戶的需要包裝成消息,并投入到消息隊列中,最后應(yīng)用程序從消息隊列中取走消息并進行響應(yīng)。2,消息結(jié)構(gòu):typedefstructtagMSG{//msgHWNDhwnd;//接收消息的窗口句柄。和哪個窗口相關(guān)聯(lián)。UINTmessage;//消息標(biāo)識。消息本身是什么。WPARAM
2、wParam;//消息的附加信息。具體取決于消息本身。LPARAMlParam;DWORDtime;//消息投遞時間。POINTpt;//消息投遞時,光標(biāo)在屏幕上的位置。}MSG;3,消息隊列:每個應(yīng)用程序OS都為它建立一個消息隊列,消息隊列是個先進先出的緩沖區(qū),其中每個元素都是一個消息,OS將生成的每個消息按先后順序放進消息隊列中,應(yīng)用程序總是取走當(dāng)前消息隊列中的第一條消息,應(yīng)用程序取走消息后便知道用戶的操作和程序的狀態(tài),然后對其處理即消息響應(yīng),消息響應(yīng)通過編碼實現(xiàn)。4,使用VC編程除了良好的C基礎(chǔ)外還需要掌握兩方面:一,消息本身。不同消息所代表的用戶操作和應(yīng)用程序的狀態(tài)
3、。二,對于某個特定的消息來說,要讓OS執(zhí)行某個特定的功能去響應(yīng)消息。5,Window程序入口:intWINAPIWinMain(HINSTANCEhInstance,//當(dāng)前事例句柄。HINSTANCEhPrevInstance,//先前事例句柄。LPSTRlpCmdLine,//命令行指針intnCmdShow//(窗口)顯示的狀態(tài));說明:WinMain函數(shù)是Windows程序入口點函數(shù),由OS調(diào)用,當(dāng)OS啟動應(yīng)用程序的時候,winmain函數(shù)的參數(shù)由OS傳遞的。6,創(chuàng)建一個完整的窗口需要經(jīng)過下面四個操作步驟:一,設(shè)計一個窗口類;如:WNDCLASSwndcls;二,注
4、冊窗口類;如:RegisterClass(&wndcls);三,創(chuàng)建窗口;如:CreateWindow(),CreateWindowEX();四,顯示及更新窗口。如:ShowWindow(),UpdateWindow();說明:創(chuàng)建窗口的時候一定要基于已經(jīng)注冊的窗口類.7,Windows提供的窗口類:typedefstruct_WNDCLASS{UINTstyle;//窗口的類型WNDPROClpfnWndProc;//窗口過程函數(shù)指針(回調(diào)函數(shù))intcbClsExtra;//窗口類附加字節(jié),為該類窗口所共享。通常0。intcbWndExtra;//窗口附加字節(jié)。通常設(shè)為
5、0。HANDLEhInstance;//當(dāng)前應(yīng)用程序事例句柄。HICONhIcon;//圖標(biāo)句柄LoadIcon();HCURSORhCursor;//光標(biāo)句柄LoadCursor();HBRUSHhbrBackground;//畫刷句柄(HBRUSH)GetStockObject();LPCTSTRlpszMenuName;//菜單名字LPCTSTRlpszClassName;//類的名字}WNDCLASS;8,窗口類注冊:ATOMRegisterClass(CONSTWNDCLASS*lpWndClass//addressofstructurewithclass//da
6、ta);9,創(chuàng)建窗口:HWNDCreateWindow(LPCTSTRlpClassName,//pointertoregisteredclassnameLPCTSTRlpWindowName,//pointertowindownameDWORDdwStyle,//windowstyleintx,//horizontalpositionofwindowinty,//verticalpositionofwindowintnWidth,//windowwidthintnHeight,//windowheightHWNDhWndParent,//handletoparentoro
7、wnerwindowHMENUhMenu,//handletomenuorchild-windowidentifierHANDLEhInstance,//handletoapplicationinstanceLPVOIDlpParam//pointertowindow-creationdata);10,顯示和更新窗口窗口:BOOLShowWindow(HWNDhWnd,//handletowindowintnCmdShow//showstateofwindow);BOOLUpdateWindow(HWNDhWnd/