第6章用戶(hù)界面設(shè)計(jì)選單、工具欄和狀態(tài)欄_第1頁(yè)
第6章用戶(hù)界面設(shè)計(jì)選單、工具欄和狀態(tài)欄_第2頁(yè)
第6章用戶(hù)界面設(shè)計(jì)選單、工具欄和狀態(tài)欄_第3頁(yè)
第6章用戶(hù)界面設(shè)計(jì)選單、工具欄和狀態(tài)欄_第4頁(yè)
第6章用戶(hù)界面設(shè)計(jì)選單、工具欄和狀態(tài)欄_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 Wndows程序界面由客戶(hù)區(qū)和非客戶(hù)區(qū)客戶(hù)區(qū)和非客戶(hù)區(qū)組成(簡(jiǎn)單的 基于對(duì)話框的應(yīng)用程序除外),其中客戶(hù)區(qū)用戶(hù)于顯示 圖像和文字信息,而非客戶(hù)區(qū)主要包括窗口的邊框、菜 單欄、工具欄、狀態(tài)欄、水平和垂直滾動(dòng)條以及標(biāo)題欄。 其中菜單、工具欄和狀態(tài)欄是非客戶(hù)區(qū)中最重要的窗口菜單、工具欄和狀態(tài)欄是非客戶(hù)區(qū)中最重要的窗口 元素元素,它們同時(shí)也是用戶(hù)與應(yīng)用程序進(jìn)行交互的重要工 具。 本章要求掌握: 菜單設(shè)計(jì)菜單設(shè)計(jì) 工具欄設(shè)計(jì)工具欄設(shè)計(jì) 狀態(tài)欄設(shè)計(jì)狀態(tài)欄設(shè)計(jì) 第六章 用戶(hù)界面設(shè)計(jì) (菜單、工具欄、狀態(tài)欄) 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 菜單(菜單(Me

2、nu:一種資源)是一系列命令的列:一種資源)是一系列命令的列 表,用戶(hù)能夠選中其中的菜單項(xiàng)(命令)并執(zhí)表,用戶(hù)能夠選中其中的菜單項(xiàng)(命令)并執(zhí) 行相應(yīng)的任務(wù)。除了一些簡(jiǎn)單的基于對(duì)話框的行相應(yīng)的任務(wù)。除了一些簡(jiǎn)單的基于對(duì)話框的 應(yīng)用程序以外,幾乎所有的應(yīng)用程序以外,幾乎所有的Windows程序都提程序都提 供了各自的菜單。供了各自的菜單。 在AppWizard創(chuàng)建的SDI/MDI應(yīng)用程序中,普通菜單設(shè)計(jì)普通菜單設(shè)計(jì)一般一般 分三步分三步(個(gè)性化菜單編程除外): Step 1:編輯菜單資源,設(shè)置菜單屬性(包括菜單名和:編輯菜單資源,設(shè)置菜單屬性(包括菜單名和ID);); Step 2:用:用Cla

