第10章:用戶交互對象——菜單、工具欄和狀態欄_第1頁
第10章:用戶交互對象——菜單、工具欄和狀態欄_第2頁
第10章:用戶交互對象——菜單、工具欄和狀態欄_第3頁
第10章:用戶交互對象——菜單、工具欄和狀態欄_第4頁
第10章:用戶交互對象——菜單、工具欄和狀態欄_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Visual C+Visual C+1第第10章章 用戶交互對象用戶交互對象菜單、工具欄和狀態欄菜單、工具欄和狀態欄 教學要點教學要點 本章內容主要包括菜單資源和工具欄資源的建菜單資源和工具欄資源的建立立,菜單和工具欄按鈕對象對WM_COMMAND,UPDATE_COMMAND_UI消息的響應消息的響應,狀態欄牽涉的字符串資源的編輯和對UPDATE _COMMAND _UI消息的響應,在框架類中如何管理工具欄和狀態欄。 Visual C+Visual C+2本章內容10.1 菜單菜單 10.2 10.2 工具欄工具欄10.3 10.3 狀態欄狀態欄 習題習題 Visual C+Visual C

2、+310.1菜單菜單 本節內容本節內容 10.1.1 一個菜單的綜合實例 10.1.2 菜單的組成與分類 10.1.3 創建菜單資源 10.1.4 菜單消息 10.1.5 菜單消息的響應 *10.1.6 為菜單增加快捷鍵和加速鍵Visual C+Visual C+410.1.1一個菜單的綜合實例一個菜單的綜合實例 【例10-1】利用應用程序向導MFC AppWizard(exe)創建一個單文檔的應用程序,實現菜單資源的建立與消息的響應。1 生成步驟 : (1)啟動VC6.0,選擇“File”菜單的“New”命令,在彈出的“New”對話框中選擇“Project”選項卡。在“Project”選項卡

3、的列表中選擇“MFC AppWizard(exe)”項,在“Project Name”編輯框中輸入要創建的工程名稱MenuExam,在“Location”編輯框中設置工程的存放位置,單擊“OK”按鈕。 (2)在彈出的“MFC AppWizard-Step1” 對話框中選擇“single document”,即應用程序的類型為單文檔模式,然后單擊“Finish”按鈕。 (3)在彈出的“New Project information” 對話框中單擊“OK”按鈕,完成應用程序框架的創建。Visual C+Visual C+5 2程序功能 該程序為一個單文檔的應用程序,程序啟動后,單擊“圖形”菜單中的

4、“餅圖”,則在當前的客戶區中顯示一個餅圖;單擊“圖形”菜單中的“弦圖”,則在當前的客戶區中顯示一個弦圖。圖10.1所顯示的就是使用中的MenuExam程序。 3程序牽涉到的知識程序牽涉到的知識 掌握這幾種類型菜單的資源設計與消息的響應。掌握這幾種類型菜單的資源設計與消息的響應。Visual C+Visual C+610.1.2菜單的組成與分類菜單的組成與分類 1菜單的組成 菜單是一種資源,它在資源腳本中經常被存作一個模板,用戶通常從菜單欄中選擇命令來操作應用程序。菜單主要由下列部分組成: (1)菜單欄 (2)菜單 (3)菜單項 (4)子菜單 (5)分隔條(separator)2菜單的分類 Wi

5、ndows 系統支持三種類型的菜單,它們分別是菜單欄(主菜單)、彈出式子菜單和上下文菜單。Visual C+Visual C+710.1.3 創建菜單資源創建菜單資源 VC應用程序的資源是由應用程序使用,但卻是在程序之外定義的只讀數據。菜單是一種資源,可以利用文本編輯器來創建和修改資源,它操作麻煩,不具有可視化的效果。現在的VC程序中的資源編輯都是通過可視化的資源編輯器來進行的。對于SDI的應用程序,應用程序向導生成一個菜單資源IDR_MAINFRAM,對于一般的程序,我們就直接在上面添加自己所需要的菜單資源,方法為: 1打開缺省菜單資源 在Workspace窗口中選擇ResourceView

