




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第10章C+Windows程序設(shè)計基礎(chǔ)1第第10章章 C+ Windows程序設(shè)計基礎(chǔ)程序設(shè)計基礎(chǔ) vWindows系統(tǒng)是一個基于視窗的消息驅(qū)動系統(tǒng),即使功能系統(tǒng)是一個基于視窗的消息驅(qū)動系統(tǒng),即使功能大異的大異的Windows程序都有比較規(guī)范統(tǒng)一的程序界面,如窗程序都有比較規(guī)范統(tǒng)一的程序界面,如窗口、菜單、工具條、對話框等???、菜單、工具條、對話框等。 Windows程序的設(shè)計其實程序的設(shè)計其實比較規(guī)范,但若不了解比較規(guī)范,但若不了解Windows程序的基本結(jié)構(gòu),程序調(diào)程序的基本結(jié)構(gòu),程序調(diào)度的基本方法(即消息驅(qū)動的基本原理),以及每個程序都度的基本方法(即消息驅(qū)動的基本原理),以及每個程序都
2、會用到的基本數(shù)據(jù)結(jié)構(gòu),也很難編寫出有用的會用到的基本數(shù)據(jù)結(jié)構(gòu),也很難編寫出有用的Windowsv之所以在本章介紹之所以在本章介紹API程序,就是基于上述考慮而設(shè)計的,程序,就是基于上述考慮而設(shè)計的,盡管盡管API程序設(shè)計在實際編程過程中已越來越少用了,但它程序設(shè)計在實際編程過程中已越來越少用了,但它卻是理解卻是理解Windows程序設(shè)計基本原理的最佳捷徑,因為所程序設(shè)計基本原理的最佳捷徑,因為所有有Windows程序的結(jié)構(gòu)和執(zhí)行過程最終大同于程序的結(jié)構(gòu)和執(zhí)行過程最終大同于API程序。在程序。在此基礎(chǔ)上學(xué)習(xí)此基礎(chǔ)上學(xué)習(xí)MFC及其它在及其它在Windows程序設(shè)計語言如程序設(shè)計語言如JAVA,都是
3、大有幫助的!都是大有幫助的!v“磨刀不誤砍柴功!磨刀不誤砍柴功!”,不是嗎?,不是嗎?第10章C+Windows程序設(shè)計基礎(chǔ)210.1 Windows程序設(shè)計基礎(chǔ)程序設(shè)計基礎(chǔ)vWindows系統(tǒng)的特點系統(tǒng)的特點v標(biāo)準(zhǔn)的用戶界面標(biāo)準(zhǔn)的用戶界面v多任務(wù)多任務(wù)v設(shè)備獨立性設(shè)備獨立性v動態(tài)鏈接動態(tài)鏈接v強大的內(nèi)存管理強大的內(nèi)存管理第10章C+Windows程序設(shè)計基礎(chǔ)310.1 Windows程序設(shè)計基礎(chǔ)程序設(shè)計基礎(chǔ)2. 基本術(shù)語基本術(shù)語窗口(窗口(Window)由句柄唯一標(biāo)識)由句柄唯一標(biāo)識對話框(對話框(Dialog)人機交互)人機交互圖標(biāo)(圖標(biāo)(Icon)代表某一項操作或程序的圖符)代表某一項操
4、作或程序的圖符位圖(位圖(Bitmap)用位模式形成的圖像)用位模式形成的圖像菜單(菜單(Menu)命令)命令工具欄(工具欄(ToolBar)常用的菜單項)常用的菜單項狀態(tài)欄(狀態(tài)欄(StateBar)操作狀態(tài)或操作提示)操作狀態(tài)或操作提示第10章C+Windows程序設(shè)計基礎(chǔ)410.1.1 窗口窗口窗口是Windows程序的基本單元,Windows程序的運行過程就是窗口內(nèi)部、窗口之間及窗口與用戶之間的信息交換過程。窗口通常包括菜單、工具條、滾動條、狀態(tài)欄、命令按鈕、對話框等元素。 第10章C+Windows程序設(shè)計基礎(chǔ)510.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)1. 事件事件事件是指
5、人們應(yīng)用計算機的過程中發(fā)生的操作,如事件是指人們應(yīng)用計算機的過程中發(fā)生的操作,如按下鍵盤上的某個按鍵、移動鼠標(biāo)、單擊鼠標(biāo)左鍵、按下鍵盤上的某個按鍵、移動鼠標(biāo)、單擊鼠標(biāo)左鍵、移動窗口及選擇程序菜單等操作都是事件。移動窗口及選擇程序菜單等操作都是事件。2、事件驅(qū)動、事件驅(qū)動每發(fā)生一個事件,就會產(chǎn)生一個與之對應(yīng)的特定消每發(fā)生一個事件,就會產(chǎn)生一個與之對應(yīng)的特定消息,該消息會被息,該消息會被Windows系統(tǒng)捕獲,然后將通過此系統(tǒng)捕獲,然后將通過此消息調(diào)用執(zhí)行與之對應(yīng)的程序代碼,實現(xiàn)相應(yīng)的程消息調(diào)用執(zhí)行與之對應(yīng)的程序代碼,實現(xiàn)相應(yīng)的程序功能。序功能。因為從事件發(fā)生到相應(yīng)程序代碼被調(diào)用執(zhí)行都是通因為從事
6、件發(fā)生到相應(yīng)程序代碼被調(diào)用執(zhí)行都是通過消息來實現(xiàn)的,因此事件驅(qū)動也常被稱為消息驅(qū)過消息來實現(xiàn)的,因此事件驅(qū)動也常被稱為消息驅(qū)動動第10章C+Windows程序設(shè)計基礎(chǔ)610.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)3、消息隊列、消息隊列用于存放消息的隊列,消息系統(tǒng)由用于存放消息的隊列,消息系統(tǒng)由Windows系統(tǒng)自動建立和維護。系統(tǒng)自動建立和維護。Windows消息隊列的類型消息隊列的類型v系統(tǒng)消息隊列:由系統(tǒng)消息隊列:由Windows系統(tǒng)維護管理的消系統(tǒng)維護管理的消息隊列,每當(dāng)有消息發(fā)生時,該消息將首先被存息隊列,每當(dāng)有消息發(fā)生時,該消息將首先被存入系統(tǒng)消息隊列。入系統(tǒng)消息隊列。v應(yīng)用程
7、序消息隊列:應(yīng)用程序消息隊列:Windows系統(tǒng)會為每個應(yīng)系統(tǒng)會為每個應(yīng)用程序建立一個獨立的消息隊列,用于存放該應(yīng)用程序建立一個獨立的消息隊列,用于存放該應(yīng)用程序的消息。用程序的消息。第10章C+Windows程序設(shè)計基礎(chǔ)710.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)4、消息循環(huán)、消息循環(huán)每個應(yīng)用程序都有一個循環(huán)機構(gòu),該循環(huán)機構(gòu)則不每個應(yīng)用程序都有一個循環(huán)機構(gòu),該循環(huán)機構(gòu)則不斷地重復(fù)查看程序自身的消息隊列,如果隊列中斷地重復(fù)查看程序自身的消息隊列,如果隊列中有消息,就將其取出并執(zhí)行相應(yīng)的消息處理代碼,有消息,就將其取出并執(zhí)行相應(yīng)的消息處理代碼,這個處理消息的循環(huán)機構(gòu)稱為消息循環(huán)。這個處理
8、消息的循環(huán)機構(gòu)稱為消息循環(huán)。 第10章C+Windows程序設(shè)計基礎(chǔ)810.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)5、Windows程序調(diào)度的基本原理程序調(diào)度的基本原理每個每個Windows程序啟動后,就等待用戶在其窗口中程序啟動后,就等待用戶在其窗口中進行操作。每個操作會引發(fā)一個事件,就會產(chǎn)生一進行操作。每個操作會引發(fā)一個事件,就會產(chǎn)生一個與之對應(yīng)的特定消息。該消息會被個與之對應(yīng)的特定消息。該消息會被Windows系統(tǒng)系統(tǒng)捕獲。捕獲。Windows系統(tǒng)對捕獲的消息進行分析后,會系統(tǒng)對捕獲的消息進行分析后,會將消息傳遞給產(chǎn)生它的應(yīng)用程序的消息隊列,每個將消息傳遞給產(chǎn)生它的應(yīng)用程序的消息隊
9、列,每個應(yīng)用程序的消息循環(huán)機構(gòu)不斷地重復(fù)查看它自已的應(yīng)用程序的消息循環(huán)機構(gòu)不斷地重復(fù)查看它自已的消息隊列,如果隊列中有消息,就將其取出并執(zhí)行消息隊列,如果隊列中有消息,就將其取出并執(zhí)行相應(yīng)的消息處理代碼,相應(yīng)的消息處理代碼, 如果隊列中沒有消息就等待,當(dāng)隊列中有消息時就又處理它,如此循環(huán)往復(fù),直至程序結(jié)束。第10章C+Windows程序設(shè)計基礎(chǔ)910.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)6、事件驅(qū)動及消息循環(huán)的基本原理第10章C+Windows程序設(shè)計基礎(chǔ)1010.1.2 事件驅(qū)動和消息響應(yīng)事件驅(qū)動和消息響應(yīng)7、DOS和Windows程序執(zhí)行方式對比第10章C+Windows程序設(shè)計基
10、礎(chǔ)1110.1.3 Windows程序的構(gòu)成1、Windows程序的組成程序的組成v程序代碼程序代碼程序代碼是程序的主體,用于實現(xiàn)程序的功能程序代碼是程序的主體,用于實現(xiàn)程序的功能v資源資源Windows程序具有標(biāo)準(zhǔn)規(guī)范的應(yīng)用程序界面,每個程序具有標(biāo)準(zhǔn)規(guī)范的應(yīng)用程序界面,每個Windows程程序常常包含了許多相同的組成元素,如菜單、對話框、工具欄、序常常包含了許多相同的組成元素,如菜單、對話框、工具欄、應(yīng)用程序圖標(biāo)、鼠標(biāo)光標(biāo)、程序版本信息等,這些組成元素被應(yīng)用程序圖標(biāo)、鼠標(biāo)光標(biāo)、程序版本信息等,這些組成元素被Windows從程序代碼中獨立出來,并以各種不同擴展名的文件從程序代碼中獨立出來,并以
11、各種不同擴展名的文件形式存在,如形式存在,如.ico(圖標(biāo))、(圖標(biāo))、.bmp(位圖)、(位圖)、.cur(光標(biāo))等,(光標(biāo))等,Windows系統(tǒng)稱之為資源系統(tǒng)稱之為資源 資源則可以在需要時才通過相關(guān)命令加載到程序中。資源則可以在需要時才通過相關(guān)命令加載到程序中。第10章C+Windows程序設(shè)計基礎(chǔ)12.libC runtimeDll import.RC資源編譯器資源編譯器.DLGDialog Editor*.obj*.exe.res.DEF資源連接器資源連接器Image EditorFont Editor.BMP.ICO.CUR.FON.h.c/cppc編譯器編譯器2、Window程序
12、的編譯鏈接過程第10章C+Windows程序設(shè)計基礎(chǔ)1310.1.4 VC+的的Windows程序設(shè)計方法程序設(shè)計方法1API程序設(shè)計程序設(shè)計API即即Application Programming Interface(應(yīng)用(應(yīng)用程序編程接口),它是程序編程接口),它是Windows操作系統(tǒng)和操作系統(tǒng)和Windows應(yīng)用程序之間的標(biāo)準(zhǔn)接口,在應(yīng)用程序中應(yīng)用程序之間的標(biāo)準(zhǔn)接口,在應(yīng)用程序中可以通過可以通過API訪問訪問Windows提供的各種函數(shù)、宏及提供的各種函數(shù)、宏及數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)。API函數(shù)保存在一些動態(tài)鏈接庫中,每個函數(shù)保存在一些動態(tài)鏈接庫中,每個Windows程序都要用到的動態(tài)鏈接
13、庫有程序都要用到的動態(tài)鏈接庫有USER32.Dll、GDI32.Dll、KERNEL32.Dll。API程序設(shè)計就是直接利用程序設(shè)計就是直接利用Windows系統(tǒng)提供的系統(tǒng)提供的API函數(shù),編寫能夠在函數(shù),編寫能夠在Windows系統(tǒng)中運行的程序。系統(tǒng)中運行的程序。第10章C+Windows程序設(shè)計基礎(chǔ)1410.1.4 VC+的的Windows程序設(shè)計方法程序設(shè)計方法2MFC程序設(shè)計程序設(shè)計MFC是是Microsoft Foundation Classes的縮寫,即的縮寫,即微軟基礎(chǔ)類庫。微軟基礎(chǔ)類庫。MFC是建立在是建立在API基礎(chǔ)上的基礎(chǔ)上的C+類類庫,它對庫,它對Windows提供的提供
14、的API函數(shù)、數(shù)據(jù)結(jié)構(gòu)、各函數(shù)、數(shù)據(jù)結(jié)構(gòu)、各種控件按功能進行了分類,利用面向?qū)ο蠹夹g(shù)將它種控件按功能進行了分類,利用面向?qū)ο蠹夹g(shù)將它們封裝在不同的類中,并通過繼承將這些類組織在們封裝在不同的類中,并通過繼承將這些類組織在一起。一起。MFC不僅把不僅把API函數(shù)封裝成了易于使用的類,而且函數(shù)封裝成了易于使用的類,而且還提供了建立還提供了建立Windows應(yīng)用程序的框架結(jié)構(gòu),以及應(yīng)用程序的框架結(jié)構(gòu),以及建立應(yīng)用程序的各種組件,簡化了建立應(yīng)用程序的各種組件,簡化了Windows程序設(shè)程序設(shè)計的難度。計的難度。 第10章C+Windows程序設(shè)計基礎(chǔ)151. 句柄句柄句柄是整個句柄是整個Windows
15、編程的基礎(chǔ)。一個句柄編程的基礎(chǔ)。一個句柄是指是指Windows使用的一個唯一的整數(shù)值,是使用的一個唯一的整數(shù)值,是一個一個4字長(字長(32位無符號整數(shù))的數(shù)值,用于位無符號整數(shù))的數(shù)值,用于標(biāo)識應(yīng)用程序中不同的對象和同類對象中不同標(biāo)識應(yīng)用程序中不同的對象和同類對象中不同的實例。的實例。如標(biāo)識一個窗口、按鈕、圖標(biāo)、滾動條、輸入如標(biāo)識一個窗口、按鈕、圖標(biāo)、滾動條、輸入/輸出設(shè)備、控件或文件等。輸出設(shè)備、控件或文件等。應(yīng)用程序通過句柄能夠訪問相應(yīng)的對象信息。應(yīng)用程序通過句柄能夠訪問相應(yīng)的對象信息。10.2 Windows程序設(shè)計的常用數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的常用數(shù)據(jù)結(jié)構(gòu)第10章C+Windows程序設(shè)計
16、基礎(chǔ)16v常用的句柄類型常用的句柄類型HWND HWND 標(biāo)識窗口句柄標(biāo)識窗口句柄HINSTANCEHINSTANCE標(biāo)識當(dāng)前實例句柄標(biāo)識當(dāng)前實例句柄HCURSORHCURSOR 標(biāo)識光標(biāo)句柄標(biāo)識光標(biāo)句柄HFONTHFONT標(biāo)識字體句柄標(biāo)識字體句柄HPENHPEN標(biāo)識畫筆句柄標(biāo)識畫筆句柄HBRUSHHBRUSH標(biāo)識畫刷句柄標(biāo)識畫刷句柄HDCHDC標(biāo)識設(shè)備環(huán)境句柄標(biāo)識設(shè)備環(huán)境句柄HBITMAPHBITMAP 標(biāo)識位圖句柄標(biāo)識位圖句柄HICONHICON標(biāo)識圖標(biāo)句柄標(biāo)識圖標(biāo)句柄HMENUHMENU標(biāo)識菜單句柄標(biāo)識菜單句柄HFILEHFILE標(biāo)識文件句柄標(biāo)識文件句柄 10.2 Windows程序設(shè)計
17、的常用數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的常用數(shù)據(jù)結(jié)構(gòu)第10章C+Windows程序設(shè)計基礎(chǔ)17關(guān)鍵字關(guān)鍵字類型類型等價于等價于BOOLBOOL邏輯類型邏輯類型intintBOOLEAN BOOLEAN 邏輯邏輯BYTEBYTEBYTEBYTE字節(jié)字節(jié)unsinged charunsinged charCHARCHAR字符字符charcharDOUBLE DOUBLE 雙精度雙精度doubledoubleDWORD DWORD 雙字雙字unsigned longunsigned longFLOATFLOAT浮點數(shù)浮點數(shù)floatfloatHANDLEHANDLE句柄句柄10.2.2 常用數(shù)據(jù)類型常用數(shù)據(jù)類型第1
18、0章C+Windows程序設(shè)計基礎(chǔ)18INTINT整數(shù)整數(shù)intintLONGLONG長整數(shù)長整數(shù)longlongSHORTSHORT短整數(shù)短整數(shù)shortshortUCHARUCHAR無符號字符無符號字符unsinged charunsinged charUINTUINT無符號整數(shù)無符號整數(shù)unsinged intunsinged intULONGULONG無符號長整數(shù)無符號長整數(shù)unsigned longunsigned longUSHORTUSHORT無符號短整數(shù)無符號短整數(shù)unsigend shortunsigend shortVOIDVOIDvoidvoidWCHARWCHAR雙字節(jié)
19、碼雙字節(jié)碼unsigned shortunsigned shortWCHAR_TWCHAR_T雙字節(jié)碼雙字節(jié)碼unsigned shortunsigned shortWORDWORD字字unsigned shortunsigned short第10章C+Windows程序設(shè)計基礎(chǔ)19WPARAM消息參數(shù)消息參數(shù)UINTLPARAM消息參數(shù)消息參數(shù)LONGLRESULT消息返回值消息返回值 LONGHINSTANCE實例句柄實例句柄unsigned longHWAND窗口句柄窗口句柄unsigned longHDC設(shè)備環(huán)境句柄設(shè)備環(huán)境句柄unsigned longTCHAR字符字符charLPS
20、TR字符指針字符指針char *LPCSTR常量字符指針常量字符指針const char*LPTSTR字符指針字符指針TCHAR *LPVOID無類型指針無類型指針 void *LPCVOID無類型長指針無類型長指針const void *第10章C+Windows程序設(shè)計基礎(chǔ)20(1 1)坐標(biāo)結(jié)構(gòu))坐標(biāo)結(jié)構(gòu)typedef struct tagPOINT typedef struct tagPOINT LONG x; LONG x; LONG y; LONG y; POINT; POINT; 注:在注:在MFCMFC中還有一個類中還有一個類CPointCPoint,與,與POINTPOINT結(jié)
21、構(gòu)近似,結(jié)構(gòu)近似,但它有許多成員函數(shù)。但它有許多成員函數(shù)。(2 2)長、寬尺寸結(jié)構(gòu):)長、寬尺寸結(jié)構(gòu):CSIZECSIZE,CsizeCsize;typedef struct tagSIZE typedef struct tagSIZE int cx; int cy; SIZE; int cx; int cy; SIZE; 10.2.3 點和矩形區(qū)域點和矩形區(qū)域第10章C+Windows程序設(shè)計基礎(chǔ)21(3 3)記錄矩形區(qū)域結(jié)構(gòu))記錄矩形區(qū)域結(jié)構(gòu)RECTRECT和和CrectCrecttypedef struct tagRECT typedef struct tagRECT LONG left
22、; LONG top; LONG left; LONG top; LONG right; LONG bottom;LONG right; LONG bottom; RECT; RECT; 在在MFCMFC中中Crect Crect 與此類似,但有成員函數(shù)。與此類似,但有成員函數(shù)。 LPRECT LPRECT 為指針為指針RECTRECT類型的常數(shù)指針。類型的常數(shù)指針。(4 4)顏色)顏色COLORREFCOLORREF 32-bit value used to specify an RGB color. 32-bit value used to specify an RGB color. 例:
23、例:COLORREF RGB(BYTE bRed,BYTE bGreen,BYTE Bblue);COLORREF RGB(BYTE bRed,BYTE bGreen,BYTE Bblue); 第10章C+Windows程序設(shè)計基礎(chǔ)2210.2.4 窗口結(jié)構(gòu)窗口結(jié)構(gòu)typedef struct typedef struct UINT style; UINT style; / / 窗口類型窗口類型 WNDPROC lpfnWndProc; WNDPROC lpfnWndProc; / / 窗口函數(shù)指針窗口函數(shù)指針int cbClsExtraint cbClsExtra; / ; / 為類結(jié)構(gòu)的預(yù)
24、留額外空間為類結(jié)構(gòu)的預(yù)留額外空間int cbWndExtra; int cbWndExtra; / / 為窗口結(jié)構(gòu)預(yù)留額外空間為窗口結(jié)構(gòu)預(yù)留額外空間 HANDLE hInstance; HANDLE hInstance; / / 窗口類的應(yīng)用實例句柄窗口類的應(yīng)用實例句柄HICON hIcon; HICON hIcon; / / 圖標(biāo)句柄圖標(biāo)句柄HCURSOR hCursor; HCURSOR hCursor; / / 窗口類的光標(biāo)窗口類的光標(biāo) HBRUSH hbrBackground; HBRUSH hbrBackground; / / 窗口類的背景刷窗口類的背景刷LPCTSTR lpszMe
25、nuName; LPCTSTR lpszMenuName; / / 菜單資源名菜單資源名LPCTSTR lpszClassName; LPCTSTR lpszClassName; / / 窗口類名窗口類名 WNDCLASS; WNDCLASS; 第10章C+Windows程序設(shè)計基礎(chǔ)2310.2.4 窗口結(jié)構(gòu)窗口結(jié)構(gòu)vWNDCLASS中的中的style代表窗口類型,可取下面的值:代表窗口類型,可取下面的值:WS_CHILD子窗口(不能與子窗口(不能與WS_POPUP同時使用)同時使用)WS_BORDER帶邊框的窗口帶邊框的窗口 WS_CAPTION帶標(biāo)題欄的窗口帶標(biāo)題欄的窗口WS_HSCROL
26、L帶有水平滾動條的窗口帶有水平滾動條的窗口WS_MAXIMIZE最大尺寸的窗口最大尺寸的窗口WS_MAXIMIZEBOX帶最大化框的窗口帶最大化框的窗口WS_MINIMIZE最小尺寸的窗口最小尺寸的窗口WS_MINIMIZEBOX帶最小化框的窗口帶最小化框的窗口 WS_OVERLAPPED帶邊框和標(biāo)題欄的窗口帶邊框和標(biāo)題欄的窗口WS_OVERLAPPEDWINDOW帶邊框、標(biāo)題欄、系統(tǒng)菜單及最大、最小化框的窗口帶邊框、標(biāo)題欄、系統(tǒng)菜單及最大、最小化框的窗口 WS_POPUP彈出式窗口彈出式窗口WS_POPUPWINDOW帶邊框和系統(tǒng)菜單的彈出式窗口帶邊框和系統(tǒng)菜單的彈出式窗口WS_SYSMEN
27、U 帶系統(tǒng)菜單的窗口帶系統(tǒng)菜單的窗口WS_VSCROLL帶垂直滾動條的窗口帶垂直滾動條的窗口第10章C+Windows程序設(shè)計基礎(chǔ)241 1、消息結(jié)構(gòu):、消息結(jié)構(gòu):MSGMSGtypedef struct tagMSG typedef struct tagMSG HWND hwnd; HWND hwnd; / /消息發(fā)向的窗口句柄消息發(fā)向的窗口句柄UINT message; UINT message; / /消息標(biāo)識符消息標(biāo)識符WPARAM wParamWPARAM wParam; /16; /16位的消息參數(shù),值因消息異位的消息參數(shù),值因消息異LPARAM lParam; LPARAM lP
28、aram; /32/32位的消息參數(shù),值因消息異位的消息參數(shù),值因消息異DWORD time; DWORD time; / /消息放入消息隊列的時間消息放入消息隊列的時間POINT pt; POINT pt; / /消息放入消息隊列的鼠標(biāo)位置消息放入消息隊列的鼠標(biāo)位置 MSG; MSG; 說明:說明:WPARAMWPARAM含義和數(shù)值因消息不同而不同含義和數(shù)值因消息不同而不同比如:鍵盤消息和鼠標(biāo)消息所對應(yīng)的比如:鍵盤消息和鼠標(biāo)消息所對應(yīng)的WPARAMWPARAM消息所代表的消息是不同的。消息所代表的消息是不同的。10.2.5 消息消息第10章C+Windows程序設(shè)計基礎(chǔ)2510.2.5 消息
29、消息2、MSG中的域說明中的域說明hwnd是一個窗口句柄,用于標(biāo)識消息發(fā)向的窗是一個窗口句柄,用于標(biāo)識消息發(fā)向的窗口???。time用于保存消息放進消息隊列的時間。用于保存消息放進消息隊列的時間。pt用于保存將消息放入消息隊列時的鼠標(biāo)位置。用于保存將消息放入消息隊列時的鼠標(biāo)位置。message是消息標(biāo)識符,它是一個是消息標(biāo)識符,它是一個32位的無符位的無符號整數(shù)。號整數(shù)。Windows中的每條消息都有一個對應(yīng)中的每條消息都有一個對應(yīng)的消息標(biāo)識符,這些標(biāo)識符是在的消息標(biāo)識符,這些標(biāo)識符是在windows.h中定中定義的。義的。 第10章C+Windows程序設(shè)計基礎(chǔ)263、消息的種類、消息的種類
30、標(biāo)準(zhǔn)標(biāo)準(zhǔn)Windows消息消息v除除WM_COMMAND外,所有以外,所有以WM_ 為前綴的消息,為前綴的消息,由窗口和視圖處理。由窗口和視圖處理??刂葡⒖刂葡由控件和子窗口發(fā)給父窗口的消息。由控件和子窗口發(fā)給父窗口的消息。命令消息命令消息v來自用戶接口對象。如:菜單、工具條和加速鍵等。來自用戶接口對象。如:菜單、工具條和加速鍵等。10.2.5 消息消息第10章C+Windows程序設(shè)計基礎(chǔ)2710.2.5 消息消息4、常見消息前綴的含義、常見消息前綴的含義BM 表示按鈕控制消息表示按鈕控制消息CB 組合框控制消息組合框控制消息EM 編輯框控制消息編輯框控制消息LB 列表控制消息列表控制
31、消息SBM 滾動條控制消息滾動條控制消息WM 窗口消息窗口消息第10章C+Windows程序設(shè)計基礎(chǔ)2810.2.5 消息消息5、Windows常用鼠標(biāo)消息常用鼠標(biāo)消息WM_LBUTTONDBLCLK WM_LBUTTONDOWN WM_LBUTTONUP WM_MBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP WM_RBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP 第10章C+Windows程序設(shè)計基礎(chǔ)2910.2.5 消息消息6、Windows常用鍵盤消息常用鍵盤消息WM_KEYUP WM_KEYDOWNv 按下非系統(tǒng)鍵時
32、產(chǎn)生此消息按下非系統(tǒng)鍵時產(chǎn)生此消息,系統(tǒng)鍵是指實現(xiàn)系系統(tǒng)鍵是指實現(xiàn)系統(tǒng)操作的組合鍵統(tǒng)操作的組合鍵,如如Alt和和F1相結(jié)合的按鈕鍵。附相結(jié)合的按鈕鍵。附加參數(shù)加參數(shù)wParam為按下鍵的虛擬鍵碼,為按下鍵的虛擬鍵碼,lParam記錄按鈕的重復(fù)次數(shù)、先前狀態(tài)等。記錄按鈕的重復(fù)次數(shù)、先前狀態(tài)等。vWM_KEYUP是釋放按鍵時的鍵盤消息,其含義是釋放按鍵時的鍵盤消息,其含義同同WM_KEYDOWN。 WM_CHARv按下非系統(tǒng)鍵時產(chǎn)生的消息,附加參數(shù)按下非系統(tǒng)鍵時產(chǎn)生的消息,附加參數(shù)wParam為按鍵的為按鍵的ASCII碼,碼,lparam同前。同前。第10章C+Windows程序設(shè)計基礎(chǔ)307、其
33、它常用、其它常用Windows常用消息常用消息vWM_CREATECreateWindow函數(shù)發(fā)生的消息。函數(shù)發(fā)生的消息。vWM_CLOSE關(guān)閉窗口時產(chǎn)生的消息,如有子窗口,也一起刪除。關(guān)閉窗口時產(chǎn)生的消息,如有子窗口,也一起刪除。vWM_DESTROY關(guān)閉窗口時產(chǎn)生的消息關(guān)閉窗口時產(chǎn)生的消息vWM_PAINT hdc = (HDC) wParam; /發(fā)生用戶區(qū)域移動或顯示事件、用戶窗口改變大小發(fā)生用戶區(qū)域移動或顯示事件、用戶窗口改變大小的事件、程序通過流動條滾動窗口,覆蓋在窗口上的事件、程序通過流動條滾動窗口,覆蓋在窗口上面的其它對象(如菜單)移開時,都會產(chǎn)生此消息!面的其它對象(如菜單)
34、移開時,都會產(chǎn)生此消息!10.2.5 消息消息第10章C+Windows程序設(shè)計基礎(chǔ)318、消息的產(chǎn)生、消息的產(chǎn)生用戶產(chǎn)生消息用戶產(chǎn)生消息 Windows 本身產(chǎn)生消息本身產(chǎn)生消息 應(yīng)用程序本身產(chǎn)生消息應(yīng)用程序本身產(chǎn)生消息 其他應(yīng)用程序產(chǎn)生消息其他應(yīng)用程序產(chǎn)生消息9、消息的傳遞、消息的傳遞Windows系統(tǒng)有一個存放消息的隊列,每個應(yīng)用程系統(tǒng)有一個存放消息的隊列,每個應(yīng)用程序也有一個消息隊列。序也有一個消息隊列。Windows系統(tǒng)先將收到的消系統(tǒng)先將收到的消息存放在系統(tǒng)隊列中;然后再分發(fā)到相應(yīng)的應(yīng)用程息存放在系統(tǒng)隊列中;然后再分發(fā)到相應(yīng)的應(yīng)用程序隊列中。應(yīng)用程序則從自身的隊列中獲取消息并序隊列
35、中。應(yīng)用程序則從自身的隊列中獲取消息并進行處理。進行處理。10.2.5 消息消息第10章C+Windows程序設(shè)計基礎(chǔ)3210、消息的處理、消息的處理通常每個通常每個Windows 應(yīng)用程序至少對應(yīng)一個窗應(yīng)用程序至少對應(yīng)一個窗口,每個窗口都要有一個窗口函數(shù)負責(zé)處理口,每個窗口都要有一個窗口函數(shù)負責(zé)處理該窗口內(nèi)所發(fā)生的事件。每個窗口至少有一該窗口內(nèi)所發(fā)生的事件。每個窗口至少有一個窗口函數(shù),負責(zé)處理該窗口的所有消息。個窗口函數(shù),負責(zé)處理該窗口的所有消息。10.2.5 消息消息第10章C+Windows程序設(shè)計基礎(chǔ)331、Windows標(biāo)識符常用標(biāo)識符常用 命名規(guī)則命名規(guī)則函數(shù)命名規(guī)則函數(shù)命名規(guī)則v
36、函數(shù)名函數(shù)名 = 動詞動詞 + 名詞名詞v動詞和名詞的第一個字母必須大寫動詞和名詞的第一個字母必須大寫v例例 GetMessage變量命名規(guī)則變量命名規(guī)則v小寫字母前綴表示變量的類型小寫字母前綴表示變量的類型,其余其余 的部分描述變的部分描述變量的功能量的功能v例例 nCount匈牙利命名法匈牙利命名法v變量名以小寫字母或代表數(shù)據(jù)類型的小寫字母開頭變量名以小寫字母或代表數(shù)據(jù)類型的小寫字母開頭.vEg: szCmdLine 補充補充: Windows程序的名字程序的名字第10章C+Windows程序設(shè)計基礎(chǔ)34前綴前綴代表的數(shù)據(jù)類型代表的數(shù)據(jù)類型cchar or WCHAR or TCHARby
37、BYTE (unsigned char)nshortiintx, yint used as x-coordinate or y-coordinatecx, cyint used as x or y length; c stands for countb or fBOOL (int); f stands for flagwWORD (unsigned short)lLONG (long)dwDWORD (unsigned long)fnfunctionsstringszstring terminated by 0 characterhhandleppointer2、Windows程序常見名字前綴
38、的含義程序常見名字前綴的含義第10章C+Windows程序設(shè)計基礎(chǔ)3510.3 Windows程序的基本結(jié)構(gòu)1、簡單的、簡單的Windows程序至少包含兩個函數(shù)程序至少包含兩個函數(shù):WinMain ( ) : 必有且僅有一個。是程序執(zhí)行的入口必有且僅有一個。是程序執(zhí)行的入口點,類似于點,類似于C程序中的程序中的main函數(shù)函數(shù)窗口函數(shù)窗口函數(shù) : 每個窗口對應(yīng)一個窗口函數(shù),以響應(yīng)該每個窗口對應(yīng)一個窗口函數(shù),以響應(yīng)該程序窗口中發(fā)生的事件消息。程序窗口中發(fā)生的事件消息。2、WinMain ( )函數(shù)需完成的功能函數(shù)需完成的功能定義窗口類定義窗口類注冊窗口類注冊窗口類建立窗口類的窗口建立窗口類的窗口
39、顯示窗口顯示窗口運行消息循環(huán)運行消息循環(huán)第10章C+Windows程序設(shè)計基礎(chǔ)3610.3 Windows程序的基本結(jié)構(gòu)3、Windows程序的執(zhí)行邏輯程序的執(zhí)行邏輯Windows系統(tǒng)首先為該程序建立必備的程序環(huán)境,系統(tǒng)首先為該程序建立必備的程序環(huán)境,如定義并初始化一些全局變量,接下來就尋找并進如定義并初始化一些全局變量,接下來就尋找并進入入WinMain函數(shù)。函數(shù)。WinMain是是Window程序的入口點,由它控制程序程序的入口點,由它控制程序的執(zhí)行流程。的執(zhí)行流程。WinMain函數(shù)依次完成以下工作:調(diào)函數(shù)依次完成以下工作:調(diào)用用API函數(shù)定義并注冊窗口類,創(chuàng)建程序窗口,顯函數(shù)定義并注冊
40、窗口類,創(chuàng)建程序窗口,顯示窗口,建立消息循環(huán),等待用戶操作程序窗口。示窗口,建立消息循環(huán),等待用戶操作程序窗口。用戶在程序窗口中所作的每件事情都會產(chǎn)生一個消用戶在程序窗口中所作的每件事情都會產(chǎn)生一個消息,該消息會被息,該消息會被Windows傳遞到該程序的消息隊傳遞到該程序的消息隊列中。列中。WinMain中的消息循環(huán)會不斷地從本程序的中的消息循環(huán)會不斷地從本程序的消息隊列中獲取消息,并將其傳遞給該窗口的窗口消息隊列中獲取消息,并將其傳遞給該窗口的窗口處理函數(shù),由窗口處理函數(shù)對消息進行處理,實現(xiàn)處理函數(shù),由窗口處理函數(shù)對消息進行處理,實現(xiàn)相應(yīng)的程序功能。相應(yīng)的程序功能。第10章C+Window
41、s程序設(shè)計基礎(chǔ)3710.3.2 Win32 Application程序設(shè)計v在在Miscrosoft Visual C+中的中的API程序設(shè)計方法程序設(shè)計方法一般的編程方法是先用一般的編程方法是先用VC+的的Win32 Application向向?qū)Ы⒁粋€導(dǎo)建立一個Windows應(yīng)用程序的框架,然后將它修應(yīng)用程序的框架,然后將它修改成自己的程序,并根據(jù)需要添加一些頭文件、源改成自己的程序,并根據(jù)需要添加一些頭文件、源程序文件及資源文件。程序文件及資源文件。【例例10-1】 在在VC+ 6.0環(huán)境下設(shè)計一個簡單的環(huán)境下設(shè)計一個簡單的Windows API程序,該程序在窗口中顯示字符程序,該程序在
42、窗口中顯示字符串串Hellow, API Programming!。第10章C+Windows程序設(shè)計基礎(chǔ)3810.3.2 Win32 Application程序設(shè)計v編程過程如下:編程過程如下:(1)啟動)啟動VC+ 6.0,選擇菜單,選擇菜單“文件文件 | 新建新建”,在彈出的,在彈出的“新建新建”對話框中選擇對話框中選擇“工程工程”標(biāo)簽頁,如圖所示。標(biāo)簽頁,如圖所示。第10章C+Windows程序設(shè)計基礎(chǔ)3910.3.2 Win32 Application程序設(shè)計(2)選中)選中“工程工程”對話框中的對話框中的“Win32 Application”列列表項,并在表項,并在“位置位置”編輯
43、框中指定本項目建立的磁盤編輯框中指定本項目建立的磁盤目錄,然后在目錄,然后在“工程工程”編輯框中輸入項目文件的名字。編輯框中輸入項目文件的名字。(3)單擊)單擊“確定確定”按鈕,并在彈出的對話框中選中按鈕,并在彈出的對話框中選中“An empty project.”單選項,然后單擊單選項,然后單擊“完成完成”按按鈕。最后將得到如圖鈕。最后將得到如圖10-7(a)所示的空項目文件窗口。)所示的空項目文件窗口。(4)選擇菜單)選擇菜單“文件文件 | 新建新建”,然后在彈出的對話框中,然后在彈出的對話框中選擇選擇“文件文件”標(biāo)簽,并選擇列表中的標(biāo)簽,并選擇列表中的“C+ Source File”項目
44、,然后在項目,然后在“文件文件”編輯框中輸入源程序文件編輯框中輸入源程序文件名名“HellApi”,如圖,如圖10-7(b)所示。輸入完成后,單)所示。輸入完成后,單擊擊“結(jié)束結(jié)束”按鈕。按鈕。 第10章C+Windows程序設(shè)計基礎(chǔ)4010.3.2 Win32 Application程序設(shè)計第10章C+Windows程序設(shè)計基礎(chǔ)4110.3.2 Win32 Application程序設(shè)計(5)打開目錄)打開目錄C:dkHellApi,在該目錄中可以看到,在該目錄中可以看到以下文件名:以下文件名:HellApi.cpp、HellApi.dsp、HellApi.dsw、HellApi.ncb、H
45、ellApi.opt,這些,這些文件就是在前面的操作過程產(chǎn)生的。文件就是在前面的操作過程產(chǎn)生的。(6)在)在HellApi.cpp中輸入下面的程序代碼。中輸入下面的程序代碼。第10章C+Windows程序設(shè)計基礎(chǔ)42HellApi.cpp#include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) static TCHAR szAppName
46、 = TEXT(HelloWin); HWND hwnd; MSG msg;第10章C+Windows程序設(shè)計基礎(chǔ)43 WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass
47、.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox (NULL, TEXT (This program requires Windows NT!), szAppName, MB_ICONERROR) ; ret
48、urn 0 ; 注冊窗口類注冊窗口類定義定義窗口窗口的屬的屬性,性,如大如大小、小、寬度,寬度,前景前景色等色等第10章C+Windows程序設(shè)計基礎(chǔ)44 hwnd = CreateWindow(szAppName, /用于建立窗口的類名用于建立窗口的類名 TEXT (The Hello Program), / 窗口標(biāo)題窗口標(biāo)題 WS_OVERLAPPEDWINDOW,/ 窗口類型窗口類型 CW_USEDEFAULT,/ 窗口左上角窗口左上角X坐標(biāo)為默認值坐標(biāo)為默認值 CW_USEDEFAULT,/ 窗口左上角窗口左上角Y坐標(biāo)為默認值坐標(biāo)為默認值 CW_USEDEFAULT,/ 窗口寬度為默認
49、值窗口寬度為默認值 CW_USEDEFAULT,/ 窗口高度為默認值窗口高度為默認值 NULL,/ 該窗口沒有父窗口該窗口沒有父窗口 NULL, / 該窗口沒有菜單該窗口沒有菜單 hInstance,/ 創(chuàng)建本窗口的程序句柄創(chuàng)建本窗口的程序句柄 NULL) ;/ 系統(tǒng)保留參數(shù)系統(tǒng)保留參數(shù) ShowWindow(hwnd,iCmdShow) ; /顯示窗口,顯示窗口,hwnd代表上面建立的窗口代表上面建立的窗口 UpdateWindow(hwnd) ;/更新窗口,繪制窗口客戶區(qū)更新窗口,繪制窗口客戶區(qū)本段程序建立并顯示一個窗口本段程序建立并顯示一個窗口第10章C+Windows程序設(shè)計基礎(chǔ)45w
50、hile (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessage (&msg) ; return msg.wParam ;Windows程序程序的消息循環(huán)的消息循環(huán)第10章C+Windows程序設(shè)計基礎(chǔ)46LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) HDC hdc ; PAINTSTRUCT ps ; RECT rect ;窗口處理函數(shù),是窗口處理函數(shù),是一個回調(diào)函
51、數(shù),每一個回調(diào)函數(shù),每個應(yīng)用程序至少有個應(yīng)用程序至少有一個窗口處理函數(shù),一個窗口處理函數(shù),窗口函數(shù)的參數(shù)由窗口函數(shù)的參數(shù)由Windows傳遞,這傳遞,這些參數(shù)是由事件消些參數(shù)是由事件消息產(chǎn)生的。息產(chǎn)生的。第10章C+Windows程序設(shè)計基礎(chǔ)47switch (message)/消息處理 case WM_CREATE: return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd,&rect); DrawText(hdc,Hello,Windows API,-1, &rect, DT_S
52、INGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; return DefWindowProc(hwnd,message,wParam,lParam);第10章C+Windows程序設(shè)計基礎(chǔ)4810.3.3 Windows程序的控制流程v所有所有Windows應(yīng)用程序具有相同的程序結(jié)構(gòu)應(yīng)用程序具有相同的程序結(jié)構(gòu)和執(zhí)行控制流程,步驟如下:和執(zhí)行控制流程,步驟如下:(1)創(chuàng)建全局變量)創(chuàng)建全局變量(2)程序入口函數(shù)
53、)程序入口函數(shù)WinMain()函數(shù)接收控制()函數(shù)接收控制(3)WinMain()登記窗口登記窗口(4)WinMain()建立窗口建立窗口(5)WinMain()進入消息循環(huán)進入消息循環(huán)(6)當(dāng)窗口中有事件發(fā)生時,事件消息進入消息循)當(dāng)窗口中有事件發(fā)生時,事件消息進入消息循環(huán)隊列環(huán)隊列(7)windows操作系統(tǒng)分析消息,調(diào)用該窗口的窗操作系統(tǒng)分析消息,調(diào)用該窗口的窗口函數(shù)進行處理??诤瘮?shù)進行處理。(8)WinMain函數(shù)退出,程序終止。函數(shù)退出,程序終止。第10章C+Windows程序設(shè)計基礎(chǔ)49初始化所有初始化所有全局對象全局對象WinMain()登記窗口建立窗口消息循環(huán)Hello,Wi
54、ndows API顯示窗口程序出口:程序出口:WM_QUITWindows程序的控制流程程序的控制流程第10章C+Windows程序設(shè)計基礎(chǔ)5010.3.3 Windows程序的控制流程程序的控制流程v接下來將對接下來將對API程序的建立、執(zhí)行流程進行進程序的建立、執(zhí)行流程進行進一步的剖析。借此理解一步的剖析。借此理解Windows程序的結(jié)構(gòu),程序的結(jié)構(gòu),事件驅(qū)動和消息循環(huán)的本質(zhì)。事件驅(qū)動和消息循環(huán)的本質(zhì)。第10章C+Windows程序設(shè)計基礎(chǔ)51DOS平臺的平臺的C程序的入口點是程序的入口點是main()函數(shù),在函數(shù),在WINDOW的的C+程序的入口點是程序的入口點是WinMain()函數(shù)。
55、其函數(shù)。其定義形式為:定義形式為:int APIENTRY WinMain( HINSTANCE hInstance,/ HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)實例句柄,當(dāng)程序在實例句柄,當(dāng)程序在WINDOWS下下運行時,它唯一地標(biāo)識該程序運行時,它唯一地標(biāo)識該程序當(dāng)程序在當(dāng)程序在WINDOWS下有多個副本運下有多個副本運行時,它標(biāo)識該程序的前一個副本行時,它標(biāo)識該程序的前一個副本標(biāo)識傳給該程序的命令行參數(shù),近似于標(biāo)識傳給該程序的命令行參數(shù),近似于main()函數(shù)的函數(shù)的char *argv 指示窗口在指示窗口在Windo
56、w中的顯示方式,其值中的顯示方式,其值為為1-7,如:值,如:值1表示表示SW_SHOWNORMAL /窗口以常規(guī)顯示窗口以常規(guī)顯示見第見第321頁表頁表10-41、程序入口點、程序入口點第10章C+Windows程序設(shè)計基礎(chǔ)52 窗口總是在窗口類的基礎(chǔ)上創(chuàng)建的,窗窗口總是在窗口類的基礎(chǔ)上創(chuàng)建的,窗口類標(biāo)識了處理窗口消息的窗口過程,這是口類標(biāo)識了處理窗口消息的窗口過程,這是非常重要的。非常重要的。 在創(chuàng)建窗口之前,必須先調(diào)用在創(chuàng)建窗口之前,必須先調(diào)用RegisterClass函數(shù)注冊一個窗口類,以后可以基于這個已函數(shù)注冊一個窗口類,以后可以基于這個已登錄的窗口創(chuàng)建多個窗口。登錄的窗口創(chuàng)建多個窗
57、口。 只有程序的第一個實例需要注冊窗口類!只有程序的第一個實例需要注冊窗口類! 例例10-1的注冊窗口如下:的注冊窗口如下:2、注冊窗口類、注冊窗口類第10章C+Windows程序設(shè)計基礎(chǔ)53WNDCLASS wndclass ;WNDCLASS wndclass ;wndclass.style = CS_HREDRAW | CS_VREDRAW ;wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsE
58、xtra = 0 ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_
59、ARROW) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;(HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; wndclass.lpsz
60、ClassName = szAppName ; if (!RegisterClass (&wndclass) if (!RegisterClass (&wndclass) MessageBox ( MessageBox (NULL, “This program !, szAppName, MB_ICONERROR) ;NULL, “This program !, szAppName, MB_ICONERROR) ; return 0 ; return 0 ; 發(fā)生在本窗口中發(fā)生在本窗口中的事件由的事件由WndProc處理,處理,這是這是WinMain與與窗口函數(shù)的關(guān)聯(lián)!窗口函數(shù)的關(guān)聯(lián)!第10章C+Windows程序設(shè)計基礎(chǔ)543、創(chuàng)建窗口、創(chuàng)建窗口hwnd = Crea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 請示整改報告范文
- HCIA路由交換技術(shù)實戰(zhàn)(微課版)-課后習(xí)題答案
- 二零二五年度正規(guī)欠款合同范本:商業(yè)保理業(yè)務(wù)合作協(xié)議
- 二零二五養(yǎng)老院院民文化參觀出行合作協(xié)議
- 二零二五年度高端定制門安裝與設(shè)計合同
- 二零二五年度電梯維保服務(wù)與智能化升級合同范本
- 二零二五年度企業(yè)ERP系統(tǒng)采購合作協(xié)議
- MySQL教程(新體系-綜合應(yīng)用實例視頻)(第4版)習(xí)題及答案 -第08章
- 二零二五年度教育行業(yè)年合同制工人養(yǎng)老保險合同
- 二零二五年度健康養(yǎng)老項目終止合作框架協(xié)議
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 便與健康課件
- 自然辯證法概論課件:第二章馬克思主義科學(xué)技術(shù)觀
- “供應(yīng)商融資安排”會計列報、披露問題研究
- 氣道廓清技術(shù)及護理課件
- 中國黃金集團公司黃金工業(yè)項目初步設(shè)計
- 中醫(yī)院新技術(shù)、新項目申請表、審批表及年季度工作報告表范本
- 《現(xiàn)代漢語語法》PPT課件(完整版)
- SAP培訓(xùn)講義(FICO概覽)V3-中石油
- 全國江蘇小學(xué)科學(xué)學(xué)科教師基本功大賽試題匯總(共19頁)
- 幕墻工程施工質(zhì)量通病和防治措施方案
評論
0/150
提交評論