3、ssWizard建立菜單消息的消息處理機(jī)制;建立菜單消息的消息處理機(jī)制; Step 3:手工編輯成員函數(shù),添加菜單消息處理代碼。:手工編輯成員函數(shù),添加菜單消息處理代碼。 6.1 菜單 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 菜單顯示一般要遵循的一些規(guī)則:菜單顯示一般要遵循的一些規(guī)則: 菜單欄中某菜單項(xiàng)需要助記符,則用:菜單項(xiàng)文本后菜單欄中某菜單項(xiàng)需要助記符,則用:菜單項(xiàng)文本后 跟(跟(字母字母)。如在)。如在Word中,中,“文件(文件(F)”表示用表示用 Alt+F組合鍵選中組合鍵選中“文件文件”菜單命令。菜單命令。 若某菜單項(xiàng)需要快捷鍵,則一般將其放在相應(yīng)菜單項(xiàng)若某菜單項(xiàng)需要快捷鍵,則

4、一般將其放在相應(yīng)菜單項(xiàng) 文本后??旖萱I文本后??旖萱I/加速鍵(加速鍵(Accelerator:一種資源)就:一種資源)就 是一組合鍵,按下快捷鍵表示執(zhí)行相應(yīng)的菜單命令。如是一組合鍵,按下快捷鍵表示執(zhí)行相應(yīng)的菜單命令。如 在在Word中,按下中,按下Ctrl+N,表示執(zhí)行,表示執(zhí)行新建新建菜單命菜單命 令。令。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 1、編輯菜單、編輯菜單 編輯菜單資源:編輯菜單資源: (1) 選擇工程工作區(qū)的選擇工程工作區(qū)的ResourceView卡片,切換到資源視圖??ㄆ?,切換到資源視圖。 (2) 選擇菜單資源類(lèi)型選擇菜單資源類(lèi)型Menu。 (3) 選定菜單資源選定菜單資

5、源IDR_MAINFRAME,雙擊該項(xiàng),彈出菜單編輯,雙擊該項(xiàng),彈出菜單編輯 器窗口。器窗口。 (4) 編輯當(dāng)前菜單編輯當(dāng)前菜單 插入新菜單項(xiàng),可選定窗口中的空白菜單框上雙擊,彈出屬性對(duì)話插入新菜單項(xiàng),可選定窗口中的空白菜單框上雙擊,彈出屬性對(duì)話 框,用于輸入菜單項(xiàng)的標(biāo)題、標(biāo)識(shí)符、菜單項(xiàng)在狀態(tài)欄上顯示的提框,用于輸入菜單項(xiàng)的標(biāo)題、標(biāo)識(shí)符、菜單項(xiàng)在狀態(tài)欄上顯示的提 示(示(Prompt)等;也可拖動(dòng)空白菜單到制定地方,然后雙擊該菜單)等;也可拖動(dòng)空白菜單到制定地方,然后雙擊該菜單 項(xiàng)進(jìn)行編輯;要插入一個(gè)分隔線,只需將菜單項(xiàng)的項(xiàng)進(jìn)行編輯;要插入一個(gè)分隔線,只需將菜單項(xiàng)的Seperator屬性打?qū)傩?/p>

6、打 開(kāi)即可。開(kāi)即可。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 2、菜單命令消息、菜單命令消息 菜單命令消息常用的有兩個(gè): WM_COMMAND(命令消息命令消息) WM_COMMAND_UI(更新命令用戶(hù)接口消息 /更新命令更新命令UIUI消息消息)。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 WM_COMMANDWM_COMMAND(命令消息)(命令消息): : 由選擇菜單命令項(xiàng)或按下快捷鍵或一般控件或由選擇菜單命令項(xiàng)或按下快捷鍵或一般控件或 工具欄按鈕(當(dāng)工具欄按鈕(當(dāng)IDID號(hào)與菜單項(xiàng)的號(hào)與菜單項(xiàng)的IDID同名時(shí))等同名時(shí))等 用 戶(hù) 交 互 對(duì) 象 發(fā) 出 。 其 消 息 映 射 宏

7、 名 為用 戶(hù) 交 互 對(duì) 象 發(fā) 出 。 其 消 息 映 射 宏 名 為 ON_COMMANDON_COMMAND。 ON_COMMAND ON_COMMAND 消息映射宏的作用為在用戶(hù)選擇該消息映射宏的作用為在用戶(hù)選擇該 菜單項(xiàng)時(shí)調(diào)用指定的命令處理函數(shù)。菜單項(xiàng)時(shí)調(diào)用指定的命令處理函數(shù)。 如:如:ON_COMMAND(IDM_COMMAND1, OnCommand1)ON_COMMAND(IDM_COMMAND1, OnCommand1) 會(huì)使會(huì)使IDID號(hào)為號(hào)為IDM_COMMAND1IDM_COMMAND1的菜單被選擇時(shí)調(diào)用的菜單被選擇時(shí)調(diào)用 OnCommand1OnCommand1成員