6、選項卡,打開MenuExam工程的資源列表,選中“Menu”資源項目下的“IDR_MAINFRAME”,可以看到應用程序缺省定義的菜單資源形式,它包含如圖10.2所示的菜單中的“文件”、“編輯”、“查看”、“幫助”四個菜單項。Visual C+Visual C+8 2增加一個主菜單項“圖形” 選擇“幫助”菜單,然后按“Insert”鍵將會在“查看”與“幫助”菜單項之間加入一個空菜單項。雙擊該菜單項,彈出圖10.3所示的主菜單屬性對話框,并在其中的“Caption”編輯框中輸入主菜單的標題為“圖形”。這樣在應用程序的主框架中就增加了一個主菜單項“圖形”。 3、增加主菜單“圖形”的子菜單項 用鼠標

7、雙擊“圖形”菜單下的空白菜單項,彈出圖10.4所示的子菜單屬性設置對話框,在ID組合框中輸入菜單的資源ID為ID_GRAPH_PIE,在“Caption”編輯框中輸入“餅圖”,在“Prompt”編輯框中輸入菜單項提示信息為“在客戶區畫一個餅圖n畫餅圖”。 用同樣的方法再添加一個菜單項,其中菜單資源ID為ID_GRAPH_CHORD,“Caption”的內容為“弦圖”,“Prompt”中的內容為“在客戶區畫一個弦圖n畫弦圖”。 Visual C+Visual C+9圖10.2 單文檔程序的缺省菜單 Visual C+Visual C+10 圖10.3 主菜單屬性對話框 圖10.4 子菜單的屬性對

8、話框Visual C+Visual C+11 4增加上下文菜單 上 下 文 菜 單 必 須 要 有 自 己 的 資 源 I D , 在Workspace窗口中選擇ResourceView選項卡,打開MenuExam工程的資源列表,鼠標右鍵單擊“Menu”項,在彈出菜單中選擇“Insert Menu”,完后將該菜單資源的ID修改為IDR_POPUP_MENU。 用同步驟3的方法在IDR_POPUP_MENU資源中添加主菜單“上下文菜單”。Visual C+Visual C+12 10.1.4 菜單消息菜單消息 菜單被選中時發送消息給Windows,再由Windows傳送給應用程序的消息映射。在M

9、FC消息映映射中,有三個菜單消息:WM_COMMAND、ON_UPDATE_COMMAND_UI和WM_CONTEXTMENU。1WM_COMMAND消息 當用戶選中了菜單項,激活了相關鍵加速器或者是選中了與此菜單項相對應的工具欄按鈕,Windows發送WM_COMMAND消息,該消息又叫命令消息。命令消息的消息映射采用以下形式: ON_COMMAND(MenuId, ClassMethod)2UPDATE_COMMAND_UI消息 UPDATE_COMMAND_UI是MFC所特有的,如果你想根據應用程序的當前狀態激活或者使菜單項無效,或者在程序運行的某一時刻反映菜單項的可用性,該條消息就要處

10、理。消息映射采用以下形式: ON_UPDATE_COMMAND_UI(MenuID, ClassMethod) Visual C+Visual C+133上下文菜單消息WM_CONTEXTMENU 在Windows系統下,隨處可見上下文菜單,只要你是在不同程序的不同操作區域內,按下鼠標右鍵,都會出來一個與當前操作上下文有關的菜單,它就是上下文菜單。當用戶按下 鼠 標 右 鍵 時 , 就 會 發 出 上 下 文 菜 單 消 息WM_CONTEXTMENU。該消息的消息映射宏為: ON_WM_CONTEXTMENU()Visual C+Visual C+14 10.1.5 菜單消息的響應菜單消息的

