第7章資源在Windows應(yīng)用程序中的應(yīng)用_第1頁(yè)
第7章資源在Windows應(yīng)用程序中的應(yīng)用_第2頁(yè)
第7章資源在Windows應(yīng)用程序中的應(yīng)用_第3頁(yè)
第7章資源在Windows應(yīng)用程序中的應(yīng)用_第4頁(yè)
第7章資源在Windows應(yīng)用程序中的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第7章資源在Windows應(yīng)用程序 中的應(yīng)用 主要內(nèi)容 菜單 對(duì)話(huà)框 位圖 圖標(biāo) 菜單和加速鍵資源及應(yīng)用 菜單菜單是是WindowsWindows圖形用戶(hù)界面中窗口的重要組圖形用戶(hù)界面中窗口的重要組 成部分。菜單可使用戶(hù)直觀(guān)地了解并方便的使成部分。菜單可使用戶(hù)直觀(guān)地了解并方便的使 用應(yīng)用程序所提供的功能。使用用應(yīng)用程序所提供的功能。使用加速鍵加速鍵資源可資源可 使菜單的操作更靈活快捷,兩種資源密不可分。使菜單的操作更靈活快捷,兩種資源密不可分。 菜單和加速鍵資源及應(yīng)用 菜單由以下部分組成菜單由以下部分組成 窗口主菜單欄窗口主菜單欄 下拉式菜單下拉式菜單 菜單菜單項(xiàng)熱鍵標(biāo)識(shí)項(xiàng)熱鍵標(biāo)識(shí) 菜單菜單項(xiàng)

2、加速鍵標(biāo)識(shí)項(xiàng)加速鍵標(biāo)識(shí) 菜單項(xiàng)分割線(xiàn)菜單項(xiàng)分割線(xiàn) 菜單和加速鍵資源及應(yīng)用 菜單的創(chuàng)建過(guò)程菜單的創(chuàng)建過(guò)程 操作菜單項(xiàng)操作菜單項(xiàng) 動(dòng)態(tài)地創(chuàng)建菜單動(dòng)態(tài)地創(chuàng)建菜單 加速鍵資源加速鍵資源 菜單和加速鍵資源及應(yīng)用 1.1.菜單的創(chuàng)建過(guò)程菜單的創(chuàng)建過(guò)程 u定義菜單定義菜單 u加載菜單資源加載菜單資源 菜單和加速鍵資源及應(yīng)用 1.1.菜單的創(chuàng)建過(guò)程:定義菜單菜單的創(chuàng)建過(guò)程:定義菜單 menuID MENU ,menuID MENU ,載入特性選項(xiàng)載入特性選項(xiàng)菜單項(xiàng)列表菜單項(xiàng)列表 menuIDmenuID:菜單資源名:菜單資源名,用以標(biāo)識(shí)特定的菜單,應(yīng)用程序通,用以標(biāo)識(shí)特定的菜單,應(yīng)用程序通 過(guò)菜單資源名加載指

3、定菜單,他可以是一個(gè)字符串,也可過(guò)菜單資源名加載指定菜單,他可以是一個(gè)字符串,也可 以是一個(gè)以是一個(gè)165536165536之間的任何一個(gè)整數(shù)。之間的任何一個(gè)整數(shù)。 MENUMENU關(guān)鍵字關(guān)鍵字:用來(lái)標(biāo)識(shí)資源的性質(zhì)。:用來(lái)標(biāo)識(shí)資源的性質(zhì)。 載入特性選項(xiàng)載入特性選項(xiàng):用以標(biāo)識(shí)菜單所具有的載入特性。:用以標(biāo)識(shí)菜單所具有的載入特性。 菜單項(xiàng)列表菜單項(xiàng)列表:POPUPPOPUP語(yǔ)句和語(yǔ)句和MENUITEMMENUITEM語(yǔ)句語(yǔ)句 菜單和加速鍵資源及應(yīng)用 1.1.菜單的創(chuàng)建過(guò)程:定義菜單菜單的創(chuàng)建過(guò)程:定義菜單 載入特性選項(xiàng)說(shuō)明載入特性選項(xiàng)說(shuō)明 DISCARDABLE DISCARDABLE 當(dāng)當(dāng)不再需