8、函數(shù)(命令處理函數(shù))。成員函數(shù)(命令處理函數(shù))。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 WM_UPDATE_COMMAND_UIWM_UPDATE_COMMAND_UI(更新命令用戶(hù)接口消更新命令用戶(hù)接口消 息息/更新命令更新命令UIUI消息消息): 許多情況彈出式菜單的菜單項(xiàng)可能有多個(gè)狀態(tài),許多情況彈出式菜單的菜單項(xiàng)可能有多個(gè)狀態(tài), 如某個(gè)時(shí)刻正??捎茫ㄕH缒硞€(gè)時(shí)刻正??捎茫ㄕ? /允許),而某個(gè)時(shí)允許),而某個(gè)時(shí) 刻不可用(變灰刻不可用(變灰/ /禁止),還可以加標(biāo)記(打禁止),還可以加標(biāo)記(打 鉤),以表明被選中或未被選中。鉤),以表明被選中或未被選中。 MFCMFC的更新命令用

9、戶(hù)接口消息為自動(dòng)更新用戶(hù)接的更新命令用戶(hù)接口消息為自動(dòng)更新用戶(hù)接 口 提 供 了 方 便 。 其 消 息 映 射 宏 名 為口 提 供 了 方 便 。 其 消 息 映 射 宏 名 為 ON_UPDATE_COMMAND_UION_UPDATE_COMMAND_UI。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 3 菜單的添加和使用菜單的添加和使用 n例例 1: 在單文檔應(yīng)用程序中添加菜在單文檔應(yīng)用程序中添加菜 單并演示菜單的使用方法單并演示菜單的使用方法 u添加菜單的消息響應(yīng)函數(shù)添加菜單的消息響應(yīng)函數(shù) u在函數(shù)中加消息對(duì)話框在函數(shù)中加消息對(duì)話框 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 例例2:

10、在對(duì)話框中使用菜單:在對(duì)話框中使用菜單 新建一個(gè)菜單資源,將該菜單引入到對(duì)話框中,并加入相新建一個(gè)菜單資源,將該菜單引入到對(duì)話框中,并加入相 應(yīng)的消息響應(yīng)函數(shù)。應(yīng)的消息響應(yīng)函數(shù)。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 4 、使用鍵盤(pán)快捷鍵、使用鍵盤(pán)快捷鍵 n打開(kāi)打開(kāi)Accelerator資源項(xiàng),雙擊資源項(xiàng),雙擊 IDR_MAINFRAME n在最下面的空白行雙擊,彈出屬性在最下面的空白行雙擊,彈出屬性 框;框; n選擇選擇ID號(hào),在號(hào),在Key中輸入快捷鍵,中輸入快捷鍵, 如如1,回車(chē)即可。,回車(chē)即可。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 5、使用快捷選單、使用快捷選單 右鍵菜單右鍵

11、菜單 P249 例例Ex_Menu n新增加一個(gè)菜單資源(標(biāo)題任意)新增加一個(gè)菜單資源(標(biāo)題任意) n打開(kāi)打開(kāi)ClassWizard,選擇,選擇CMainFrame類(lèi)類(lèi) n增加消息響應(yīng)函數(shù)增加消息響應(yīng)函數(shù) n增加增加WM_CONTEXTMENU消息處理函數(shù),添加如下代碼:消息處理函數(shù),添加如下代碼: nvoid CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) n n/ TODO: Add your message handler code here nCMenu menu; nmenu.LoadMenu(IDR_MENU1); nmenu.

12、GetSubMenu(0)- TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point. x,point.y,this); n 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 6.2 工具條工具條 1 工具條簡(jiǎn)介工具條簡(jiǎn)介 工具條可以看作是圖形化的菜單,是一種更工具條可以看作是圖形化的菜單,是一種更 快捷、更有效、更直觀的命令輸入方式快捷、更有效、更直觀的命令輸入方式 工具條作為程序的一個(gè)資源工具條作為程序的一個(gè)資源, ,一般存放在資一般存放在資 源腳本中,在程序運(yùn)行時(shí)才調(diào)用源腳本中,在程序運(yùn)行時(shí)才調(diào)用 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 2 CTo