11、響應 Windows是通過消息傳遞機制運行的。菜單項 對 命 令 的 激 發 、 調 用 是 通 過 發 送WM_COMMAND消息來實現的。在單文檔和多文檔的應用程序中,要考慮消息的路由問題。 命令消息WM_COMMAND可以映射到不同的類中,可以根據菜單的不同作用進行不同的映射。對于通用的菜單,則在框架中映射。About對話框的顯示菜單最好在應用程序類中映射。 在使用類向導為菜單的命令消息進行映射后,ClassWizard自動向程序中插入菜單命令消息映射入口、消息處理函數的原型說明和空的消息映射函數體。 Visual C+Visual C+151添加WM_COMMAND菜單命令消息響應函數

12、 (1)打開前面創建的MenuExam工程,選擇View|ClassWizard命令打開類向導對話框。 (2)在圖10.5所示的對話中,單擊“ClassName”列表框中的下拉按鈕,在其中選擇“CMenuExamView”項,在“Object IDs”列表框中選擇“ID_GRAPH_PIE”,在“Message”列表中選擇“Command”項,然后單擊“Add Fucntion”按鈕彈出 “Add Member Function”對話框,采用默認的函數名,單擊“OK”按鈕。 (3)用同樣的方法為視圖類CmenuExamView中添加了“弦圖”菜單項的命令消息函數 OnGraphChord()。

13、 (4)消息映射函數的實現 點擊代碼Visual C+Visual C+162添加UPDATE_COMMAND_UI更新菜單命令用戶接口的消息響應函數 (1)打開MenuExam工程,選擇View|ClassWizard命令打開類向導對話框,單擊“ClassName”列表框中的下拉按鈕,在其中選擇“CMenuExamView”項,在“Object IDs”列表框中選擇“ I D _ G R A P H _ P I E ” , 在 “ M e s s a g e ” 列 表 中 選 擇“UPDATE_COMMAND_UI”項,然后單擊“Add Fucntion”按鈕彈出“Add Member F

14、unction”對話框,采用默認的函數名OnUpdateGraphPie,單擊“OK”按鈕。 (2)用同樣的方法,在視圖類CmenuExamView中添加了“弦圖”菜單項的更新命令用戶接口的消息函數OnUpdateGraphChord()。 (3)消息映射函數的實現 “ 餅 圖 ” 菜 單 項 的 更 新 命 令 用 戶 接 口 消 息 函 數OnUpdateGraphPie的代碼Visual C+Visual C+17 void CMenuExamView:OnUpdateGraphPie(CCmdUI* pCmdUI) pCmdUI-Enable(!m_IsPie); “ 弦 圖 ” 菜

15、單 項 的 更 新 命 令 用 戶 接 口 消 息 函 數OnUpdateGraphChord的代碼 void CMenuExamView:OnUpdateGraphChord(CCmdUI* pCmdUI) pCmdUI-Enable(m_IsPie); 3添加WM_CONTEXTMENU上下文菜單消息響應函數 (1)打開MenuExam工程,選擇View|ClassWizard命令打開類向導對話框,單擊“ClassName”列表框中的下拉按鈕,在其中選擇“CMenuExamView”項,在“Object IDs”列表框中選擇“CMe nuExa mVie w ” ,在“M e s s a

16、g e ” 列表中選擇“WM_CONTEXTMENU”項,然后單擊“Add Fucntion”按鈕彈出“Add Member Function”對話框,采用默認函數名OnContextMenu,單擊“OK”按鈕。Visual C+Visual C+18(2)鼠標右鍵單擊響應函數)鼠標右鍵單擊響應函數OnContextMenu()的實現的實現 void CMenuExamView:OnContextMenu(CWnd* pWnd, CPoint point) CMenu PopupMenu; /定義菜單對象PopupMenu.LoadMenu (IDR_POPUP_MENU);PopupMenu

17、.GetSubMenu(0) -TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x,point.y,this); /彈出上下文菜單 Visual C+Visual C+1910.1.6 為菜單增加快捷鍵和加速鍵為菜單增加快捷鍵和加速鍵 在應用程序中,可以為每個菜單項增加快捷鍵和加速鍵。所謂快捷鍵就是當包含該菜單項的菜單被打開時,直接按某指定的鍵等同于用鼠標單擊該菜單項。所謂加速鍵就是在沒有打開包含該菜單項的菜單時,按組合鍵Ctrl+某指定鍵等價于用鼠標單擊該菜單項。1快捷鍵的設置 打開菜單資源編輯器,雙擊“餅圖”,修改Caption編輯