4、要菜單時(shí)可丟棄不再需要菜單時(shí)可丟棄 FIXED FIXED 將將菜單保存在內(nèi)存中的固定位置菜單保存在內(nèi)存中的固定位置 LOADONCALL LOADONCALL 需要需要時(shí)加載菜單時(shí)加載菜單 MOVEABLE MOVEABLE 菜單菜單在內(nèi)存中可移動(dòng)在內(nèi)存中可移動(dòng) PRELOAD PRELOAD 立即立即加載菜單加載菜單 菜單和加速鍵資源及應(yīng)用 1.1.菜單的創(chuàng)建過(guò)程:定義菜單菜單的創(chuàng)建過(guò)程:定義菜單 POPUPPOPUP語(yǔ)句定義彈出式菜單:語(yǔ)句定義彈出式菜單: POPUP POPUP 菜單項(xiàng)名菜單項(xiàng)名 ,選項(xiàng),選項(xiàng) ; 選選 項(xiàng)項(xiàng)說(shuō)說(shuō) 明明 MENUBARBREAKMENUBARBREAK菜

5、單項(xiàng)縱向分隔標(biāo)志菜單項(xiàng)縱向分隔標(biāo)志 CHECKEDCHECKED顯示選中標(biāo)志顯示選中標(biāo)志 INACTIVEINACTIVE禁止一個(gè)菜單項(xiàng)禁止一個(gè)菜單項(xiàng) GRAYEDGRAYED禁止并變灰顯示禁止并變灰顯示 菜單和加速鍵資源及應(yīng)用 1.1.菜單的創(chuàng)建過(guò)程:定義菜單菜單的創(chuàng)建過(guò)程:定義菜單 POPUPPOPUP語(yǔ)句定義彈出式菜單:語(yǔ)句定義彈出式菜單: POPUP POPUP 菜單項(xiàng)名菜單項(xiàng)名 ,選項(xiàng),選項(xiàng) ; 在在菜單項(xiàng)名菜單項(xiàng)名中加入符號(hào)中加入符號(hào)“ wndclass.lpszMenuName=lpszMenuName; HWND hwnd;HMENU hmenu; hmenu=LoadMenu

6、(hlnstance, My_menu); hwnd=CreateWindow( ,hmenu, );); hmenu2=LoadMenu(hlnstance, Menu2); SetMenu(hwnd,hmenu2); 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng)操作菜單項(xiàng) u禁止或激活菜單項(xiàng)禁止或激活菜單項(xiàng) u設(shè)置或取消選中標(biāo)志設(shè)置或取消選中標(biāo)志 u增加菜單項(xiàng)增加菜單項(xiàng) u刪除菜單項(xiàng)刪除菜單項(xiàng) u修改菜單項(xiàng)修改菜單項(xiàng) 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):禁止或激活菜單項(xiàng)操作菜單項(xiàng):禁止或激活菜單項(xiàng) BOOL EnableMenuItemBOOL EnableMenuItem ( (

7、HMENU HMENU hmenu,hmenu, UlNT wIDEnableItem,/ UlNT wIDEnableItem,/被禁止或激活的菜單項(xiàng)標(biāo)識(shí)被禁止或激活的菜單項(xiàng)標(biāo)識(shí) UINT dwEnableUINT dwEnable ) ) 應(yīng)用程序創(chuàng)建菜單時(shí),通過(guò)在資源描述文件中設(shè)定菜單應(yīng)用程序創(chuàng)建菜單時(shí),通過(guò)在資源描述文件中設(shè)定菜單 項(xiàng)的選項(xiàng)以項(xiàng)的選項(xiàng)以指定該菜單項(xiàng)的初始狀態(tài)為禁止或激活指定該菜單項(xiàng)的初始狀態(tài)為禁止或激活,或,或 調(diào)用函數(shù)調(diào)用函數(shù)EnableMenuItemEnableMenuItem改變其初始狀態(tài),該函數(shù)的原改變其初始狀態(tài),該函數(shù)的原 型為:型為: 菜單和加速鍵資源及應(yīng)

8、用 2.2.操作菜單項(xiàng):禁止或激活菜單項(xiàng)操作菜單項(xiàng):禁止或激活菜單項(xiàng) BOOL EnableMenuItemBOOL EnableMenuItem ( ( HMENU HMENU hmenu,hmenu, UlNT wIDEnableItem,/ UlNT wIDEnableItem,/被禁止或激活的菜單項(xiàng)標(biāo)識(shí)被禁止或激活的菜單項(xiàng)標(biāo)識(shí) UINT dwEnableUINT dwEnable ) ) 據(jù)據(jù)dwEnable的取值,可為的取值,可為 菜單項(xiàng)的菜單項(xiàng)的ID值,也為該菜值,也為該菜 單項(xiàng)在菜單中位置單項(xiàng)在菜單中位置 標(biāo)標(biāo) 識(shí)識(shí)說(shuō)說(shuō) 明明 MF_BYCOMMAND 以以ID值標(biāo)識(shí)菜單項(xiàng)值標(biāo)識(shí)