13、olBar類(lèi)類(lèi) C CT To oo ol lB Ba ar r 的的構(gòu)構(gòu)造造方方法法 方方法法說(shuō)說(shuō)明明 C Cr re ea at te e( () )創(chuàng)創(chuàng)建建一一個(gè)個(gè)工工具具條條并并把把它它附附加加到到C CT To oo ol lB Ba ar r 對(duì)對(duì)象象上上 C Cr re ea at te eE Ex x( () )創(chuàng)創(chuàng)建建一一個(gè)個(gè)定定義義了了邊邊界界的的工工具具條條并并把把它它附附加加到到C CT To oo ol lB Ba ar r 對(duì)對(duì)象象上上 S Se et tS Si iz ze es s( () )設(shè)設(shè)置置按按鈕鈕及及位位圖圖大大小小 S Se et tH He ei

14、 ig gh ht t( () )設(shè)設(shè)置置工工具具條條的的高高度度 L Lo oa ad dT To oo ol lB Ba ar r( () )裝裝載載工工具具條條資資源源 L Lo oa ad dB Bi it tm ma ap p( () )裝裝載載包包含含工工具具按按鈕鈕圖圖像像的的位位圖圖 S Se et tB Bi it tm ma ap p( () )設(shè)設(shè)置置位位圖圖圖圖像像 S Se et tB Bu ut tt to on ns s( () )設(shè)設(shè)置置按按鈕鈕并并使使每每個(gè)個(gè)按按鈕鈕與與位位圖圖圖圖像像相相關(guān)關(guān)。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 3 已有工具條的使用

15、已有工具條的使用 n1) 打開(kāi)工具條資源打開(kāi)工具條資源 n2) 單擊工具條最右側(cè)的空白工具按鈕單擊工具條最右側(cè)的空白工具按鈕 n 3) 編輯工具按鈕編輯工具按鈕 n 4) 給工具按鈕添加消息響應(yīng)函數(shù)給工具按鈕添加消息響應(yīng)函數(shù) n示例演示示例演示 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 4 工具條函數(shù)簡(jiǎn)介工具條函數(shù)簡(jiǎn)介 1) Create()函數(shù)函數(shù) BOOL CreateBOOL Create ( ( CWndCWnd* * pParentWnd, pParentWnd, /pParentWnd/pParentWnd為指向工具條所在父窗口的指針為指向工具條所在父窗口的指針 DWORD dwS

16、tyle=WS_CHILD|WS_VISIBLE|CBRS_TOP, / dwStyleDWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP, / dwStyle為工具條的風(fēng)格為工具條的風(fēng)格 UINT nID = AFX_IDW_TOOLBAR UINT nID = AFX_IDW_TOOLBAR /nID/nID表示工具條子窗口的表示工具條子窗口的IDID號(hào)號(hào) );); 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 2) LoadToolBar()函數(shù)函數(shù) BOOL LoadToolBar(LPCTSTR lpszResourceName); /BOOL Load

17、ToolBar(LPCTSTR lpszResourceName); /字符串形式定義的資源字符串形式定義的資源 BOOL LoadToolBar(UINT nIDResource); BOOL LoadToolBar(UINT nIDResource); / /整型形式定義的資源整型形式定義的資源 3) SetBarStyle()函數(shù)函數(shù) m_wndToolBar.SetBarStyle(CBRS_TOOLTIPS|CBRS_FLYBY| CBRS_SIZE_DYNAMIC);m_wndToolBar.SetBarStyle(CBRS_TOOLTIPS|CBRS_FLYBY| CBRS_SI

18、ZE_DYNAMIC); WS_VISIBLEWS_VISIBLE使工具條窗口初始可見(jiàn)使工具條窗口初始可見(jiàn) CBRS_BOTTOMCBRS_BOTTOM初始時(shí)將工具條放到窗口底部初始時(shí)將工具條放到窗口底部 CBRS_FLYBYCBRS_FLYBY鼠標(biāo)光標(biāo)在按鈕上暫停時(shí),顯示命令描述鼠標(biāo)光標(biāo)在按鈕上暫停時(shí),顯示命令描述 CBRS_NOALIGNCBRS_NOALIGN防止控制條在其父窗口改變大小時(shí)被復(fù)位防止控制條在其父窗口改變大小時(shí)被復(fù)位 CBRS_TOOLTIPSCBRS_TOOLTIPS鼠標(biāo)光標(biāo)在按鈕上暫停時(shí),顯示工具提示鼠標(biāo)光標(biāo)在按鈕上暫停時(shí),顯示工具提示 CBRS_TOPCBRS_TOP