18、框的標題為“餅圖(&P)tCtrl+T”。2加速鍵的設置(1)在WorkSpace窗口中選擇ResourceView選項卡,單擊Accelerator項前面的“+”號,雙擊展開的列表項中的IDR_MAINFRAME,出現加速鍵資源編輯器。 ( 2 ) 雙擊加速鍵列表項最下面的空白項,單擊ID組合框的下拉按鈕,從下拉列表中選擇ID_GRAPH_PIE,在Key組合框中輸入大寫字母T。Visual C+Visual C+2010.2工具欄工具欄 本節內容本節內容 10.2.1 工具欄簡介 10.2.2 一個使用工具欄的應用程序 10.2.3 創建工具欄資源模板 10.2.4 工具欄類CToolBa

19、r 10.2.5 在應用程序框架中創建工具欄對象 10.2.6 工具欄的消息處理機制 Visual C+Visual C+2110.2.1工具欄簡介工具欄簡介 工具欄為用戶提供了程序命令的直接訪問方式,工具欄中包含有一些水平排放的圖形按鈕,當用一次鼠標單擊它們時就發送相應的命令消息。 從編程角度看,工具欄就是一個子窗口,它顯示一系列位圖按鈕。由于工具欄按鈕一般對應著某個菜單選項,因此工具欄的某個按鈕和菜單的某個選項除了創建的方式和在界面的顯示方式不一樣外,對于消息的響應都是一樣的。 工具欄和狀態欄對象一般作為框架窗口類的成員變量聲明,在創建框架窗口時自動創建它們,在銷毀框架窗口時自動銷毀所創建

20、的控件欄對象。使用AppWizard創建了應用程序的基本框架后,也就建立了初始的工具欄和狀態欄對象。Visual C+Visual C+2210.2.2一個使用工具欄的應用程序一個使用工具欄的應用程序 【例10-2】利用應用程序向導MFC AppWizard(exe)創建一個單文檔的應用程序,實現工具欄的操作。1生成步驟 模仿10.1.1節中的方法,利用應用程序向導MFC AppWizard(exe)創建一個單文檔的應用程序框架,該工程的名稱為ToolBarExam,所有的步驟都采用缺省的設置。2程序功能 本程序是一個演示工具欄的單文檔應用程序。當程序運行后,在工具欄上有自己新設計的兩個工具條

21、按鈕,單擊一個,可以重新啟動計算機,單擊另一個,可以把當前的鼠標樣子變成一個動畫圖形。3技術要點 本程序主要掌握工具欄資源的建立方法,工具欄對命令消息的響應,熟悉一些API函數的用法,體會VC對系統的控制。Visual C+Visual C+2310.2.3 創建工具欄資源模板創建工具欄資源模板 工具欄也是一種資源,因此使用工具欄的首要工作是利用VC的可視化的資源編輯器進行工具欄資源的創建與保存,下面為創建與編輯工具欄資源的步驟。 1打開剛才創建的工程ToolBarExam。 2在WorkSpace窗口中選擇ResourceView選項卡,單擊ToolBar項前面的“+”號展開工具欄資源項目,

22、系統默認的工具欄的ID值為IDR_MAINFRAM。雙擊IDR_MAINFRAM,VC以設計模式顯示出工具條,注意,若想刪除無用的工具欄按鈕,只需把無用的按鈕脫離工具欄即可。 3我們在工具條最右邊的空白圖標中增加兩個新圖標,雙擊創建好的圖標,彈出屬性對話框,設定該兩個工具條按鈕的ID為ID_QUIT_WINDOWS和ID_CARTOON,同時在提示欄Prompt中輸入“重新啟動Windows操作系統n重新啟動”和”裝載動畫鼠標圖形n動畫圖標”。Visual C+Visual C+2410.2.4 工具欄類工具欄類CToolBar 類CToolBar提供了帶有位圖按鈕和可選分隔符的工具欄,工具欄