9、菜單項(xiàng) MF_ENABLED 激活激活菜單項(xiàng)菜單項(xiàng) MF_BYPOSITION表明以位置標(biāo)識(shí)菜單項(xiàng)表明以位置標(biāo)識(shí)菜單項(xiàng) MF_GRAYED 禁止禁止菜單項(xiàng)并使其變灰顯示菜單項(xiàng)并使其變灰顯示 MF_DISABLED 禁止禁止菜單項(xiàng)菜單項(xiàng) 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):設(shè)置或取消選中標(biāo)志操作菜單項(xiàng):設(shè)置或取消選中標(biāo)志 DWORD CheckMenuItemDWORD CheckMenuItem ( ( HMENU HMENU hmenuhmenu, , UINT wIDCheckItem,UINT wIDCheckItem,/菜單項(xiàng)標(biāo)識(shí)菜單項(xiàng)標(biāo)識(shí) UINT dwCheckUINT d

10、wCheck/操作標(biāo)識(shí)操作標(biāo)識(shí) ) ) 標(biāo)標(biāo) 識(shí)識(shí) 說(shuō)說(shuō) 明明 MF_CHECKED 添加添加選中標(biāo)志選中標(biāo)志 MF_UNCHECKED刪除選中標(biāo)志刪除選中標(biāo)志 應(yīng)用程序可在菜單旁顯示一個(gè)選中標(biāo)志,如打上應(yīng)用程序可在菜單旁顯示一個(gè)選中標(biāo)志,如打上“” 標(biāo)記,以表明用戶(hù)選擇了該項(xiàng),除在資源描述文件中標(biāo)記,以表明用戶(hù)選擇了該項(xiàng),除在資源描述文件中 設(shè)置菜單項(xiàng)為設(shè)置菜單項(xiàng)為CHECKEDCHECKED外,應(yīng)用程序還可以通過(guò)調(diào)用函外,應(yīng)用程序還可以通過(guò)調(diào)用函 數(shù)數(shù)CheckMenuItemCheckMenuItem設(shè)置或取消選中標(biāo)記。設(shè)置或取消選中標(biāo)記。 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):增

11、加菜單項(xiàng)操作菜單項(xiàng):增加菜單項(xiàng) 1. 1. 在菜單的尾部增加菜單項(xiàng)在菜單的尾部增加菜單項(xiàng) BOOL AppendMenuBOOL AppendMenu ( ( HMENU HMENU hmenu,hmenu, UINT dwFlags, UINT dwFlags,/ / 新加入的菜單項(xiàng)類(lèi)型標(biāo)識(shí)新加入的菜單項(xiàng)類(lèi)型標(biāo)識(shí) UINT dwIDNewItem,UINT dwIDNewItem,/ / 新加入菜單項(xiàng)的新加入菜單項(xiàng)的IDID LPCTSTR lpNewItem LPCTSTR lpNewItem/ / 新加入的菜單項(xiàng)內(nèi)容新加入的菜單項(xiàng)內(nèi)容 ) ) 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):

12、增加菜單項(xiàng)操作菜單項(xiàng):增加菜單項(xiàng) 2. 2. 在菜單中插入菜單項(xiàng)在菜單中插入菜單項(xiàng) BOOL InsertMenuBOOL InsertMenu ( ( HMENU HMENU hmenu, hmenu, /菜單句柄菜單句柄 UINT wPosition,UINT wPosition, / /指定新菜單項(xiàng)插入的位置指定新菜單項(xiàng)插入的位置 UINT dwFlag, UINT dwFlag, /新加入的菜單項(xiàng)的信息新加入的菜單項(xiàng)的信息 UINT dwIDNweItem,UINT dwIDNweItem, / /新加入的菜單項(xiàng)的標(biāo)識(shí)新加入的菜單項(xiàng)的標(biāo)識(shí) LPCTSTR lpNewItemLPCTST

13、R lpNewItem / /新插入的菜單項(xiàng)的內(nèi)容新插入的菜單項(xiàng)的內(nèi)容 ) ) 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):刪除菜單項(xiàng)操作菜單項(xiàng):刪除菜單項(xiàng) BOOL BOOL DeleteMenuDeleteMenu ( ( HMENU hmenu,HMENU hmenu, UINT wPosition, /UINT wPosition, /要?jiǎng)h除的菜單項(xiàng)的位置要?jiǎng)h除的菜單項(xiàng)的位置 UINT dwFlagUINT dwFlag / /對(duì)對(duì)wPositionwPosition的解釋的解釋 ) ) 菜單和加速鍵資源及應(yīng)用 2.2.操作菜單項(xiàng):修改菜單項(xiàng)操作菜單項(xiàng):修改菜單項(xiàng) BOOL Modif