19、初始時(shí)將工具條放在窗口頂部初始時(shí)將工具條放在窗口頂部 CBRS_SIZE_DYNAMICCBRS_SIZE_DYNAMIC工具條的大小可變工具條的大小可變 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 4) 工具條的移動(dòng)工具條的移動(dòng) 為使用戶(hù)能夠移動(dòng)工具條,為此,需向工具條及框架窗口發(fā)送消息。為使用戶(hù)能夠移動(dòng)工具條,為此,需向工具條及框架窗口發(fā)送消息。 這可通過(guò)調(diào)用這可通過(guò)調(diào)用CToolBar:EnableDockingCToolBar:EnableDocking和和Frame:EnableDockingFrame:EnableDocking實(shí)實(shí) 現(xiàn)。現(xiàn)。 二函數(shù)原型均如下:二函數(shù)原型均如下: v

20、oid EnableDocking( DWORD dwStyle );void EnableDocking( DWORD dwStyle ); 工具條停靠風(fēng)格 風(fēng)格意義 CBRS_ALIGN_TOP工具條可在客戶(hù)區(qū)頂端移動(dòng) CBRS_ALIGN_BOTTOM工具條可在客戶(hù)區(qū)底端移動(dòng) CBRS_ALIGN_LEFT工具條可在客戶(hù)區(qū)左端移動(dòng) CBRS_ALIGN_RIGHT工具條可在客戶(hù)區(qū)右端移動(dòng) CBRS_ALIGN_ANY工具條可在客戶(hù)區(qū)任意位置移動(dòng) CBRS_FLOAT_MULTI允許在一窗口內(nèi)存在多個(gè)可移動(dòng)控制條 對(duì)于對(duì)于CFrameCFrame不可用不可用 ??客??風(fēng)格風(fēng)格 第6章用戶(hù)