23、按鈕有下壓式、復選框按鈕或單選按鈕。CToolBar對象通常是做為派生類CFrameWnd或CMDIFrameWnd框架窗口的對象成員,利用AppWizard創建應用程序框架時,在框架類中已創建了一個CToolBar對象。 MFC的工具欄類CToolBar是創建用來接收某些命令鍵入并向用戶顯示狀態信息的類,利用它可以立即訪問程序命令。 從編程的角度看,工具欄是一個顯示一系列位圖按鈕的子窗口,一旦創建了工具欄并使其可見,就可以用操作窗口的方法來操作它。工具欄的按鈕和菜單或加速鍵一樣,單擊他們都生成WM_COMMAND消息,并且工具欄的命令ID與菜單或加速鍵的命令ID相同。下面為該類中幾個重要的函

24、數說明。Visual C+Visual C+25 1Create()函數 Create()函數用于創建一個Windows工具欄,并將其連接到CToolBar對象上,同時設置工具條的默認高度。該函數的原型如下: BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,UINT nID = AFX_IDW_TOOLBAR ); 2LoadToolBar()函數 該函數裝載指定的工具欄資源,它的原型為: BOOLLoadToolBar(LPCTSTR lpszResourceName ); BOO

25、L LoadToolBar( UINT nIDResource );Visual C+Visual C+2610.2.5 在應用程序框架中創建在應用程序框架中創建工具欄對象工具欄對象 在利用MFC AppWizard生成的單文檔應用程序中,工具欄對象的創建是在應用程序框架類中,可以說應用程序框架類的一個主要功能就是管理工具欄和狀態欄。 1在框架類CMainFrame類中聲明工具欄對象 打開上一節所生成的應用程序。在WorkSpace窗口中選擇ClasseView選項卡,用鼠標雙擊類視圖中的CMainFrame類,程序將定位到該類對應的頭文件MainFrm.h中,下面為該類的頭文件中有關框架類的

26、聲明的內容,所有代碼都是自動生成的,請利用上一篇所講的面向對象理論知識對它進行分析。 點擊代碼Visual C+Visual C+27 語句CToolBar m_wndToolBar;代表在框架類中有一個從CToolBar派生的對象_wndToolBar;語句CStatusBar m_wndStatusBar代表在框架類中有一個從狀態欄類CStatusBar實例化一個狀態欄對象m_wndStatusBar。2在框架類CMainFrame類的實現文件中初始化工具欄對象 打 開 上 一 節 所 生 成 的 應 用 程 序 。 在WorkSpace窗口中選擇ClasseView選項卡,用鼠標單擊類視

27、圖中的CMainFrame類,將該類展開,雙擊框架類的OnCreate成員函數,程序將自動定位到該類對應的實現文件MainFrm.cpp中的OnCreate的實現處。下面為該類的消息響應函數OnCreate的主要內容(WM_CREATE的響應函數),所有代碼都是自動生成的。 點擊代碼Visual C+Visual C+2810.2.6 工具欄的消息處理機制工具欄的消息處理機制 若一個工具欄按鈕的資源ID與菜單選項的資源ID一樣時,單擊工具欄按鈕與選擇該菜單發出的消息都一樣。該命令消息可以像菜單消息一樣進行消息的傳遞,因此在菜單一章中講的命令消息的傳遞機制也同樣適合于工具欄消息。工具欄要處理的兩

28、個主要消息是WM_COMMAND和UPDATE_COMMAND_UI。 和菜單一樣,應用程序是通過提供消息映射函數來處理單擊工具欄按鈕所產生的命令,如果工具欄的某個按鈕沒有消息COMMAND或UPDATE_COMMAND_UI對應的處理函數,那么框架自動使該按鈕無效。 下面我們在視圖類中添加對工具欄按鈕ID_QUIT_WINDOWS和ID_CARTOON的消息響應函數,添加的方法和對菜單的單擊一樣,參見10.1.5節的敘述。點擊代碼Visual C+Visual C+2910.3 狀態欄狀態欄 本節內容本節內容 10.3.1 狀態欄簡介 10.3.2 一個使用狀態欄的應用程序 10.3.3 狀