14、yMenu BOOL ModifyMenu ( ( HMENU HMENU hmenu,hmenu, UINT wPosition, UINT wPosition, / /指定需修改的菜單項(xiàng)位置指定需修改的菜單項(xiàng)位置 UINT dwFlag,UINT dwFlag, UINT dwIDNweItem, UINT dwIDNweItem,/修改后菜單項(xiàng)的標(biāo)識(shí)修改后菜單項(xiàng)的標(biāo)識(shí) LPCTSTR lpNewItemLPCTSTR lpNewItem/修改后的菜單項(xiàng)名修改后的菜單項(xiàng)名 ) ) 菜單和加速鍵資源及應(yīng)用 3.3.動(dòng)態(tài)創(chuàng)建菜單動(dòng)態(tài)創(chuàng)建菜單 動(dòng)態(tài)地創(chuàng)建菜單可以使系統(tǒng)資源更加節(jié)省,在應(yīng)用程序動(dòng)態(tài)

15、地創(chuàng)建菜單可以使系統(tǒng)資源更加節(jié)省,在應(yīng)用程序 中動(dòng)態(tài)創(chuàng)建菜單分兩個(gè)步驟:中動(dòng)態(tài)創(chuàng)建菜單分兩個(gè)步驟: 1 1調(diào)用函數(shù)調(diào)用函數(shù)CreateMenuCreateMenu創(chuàng)建空的彈出式創(chuàng)建空的彈出式菜單菜單 HMENU HMENU CreateMenu(void)CreateMenu(void) 2 2調(diào)用函數(shù)調(diào)用函數(shù)AppendMenuAppendMenu或或InsertMenuInsertMenu在該菜單中加入菜在該菜單中加入菜 單項(xiàng)。單項(xiàng)。 菜單和加速鍵資源及應(yīng)用 4.4.加速鍵資源加速鍵資源 加速鍵資源是常伴隨菜單使用的一種非常有用的加速鍵資源是常伴隨菜單使用的一種非常有用的資源,創(chuàng)建資源,創(chuàng)

16、建 加速鍵資源的步驟如下:加速鍵資源的步驟如下: (1)(1)在資源描述文件中定義加速鍵資源在資源描述文件中定義加速鍵資源 加速鍵名加速鍵名 ACCELERATORS ACCELERATORS 加速鍵標(biāo)識(shí)(加速鍵標(biāo)識(shí)(IDID),), 類(lèi)型類(lèi)型 NOINVERTNOINVERT/使用加速鍵時(shí),菜單項(xiàng)不高亮顯示使用加速鍵時(shí),菜單項(xiàng)不高亮顯示 ALTSHIFTCONTROL /ALTSHIFTCONTROL /組合鍵的組合方式組合鍵的組合方式 菜單和加速鍵資源及應(yīng)用 4.4.加速鍵資源加速鍵資源 加速鍵資源是常伴隨菜單使用的一種非常有用的加速鍵資源是常伴隨菜單使用的一種非常有用的資源,創(chuàng)建資源,創(chuàng)

17、建 加速鍵資源的步驟如下:加速鍵資源的步驟如下: 常用的加速鍵有兩種形式:常用的加速鍵有兩種形式: “char”,idchar”,id 例如:例如:“文件文件”菜單中菜單中“保存保存”項(xiàng)的加速鍵可定義為:項(xiàng)的加速鍵可定義為: “S” S” , IDM_SAVE, IDM_SAVE nCode, id VIRTKEYnCode, id VIRTKEY 使用使用虛擬鍵作為加速鍵。虛擬鍵作為加速鍵。 例如將例如將F1F1鍵定義為鍵定義為“幫助幫助”菜單項(xiàng)的加速鍵,其菜單項(xiàng)的加速鍵,其IDID標(biāo)識(shí)標(biāo)識(shí) 為為IDM_HELPIDM_HELP,其形式如下:,其形式如下: VK_F1,IDM_HELP,VI