21、界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 5 新增工具條的使用新增工具條的使用 n1) 創(chuàng)建工具欄資源;創(chuàng)建工具欄資源; n2)在邊框窗口類(lèi)的聲明中添加:)在邊框窗口類(lèi)的聲明中添加: CToolBar m_myToolBar; n3) 在在OnCreate函數(shù)中增加:函數(shù)中增加: nif (!m_myToolBar.Create(this) | n!m_myToolBar.LoadToolBar(IDR_TOOLBAR1) n nTRACE0(Failed to create toolbarn); nreturn -1; / fail to create n m_wndToolBar.EnableDoc

22、king(CBRS_ALIGN_ANY); m_myToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar( DockControlBar( 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 6 工具條和選單相結(jié)合工具條和選單相結(jié)合 n將工具按鈕和相應(yīng)選單項(xiàng)將工具按鈕和相應(yīng)選單項(xiàng) 設(shè)置成同一個(gè)設(shè)置成同一個(gè)ID即可。即可。 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 6.3 狀態(tài)欄狀態(tài)欄 1 概述概述 n狀態(tài)狀態(tài)欄欄既不接受用戶(hù)輸入,也不產(chǎn)生命令既不接受用戶(hù)輸入,也不產(chǎn)生命令 消息,只能顯示提

23、示消息,只能顯示提示/狀態(tài)信息和其他文狀態(tài)信息和其他文 本串。本串。 n狀態(tài)欄的窗格分:狀態(tài)欄的窗格分: u信息行窗格信息行窗格 u指示器窗格指示器窗格 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 MainFrm.cpp中的靜態(tài)數(shù)組indicator: nstatic UINT indicators = n nID_SEPARATOR, /信息行窗格信息行窗格 nID_INDICATOR_CAPS, /指示器窗格指示器窗格 nID_INDICATOR_NUM, /指示器窗格指示器窗格 nID_INDICATOR_SCRL, /指示器窗格指示器窗格 n; 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄

24、n增加信息行窗格增加信息行窗格: u在在indicators數(shù)組中增加數(shù)組中增加ID_SEPARATOR標(biāo)識(shí)標(biāo)識(shí) n增加指示器窗格:增加指示器窗格: u在String Table中加入新ID,Caption中加空格或 字符串,字符串的長(zhǎng)度表示用戶(hù)指示器窗格的大小字符串,字符串的長(zhǎng)度表示用戶(hù)指示器窗格的大小 u在在indicators數(shù)組中增加在數(shù)組中增加在String Table中定義過(guò)的中定義過(guò)的 ID n減少窗格減少窗格 u減少減少indicators數(shù)組中的元素即可數(shù)組中的元素即可 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 2 給狀態(tài)欄添加信息行窗格和指示器窗格給狀態(tài)欄添加信息行窗格和指

25、示器窗格 n例:例: 0. 新建一個(gè)單文檔應(yīng)用程序新建一個(gè)單文檔應(yīng)用程序 n1. 在在Sting Table中加中加ID_LEFT,ID_RIGHT兩個(gè)兩個(gè)ID,并分別在,并分別在 下面的下面的Caption中加字符串中加字符串“ID_LEFT”,“ID_RIGHT” n2. 在在MAINFRM.CPP中:添加中:添加 nstatic UINT indicators = n nID_SEPARATOR, / status line indicator nID_LEFT, nID_SEPARATOR, n ID_RIGHT, nID_INDICATOR_CAPS, nID_INDICATOR_N

26、UM, nID_INDICATOR_SCRL, n; 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 3 手工添加消息映射,實(shí)現(xiàn)狀態(tài)欄中的鼠標(biāo)位置顯示:手工添加消息映射,實(shí)現(xiàn)狀態(tài)欄中的鼠標(biāo)位置顯示: 例:參考例:參考P253 例例Ex_Status n0. 新建一個(gè)單文檔應(yīng)用程序新建一個(gè)單文檔應(yīng)用程序 n1. 在在Sting Table中加中加ID_LEFT,ID_RIGHT兩個(gè)兩個(gè)ID,并在下面,并在下面 加空格加空格 n2. 在在*View.h中加:中加: n/AFX_MSG(C*View) nafx_msg void OnUpdateXY(CCmdUI* pCmdUI) n/AFX_MSG n

27、3. 在在C*View.cpp中加中加 n/AFX_MSG(C*View) n ON_UPDATE_COMMAND_UI(ID_LEFT,OnUpdateXY) n ON_UPDATE_COMMAND_UI(ID_RIGHT,OnUpdateXY) 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 n4. 在在C*View.cpp中加中加 nvoid C*View:OnUpdateXY(CCmdUI* pCmdUI) n npCmdUI-Enable(TRUE); n n5. 在在C*View.cpp中處理中處理OnMouseMove 函數(shù)函數(shù),并加并加MainFrm.h頭文件頭文件 nCString

28、 str; nCMainFrame *pFrame=(CMainFrame*)AfxGetApp()- m_pMainWnd; nCStatusBar* pStatus= nif(pStatus) n n str.Format(x=%d,point.x); npStatus-SetPaneText(1,str); nstr.Format(Y=%d,point.y); npStatus-SetPaneText(2,str); n 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 6 在在MAINFRM.CPP中:添加中:添加 nstatic UINT indicators = n nID_SEPARAT

29、OR, / status line indicator nID_LEFT, nID_RIGHT, nID_INDICATOR_CAPS, nID_INDICATOR_NUM, nID_INDICATOR_SCRL, n; 7 在在MAINFRM.h中:修改中:修改m_wndStatusBar的類(lèi)型為的類(lèi)型為public npublic: nCStatusBar m_wndStatusBar; 8 運(yùn)行程序,查看效果運(yùn)行程序,查看效果 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 nvoid SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cx

30、Width ); nvoid SetPaneStyle( int nIndex, UINT nStyle ); unIndex F要設(shè)置的狀態(tài)欄窗格的索引要設(shè)置的狀態(tài)欄窗格的索引. unID F為狀態(tài)欄窗格指定新的為狀態(tài)欄窗格指定新的ID. unStyle F窗格的風(fēng)格類(lèi)型窗格的風(fēng)格類(lèi)型. ucxWidth F窗格的像素寬度窗格的像素寬度. 4 改變狀態(tài)欄的風(fēng)格改變狀態(tài)欄的風(fēng)格 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 狀態(tài)欄窗格的風(fēng)格類(lèi)型狀態(tài)欄窗格的風(fēng)格類(lèi)型: nSBPS_NOBORDERS 窗格周?chē)鷽](méi)有3D邊框. nSBPS_POPOUT 反顯邊界以使文字“凸出來(lái)”. nSBPS_DISA