29、態欄類CStatuslBar 10.3.4 在應用程序框架中創建狀態欄對象 10.3.5 創建字符串資源 10.3.6 狀態欄的消息處理Visual C+Visual C+30 10.3.1 狀態欄簡介狀態欄簡介 狀態欄是顯示在應用程序主窗口底部的的一個多區域子窗口,用于顯示文本信息。 狀態欄中的子窗口可以分為狀態信息行和狀態指示器,如圖10.10所示。狀態信息行顯示應用程序動態提供的字符串,例如單擊菜單的命令提示信息,狀態指示器顯示一些狀態信息,如鍵盤某些鍵的狀態如Capslock鍵的狀態。 AppWizard創建應用程序時,一般自動添加狀態欄,程序員在編程的過程中只需在原有的狀態欄的基礎上

30、適當修改即可。Visual C+Visual C+3110.3.1狀態欄狀態欄 狀態信息行 狀態指示器 圖10.10 Word軟件中的狀態欄 Visual C+Visual C+3210.3.2 一個使用狀態欄的應用程序一個使用狀態欄的應用程序【例10-3】利用應用程序向導MFC AppWizard(exe)創建一個單文檔的應用程序,實現狀態欄的操作。1程序功能 本程序是在上一節將的程序基礎上添加一個演示狀態欄的功能。當程序運行后,在狀態欄的信息提示行上顯示鼠標在屏幕上的位置,在狀態欄指示器的最右端顯示系統的時間。2技術要點 本程序主要練習狀態欄牽涉的字符串資源的的建立方法,狀態欄對更新命令用

31、戶接口消息的響應,熟悉自己在類中添加消息映射的方法,熟悉MFC對狀態欄的支持。 Visual C+Visual C+3310.3.3狀態欄類狀態欄類CStatuslBar MFC的CStatusBar類用來實現狀態欄的功能,CStatusBar類為CControlBar類的派生類,它定義了一個默認的構造函數和一個Create()成員函數。CStatusBar:Create()函數用于創建一個Windows狀態欄(子窗口),置初始字體和狀態欄的高度,該函數原型為: Bool Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD |WS_VISIBL

32、E|CBRS_BOTTOM,UINT nID = AFX_IDW_STATUS_BAR ); CStatusBar類還提供一系列成員函數來管理狀態欄的指示器,主要有: 1SetIndicators()函數 函數SetIndicators()用于設置指示器ID,并裝入由每個ID指定的字符串資源,然后將指示器的文字設置為該字符串,該函數的原型為: BOOL SetIndicators( const UINT* lpIDArray, int nIDCount ); Visual C+Visual C+34 2SetPaneInfo()函數 數SetPaneInfo()用于設置給定索引值的指示器ID、

33、風格和寬度。它的原型為: void SetPaneInfo( int nIndex, UINT nID, UINT nStyle,int cxWidth ); 該函數給標識符欄設置一個新的ID、風格和寬度。 3SetPaneText()函數 函數SetPaneText()用于設置給定索引值的指示器的文本,它的 原型為: BOOL SetPaneText( int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE ); 該函數用lpszNewText所指向的字符串來設置狀態欄的文字。Visual C+Visual C+3510.3.4在應用程序框架

34、中在應用程序框架中 創建狀態欄對象創建狀態欄對象 在利用MFC AppWizard生成的單文檔應用程序中,狀態欄對象的創建是在應用程序框架類中。可以說應用程序框架類的一個主要功能就是管理工具欄和狀態欄的。因此該節的程序代碼請參照10.3.4節內容。1在框架類CMainFrame類的.h頭文件中聲明狀態欄對象 在MFC的應用程序中,狀態欄的聲明在在框架類CMainFrame類的頭文件Mainframe.h中。一般情況在,一個狀態欄聲明為框架窗口的受保護的CStatusBar成員變量: protected: CStatusBar m_wndStatusBar; 2在框架類CMainFrame類.c