18、RTKEYVK_F1,IDM_HELP,VIRTKEY 菜單和加速鍵資源及應(yīng)用 4.4.加速鍵資源加速鍵資源 加速鍵資源是常伴隨菜單使用的一種非常有用的加速鍵資源是常伴隨菜單使用的一種非常有用的資源,創(chuàng)建資源,創(chuàng)建 加速鍵資源的步驟如下:加速鍵資源的步驟如下: 2 2加載加速鍵資源加載加速鍵資源 調(diào)用函數(shù)調(diào)用函數(shù)LoadAcceleratorsLoadAccelerators加載加速鍵資源:加載加速鍵資源: HACCEL hAccelHACCEL hAccel; hAccel=LoadAcceleratorshAccel=LoadAccelerators ( ( hInstance, hIns

19、tance, / / 當(dāng)前程序?qū)嵗浔?dāng)前程序?qū)嵗浔?lpAcceINamelpAcceIName/ lpAccelName/ lpAccelName為加速鍵表名為加速鍵表名 ) ); 菜單和加速鍵資源及應(yīng)用 4.4.加速鍵資源加速鍵資源 加速鍵資源是常伴隨菜單使用的一種非常有用的加速鍵資源是常伴隨菜單使用的一種非常有用的資源,創(chuàng)建資源,創(chuàng)建 加速鍵資源的步驟如下:加速鍵資源的步驟如下: 3 3翻譯加速鍵翻譯加速鍵 翻譯操作經(jīng)常在應(yīng)用程序的消息循環(huán)中進(jìn)行:翻譯操作經(jīng)常在應(yīng)用程序的消息循環(huán)中進(jìn)行: while(GetMessage( case WM_COMMAND: switch (LOWOR

20、D(wParam) case IDOK: case IDCANCEL: break; case WM_CLOSE: break; return 0; 函數(shù)返回值不同:函數(shù)返回值不同:對(duì)話(huà)框消息處理函數(shù)對(duì)話(huà)框消息處理函數(shù) 返回返回BOOL值,而主窗口函數(shù)返回值,而主窗口函數(shù)返回 LRESULT值。值。 對(duì)話(huà)框消息處理函數(shù)不處理某些消息:對(duì)話(huà)框消息處理函數(shù)不處理某些消息: 對(duì)話(huà)框消息處理函數(shù)不需處理對(duì)話(huà)框消息處理函數(shù)不需處理 WM_PAINT,WM_DESTROY及及 WM_CREATE消息。消息。 對(duì)對(duì)未定義處理過(guò)程消息的處理不同:未定義處理過(guò)程消息的處理不同:主主 窗口函數(shù)通過(guò)調(diào)用函數(shù)窗口函數(shù)

21、通過(guò)調(diào)用函數(shù)DefwindowProc 完成對(duì)未定義處理過(guò)程消息的處理,而完成對(duì)未定義處理過(guò)程消息的處理,而 對(duì)話(huà)框消息處理函數(shù)如果接收到未定義對(duì)話(huà)框消息處理函數(shù)如果接收到未定義 處理過(guò)程的消息,則返回處理過(guò)程的消息,則返回FALSE。 BOOL CALLBACK ModalDlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) switch (message) case WM_INITDIALOG: return 1; case WM_COMMAND: switch (LOWORD(wParam) case IDOK: c

22、ase IDCANCEL: break; case WM_CLOSE: break; return 0; (1) WM_INITDIALOG消息消息 對(duì)話(huà)框在響應(yīng)對(duì)話(huà)框在響應(yīng)WM_INITDIALOG消息消息 時(shí),完成初始化操作,在功能上與主窗時(shí),完成初始化操作,在功能上與主窗 口函數(shù)的口函數(shù)的WM_CREATE消息相似。消息相似。 (2) WM_COMMAND消息消息 對(duì)話(huà)框在響應(yīng)消息對(duì)話(huà)框在響應(yīng)消息WM_COMMAND 時(shí),通過(guò)查看消息字參數(shù)(時(shí),通過(guò)查看消息字參數(shù)(wParam) 的低位字節(jié),與控件標(biāo)識(shí)(的低位字節(jié),與控件標(biāo)識(shí)(ID)相比較,)相比較, 以確定產(chǎn)生交互請(qǐng)求的控件并據(jù)此轉(zhuǎn)入

23、以確定產(chǎn)生交互請(qǐng)求的控件并據(jù)此轉(zhuǎn)入 響應(yīng)的處理過(guò)程進(jìn)行處理。響應(yīng)的處理過(guò)程進(jìn)行處理。 模態(tài)對(duì)話(huà)框資源操作步驟模態(tài)對(duì)話(huà)框資源操作步驟 3.3.調(diào)用函數(shù)調(diào)用函數(shù)DialogBoxDialogBox顯示對(duì)話(huà)框顯示對(duì)話(huà)框 在資源描述文件中定義對(duì)話(huà)框資源和聲明對(duì)話(huà)框消息在資源描述文件中定義對(duì)話(huà)框資源和聲明對(duì)話(huà)框消息 處理函數(shù)后,應(yīng)用程序可以通過(guò)調(diào)用處理函數(shù)后,應(yīng)用程序可以通過(guò)調(diào)用DialogBoxDialogBox函數(shù)函數(shù) 在窗口中顯示對(duì)話(huà)框,該函數(shù)原型為:在窗口中顯示對(duì)話(huà)框,該函數(shù)原型為: int DialogBoxint DialogBox ( HINSTANCE hInstance, / ( HI

24、NSTANCE hInstance, /當(dāng)前應(yīng)用程序?qū)嵗浔?dāng)前應(yīng)用程序?qū)嵗浔?LPCTSTR lpszDialogName, / LPCTSTR lpszDialogName, /對(duì)話(huà)框資源的名稱(chēng)對(duì)話(huà)框資源的名稱(chēng) HWND hwndParent,HWND hwndParent, / /擁有該對(duì)話(huà)框的窗口句柄擁有該對(duì)話(huà)框的窗口句柄 DLGPROC lpDialogFunc /DLGPROC lpDialogFunc /對(duì)話(huà)框處理函數(shù)的地址對(duì)話(huà)框處理函數(shù)的地址 ) ) 模態(tài)對(duì)話(huà)框資源操作步驟模態(tài)對(duì)話(huà)框資源操作步驟 4.4.關(guān)閉對(duì)話(huà)框關(guān)閉對(duì)話(huà)框 在對(duì)話(huà)框窗口函數(shù)中調(diào)用函數(shù)在對(duì)話(huà)框窗口函數(shù)中調(diào)用函

25、數(shù)EndDialog可以關(guān)閉對(duì)話(huà)可以關(guān)閉對(duì)話(huà) 框,關(guān)閉對(duì)話(huà)框函數(shù)的一般形式:框,關(guān)閉對(duì)話(huà)框函數(shù)的一般形式: BOOL EndDialog(HWND hdlg,INT_PTR nResult) 其中,其中,hdlg為對(duì)話(huà)框句柄;為對(duì)話(huà)框句柄;nResult為從對(duì)話(huà)框返回到為從對(duì)話(huà)框返回到 DialogBox函數(shù)的值。函數(shù)的值。 特殊的模態(tài)對(duì)話(huà)框特殊的模態(tài)對(duì)話(huà)框 Windows消息框是模態(tài)對(duì)話(huà)框的一種特殊形式,應(yīng)用程序可通消息框是模態(tài)對(duì)話(huà)框的一種特殊形式,應(yīng)用程序可通 過(guò)調(diào)用函數(shù)過(guò)調(diào)用函數(shù)MessageBox生成一些簡(jiǎn)單但又常用的消息框:生成一些簡(jiǎn)單但又常用的消息框: int MessageBox

26、 ( HWND hwnd, /擁有消息框的窗口擁有消息框的窗口 LPCTSTR lpszText, /消息框中顯示的字符串消息框中顯示的字符串 LPCTSTR lpszCaption,/作為標(biāo)題的字符串作為標(biāo)題的字符串 DWORD dwType/指定消息框的內(nèi)容指定消息框的內(nèi)容 ) 非模態(tài)對(duì)話(huà)框資源操作步驟非模態(tài)對(duì)話(huà)框資源操作步驟 定義對(duì)話(huà)框樣式定義對(duì)話(huà)框樣式 定義對(duì)話(huà)框消息處理函數(shù)定義對(duì)話(huà)框消息處理函數(shù) 創(chuàng)建對(duì)話(huà)框函數(shù)創(chuàng)建對(duì)話(huà)框函數(shù) 關(guān)閉對(duì)話(huà)框關(guān)閉對(duì)話(huà)框 非模態(tài)對(duì)話(huà)框資源操作步驟非模態(tài)對(duì)話(huà)框資源操作步驟 1.1.定義對(duì)話(huà)框樣式定義對(duì)話(huà)框樣式 非模態(tài)對(duì)話(huà)框的定義方式與模態(tài)對(duì)話(huà)框的定義方式基本非

27、模態(tài)對(duì)話(huà)框的定義方式與模態(tài)對(duì)話(huà)框的定義方式基本 一致,只是非模態(tài)對(duì)話(huà)框的樣式中應(yīng)包含一致,只是非模態(tài)對(duì)話(huà)框的樣式中應(yīng)包含WS_VISIBLE, 否則非模態(tài)對(duì)話(huà)框?qū)o(wú)法在屏幕上顯示。否則非模態(tài)對(duì)話(huà)框?qū)o(wú)法在屏幕上顯示。 非模態(tài)對(duì)話(huà)框資源操作步驟非模態(tài)對(duì)話(huà)框資源操作步驟 2.2.定義非模態(tài)對(duì)話(huà)框消息處理函數(shù)定義非模態(tài)對(duì)話(huà)框消息處理函數(shù) 由于非模態(tài)對(duì)話(huà)框并不禁止應(yīng)用程序向其他窗口發(fā)送消由于非模態(tài)對(duì)話(huà)框并不禁止應(yīng)用程序向其他窗口發(fā)送消 息,因此,在息,因此,在WinMain函數(shù)的消息循環(huán)中必須包含截獲函數(shù)的消息循環(huán)中必須包含截獲 發(fā)往非模態(tài)對(duì)話(huà)框的消息,并將其發(fā)往相應(yīng)的對(duì)話(huà)框處發(fā)往非模態(tài)對(duì)話(huà)框的消息,