31、BLED 禁用窗格,不顯示文本. nSBPS_STRETCH 拉伸窗格,并填充窗格不用的空白空間.但狀態(tài)欄 只能有一個(gè)窗格具有這種風(fēng)格. SBPS_NORMAL 普通風(fēng)格,沒(méi)有“拉伸”,“3D邊框”,或“凸出來(lái)” 等特性. 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 P256 例例Ex_Status n對(duì)上例對(duì)上例OnMouseMove函數(shù)代碼進(jìn)行修改函數(shù)代碼進(jìn)行修改 nvoid CEx_TextView:OnMouseMove(UINT nFlags, CPoint point) n nCString str; nCMainFrame *pFrame=(CMainFrame*)AfxGetAp

32、p()- m_pMainWnd; nCStatusBar* pStatus= nif(pStatus) n npStatus-SetPaneStyle(2,SBPS_POPOUT); npStatus-SetPaneStyle(3,SBPS_POPOUT); nstr.Format(x=%d,point.x); npStatus-SetPaneText(1,str); nstr.Format(Y=%d,point.y); npStatus-SetPaneText(2,str); n nCScrollView:OnMouseMove(nFlags, point); n 第6章用戶(hù)界面設(shè)計(jì)選單、工

33、具欄 和狀態(tài)欄 6.4 交互對(duì)象的動(dòng)態(tài)更新交互對(duì)象的動(dòng)態(tài)更新 n給對(duì)象的給對(duì)象的ON_UPDATE_COMMAND_UI加消息響應(yīng)函數(shù)。加消息響應(yīng)函數(shù)。 n例:例: nvoid CMainFrame:OnUpdateAb(CCmdUI* pCmdUI) n npCmdUI-SetRadio(); npCmdUI-SetCheck(); npCmdUI-SetText(PP); npCmdUI-Enable(); n uEnable(BOOL) 使菜單項(xiàng)有效或無(wú)效使菜單項(xiàng)有效或無(wú)效 SetText(LPCTSTR) 設(shè)置菜單項(xiàng)的文本設(shè)置菜單項(xiàng)的文本 SetCheck(int) 加上或去掉選中標(biāo)記

34、加上或去掉選中標(biāo)記“X” SetRadio(BOOL) 加上或去掉選中標(biāo)記加上或去掉選中標(biāo)記“.” 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 n【 P257 例】選單項(xiàng)和工具按鈕的更新例】選單項(xiàng)和工具按鈕的更新 u增加一個(gè)工具欄,增加一個(gè)工具欄,ID為為IDR_NEWBAR u增加一個(gè)菜單項(xiàng)與某一工具按鈕對(duì)應(yīng),增加一個(gè)菜單項(xiàng)與某一工具按鈕對(duì)應(yīng), ID_VIEW_NEWBAR u在在On_Create()函數(shù)中增加一個(gè)工具欄變量函數(shù)中增加一個(gè)工具欄變量 m_wndNewBar并增加一些代碼(如下頁(yè))并增加一些代碼(如下頁(yè)) u在在CMainFrame類(lèi)中增加一個(gè)類(lèi)中增加一個(gè)BOOL變量變量 m_bNewBar,在構(gòu)造函數(shù)中給出初始值,在構(gòu)造函數(shù)中給出初始值 u添加添加ID_VIEW_NEWBAR的的COMMAND和和 UPDATE_COMMAND_UI 兩個(gè)消息處理函數(shù)兩個(gè)消息處理函數(shù) 第6章用戶(hù)界面設(shè)計(jì)選單、工具欄 和狀態(tài)欄 nin

溫馨提示

  • 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)論