35、pp初始化狀態欄對象 狀態欄的創建和初始化工作是由該框架窗口在它的OnCreate()函數中完成。Mainfrm.cpp中的OnCreate()函數下Visual C+Visual C+36if(!m_wndStatusBar.Create(this)|!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)TRACE0(Failed to create status barn); eturn -1; 上述代碼的主要功能是調用狀態欄對象m_wndStatusBar的成員函數.Create()創建該對象,并且

36、調用狀態欄類的成員函數SetIndicators()設置狀態欄的提示信息和指示器的信息。 當創建應用程序的基本框架時,AppWizard會在主邊框窗口類(CMainFram)中創建類似以下的提示符數組: static UINT indicators = ID_SEPARATOR, / 狀態行指示器 ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ;Visual C+Visual C+37 10.3.5 創建字符串資源創建字符串資源 字符串表也是一種Windows的資源。它包含了應用程序所有字符串的ID號、ID號的數值和字符串內容。

37、使用字符字符串的好處是有利于將應用程序本地化。 要編輯應用程序的字符串資源,可激活WorkSpace窗口的ResourceView欄,雙擊String Table進入字符串資源編輯器中。在其中插入一個字符串資源ID_INDICATOR_TIME。如圖 Visual C+Visual C+38 添加完字符串資源后,激活WorkSpace窗口的FileView欄,雙擊Source Files文件夾下的mainfrm.cpp,找到數組indicators的定義,將該字符串資源添加到該數組中。 static UINT indicators = ID_SEPARATOR, / status line i

38、ndicator ID_INDICATOR_CAPS, /Caps Lock鍵狀態 ID_INDICATOR_NUM, /Num Lock鍵狀態 ID_INDICATOR_SCRL, /Scroll Lock鍵狀態 ID_INDICATOR_TIME /手工添加的顯示時間的字符串資源ID ; Visual C+Visual C+3910.3.6狀態欄的消息處理狀態欄的消息處理 本節的程序主要講解狀態欄的使用,狀態欄中的子窗口可以分為狀態信息行和狀態指示器,我們按照狀態信息行的消息處理和狀態指示器的消息處理來闡述。 1狀態信息行的消息處理 許多應用程序都有這樣的功能(如AutoCAD)當鼠標在屏

39、幕上移動時,在程序的狀態欄上顯示鼠標的位置,本節的例子首先要實現該功能。因為鼠標在屏幕移動,這牽涉到WM_MOUSEMOVE消息的處理,因此在狀態欄上顯示鼠標的位置就是在該消息的響應函數中添加對狀態信息行的處理。 利用類向導ClassWizard添加視圖類CToolBarExam對WM_MOUSEMOVE的消息映射,在該消息響應函數中添加獲取鼠標的光標位置的代碼:Visual C+Visual C+40 在代碼中,使用CWnd的GetDescendantWindow()函數返回一個指向ID_VIEW_STATUS_BAR狀態欄的指針,然后使用狀態欄成員函數SetPaneText為第0個信息框賦

40、值(注意本程序 只 能 給 一 個 信 息 框 賦 值 , 調 用 成 員 函 數SetPaneStyle(0,SBPS_POPOUT)將該信息提示框設置成凸起風格。2狀態指示器的消息處理 狀態指示 器總是與一個字符串資源連接的(10.3.5節創建的ID_INDICATOR_TIME),該字符串是否被顯示完全取決于相應更新命令用戶接口消息映射函數。指示器是由一個字符串資源ID來標識的,該ID也被用來傳遞更新命令用戶接口消息,因此狀態指示器的消息處理主要指對UPDATE_COMMAND_UI消息的映射處理。Visual C+Visual C+41(1)聲明消息映射函數 在框架類的頭文件Mainfrm.h中,找到該類的所有消息映射函數原型的 說 明 , 增 加 I D _ I N D I C AT O R _ T I M E 字 符 串 資 源 I D 對UPDATE_COMMAND_UI消息的映射函數OnUpdateTime()原型聲明,添加后的代碼如下: protected:/AFX_MSG(CMainFrame)afx_msg int

溫馨提示

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

評論

0/150

提交評論