28、并將其發(fā)往相應(yīng)的對(duì)話(huà)框處 理函數(shù)進(jìn)行處理。其消息循環(huán)過(guò)程的一般形式為:理函數(shù)進(jìn)行處理。其消息循環(huán)過(guò)程的一般形式為: while (GetMessage( DispatchMessage ( 非模態(tài)對(duì)話(huà)框資源操作步驟非模態(tài)對(duì)話(huà)框資源操作步驟 3.3.創(chuàng)建對(duì)話(huà)框函數(shù)創(chuàng)建對(duì)話(huà)框函數(shù) 非模態(tài)對(duì)話(huà)框的創(chuàng)建由函數(shù)非模態(tài)對(duì)話(huà)框的創(chuàng)建由函數(shù)CreateDialogCreateDialog完成完成 HWND CreateDialogHWND CreateDialog ( HINSTANCE hInstance,( HINSTANCE hInstance,/當(dāng)前應(yīng)用程序?qū)嵗浔?dāng)前應(yīng)用程序?qū)嵗浔?LPCTSTR

29、 lpszDialogName,LPCTSTR lpszDialogName,/對(duì)話(huà)框名對(duì)話(huà)框名 HWND hwndParent,HWND hwndParent,/擁有該對(duì)話(huà)框的窗口句柄擁有該對(duì)話(huà)框的窗口句柄 DLGPROC lpDialogFuncDLGPROC lpDialogFunc ) ) /對(duì)話(huà)框處理函數(shù)地址對(duì)話(huà)框處理函數(shù)地址 非模態(tài)對(duì)話(huà)框資源操作步驟非模態(tài)對(duì)話(huà)框資源操作步驟 3.3.關(guān)閉對(duì)話(huà)框關(guān)閉對(duì)話(huà)框 非 模 態(tài) 對(duì) 話(huà) 框 調(diào) 用 函 數(shù)非 模 態(tài) 對(duì) 話(huà) 框 調(diào) 用 函 數(shù) D e s t r o y W i n d o wD e s t r o y W i n d o w

30、關(guān) 閉 由關(guān) 閉 由 CreateDialogCreateDialog函數(shù)創(chuàng)建的對(duì)話(huà)框,該函數(shù)的原型為:函數(shù)創(chuàng)建的對(duì)話(huà)框,該函數(shù)的原型為: BOOL DestroyWindow(HWND hdlg); 位圖資源 位圖是一種數(shù)字化的圖形表示形式,是表位圖是一種數(shù)字化的圖形表示形式,是表 示一個(gè)圖像目標(biāo)的系列數(shù)據(jù)。位圖中的每示一個(gè)圖像目標(biāo)的系列數(shù)據(jù)。位圖中的每 個(gè)像素點(diǎn)由位圖文件中的一位或多位數(shù)據(jù)個(gè)像素點(diǎn)由位圖文件中的一位或多位數(shù)據(jù) 表示。整個(gè)位圖的信息被細(xì)化為每個(gè)像素表示。整個(gè)位圖的信息被細(xì)化為每個(gè)像素 點(diǎn)的屬性值。點(diǎn)的屬性值。 位圖數(shù)據(jù)量一般較大,為了提高顯示刷新位圖數(shù)據(jù)量一般較大,為了提高顯

31、示刷新 速度,位圖操作須在內(nèi)存中進(jìn)行速度,位圖操作須在內(nèi)存中進(jìn)行。 位圖資源 位圖的操作過(guò)程位圖的操作過(guò)程 1.1.定義位圖句柄定義位圖句柄 2.2.加載或創(chuàng)建位圖加載或創(chuàng)建位圖 3.3.選選入內(nèi)存設(shè)備環(huán)境入內(nèi)存設(shè)備環(huán)境 4.4.輸出輸出 位圖資源位圖資源 位圖的操作過(guò)程:定義位圖句柄位圖的操作過(guò)程:定義位圖句柄 HBITMAP hBmHBITMAP hBm 位圖的操作過(guò)程:加載或創(chuàng)建位圖位圖的操作過(guò)程:加載或創(chuàng)建位圖 加載:加載:hBm=LoadBitmap(hInstancehBm=LoadBitmap(hInstance, lpszName, lpszName) ) 創(chuàng)建:創(chuàng)建:hBm=

32、CreateCompatibleBitmap(hdc,nWidth,nHeighthBm=CreateCompatibleBitmap(hdc,nWidth,nHeight) ) 位圖資源位圖資源 位圖的操作過(guò)程:加載或創(chuàng)建位圖位圖的操作過(guò)程:加載或創(chuàng)建位圖 加載:加載:hBm=LoadBitmap(hInstancehBm=LoadBitmap(hInstance, lpszName, lpszName) ) 創(chuàng)建:創(chuàng)建:hBm=CreateCompatibleBitmap(hdc,nWidth,nHeighthBm=CreateCompatibleBitmap(hdc,nWidth,nHe

33、ight) ) 內(nèi)存設(shè)備環(huán)境的創(chuàng)建及初始化工作中,常由應(yīng)用程序通過(guò)內(nèi)存設(shè)備環(huán)境的創(chuàng)建及初始化工作中,常由應(yīng)用程序通過(guò) 響應(yīng)響應(yīng)WM_CREATE消息消息完成加載或創(chuàng)建位圖的操作,其一完成加載或創(chuàng)建位圖的操作,其一 般形式為:般形式為: case WM_CREATE: hdc= GetDC(hwnd); hdcmem= CreateCompatibleDC(hdc); ReleaseDC(hwnd,hdc); 位圖資源位圖資源 位圖的操作過(guò)程:位圖的操作過(guò)程:選選入內(nèi)存設(shè)備入內(nèi)存設(shè)備 獲取了內(nèi)存設(shè)備句柄后,應(yīng)用程序調(diào)用獲取了內(nèi)存設(shè)備句柄后,應(yīng)用程序調(diào)用SelectObjectSelectObje

34、ct 函數(shù)將位圖選入內(nèi)存設(shè)備環(huán)境中,其形式如下:函數(shù)將位圖選入內(nèi)存設(shè)備環(huán)境中,其形式如下: SelectObject(hdcmem,hBm); 將位圖選入內(nèi)存設(shè)備環(huán)境后,即可對(duì)其進(jìn)行編輯。將位圖選入內(nèi)存設(shè)備環(huán)境后,即可對(duì)其進(jìn)行編輯。 位圖資源位圖資源 位圖的操作過(guò)程:輸出位圖的操作過(guò)程:輸出 應(yīng)用程序調(diào)用應(yīng)用程序調(diào)用BitBltBitBlt在指定的設(shè)備上輸出內(nèi)存中的位在指定的設(shè)備上輸出內(nèi)存中的位 圖。函數(shù)圖。函數(shù)BitBltBitBlt將位圖從內(nèi)存設(shè)備環(huán)境拷貝到設(shè)備環(huán)將位圖從內(nèi)存設(shè)備環(huán)境拷貝到設(shè)備環(huán) 境,其原型如下:境,其原型如下: BOOL BitBltBOOL BitBlt ( ( HDC

35、 HDC hdcDest,hdcDest,/目的設(shè)備環(huán)境目的設(shè)備環(huán)境句柄句柄 /位圖基點(diǎn)及位圖基點(diǎn)及高寬高寬 int int XDest,int YDest, int nWidth, int nHeitght, XDest,int YDest, int nWidth, int nHeitght, / /源設(shè)備環(huán)境句柄及位圖基點(diǎn)源設(shè)備環(huán)境句柄及位圖基點(diǎn) HDC HDC hdcSrc, int nXSrc,int nYsrc, hdcSrc, int nXSrc,int nYsrc, DWORD dwRopDWORD dwRop /標(biāo)識(shí)位圖顯示方式標(biāo)識(shí)位圖顯示方式 ) ) 位圖資源 調(diào)整位圖 int GetObject (HANDLE hObject, int nCount, LPVOID lpObject); BOOL StretchBlt(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論