mfc第六章菜單06修改版.ppt_第1頁
mfc第六章菜單06修改版.ppt_第2頁
mfc第六章菜單06修改版.ppt_第3頁
mfc第六章菜單06修改版.ppt_第4頁
mfc第六章菜單06修改版.ppt_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Visual C+ for Windows Programming,Guo yan -fang,第五章,菜單,工具欄和狀態(tài)欄,菜單在程序中的位置:,菜單,菜單的作用:,菜單是一個(gè)Windows程序中的命令的集合,程序功能的體現(xiàn).菜單項(xiàng)可以發(fā)布命令消息。,菜單術(shù)語:,菜單 主菜單 子菜單 菜單項(xiàng) 分隔條 浮動(dòng)菜單 菜單項(xiàng)的ID號,與菜單項(xiàng)相關(guān)的命令消息:,1. 更新命令消息: UPDATE_COMMAND_UI 2. 命令消息: COMMAND,菜單項(xiàng)的命令消息的執(zhí)行順序:,執(zhí)行每個(gè)菜單項(xiàng)命令會(huì)依次觸發(fā)下兩種消息: 1. 先引發(fā)菜單項(xiàng)的更新命令消息: UPDATE_COMMAND_UI 2. 在

2、引發(fā)菜單項(xiàng)的命令消息: COMMAND 所以菜單的初始化內(nèi)容常放在更新命令消息的消息處理函數(shù)中,菜單的命令功能放在命令消息的消息處理函數(shù)中.,菜單項(xiàng)的命令消息的處理順序是:,因?yàn)镾DI結(jié)構(gòu)項(xiàng)目中的四個(gè)類都是 CCmdTarget的子類,所以他們都能接收命令 消息,因此對于命令消息WM_COMMAND的處 理順序是: (1) 視窗類; (2) 文檔類; (3) 窗口類; (4) 應(yīng)用類.,菜單項(xiàng)的種類及其它:,有主,子菜單 左邊帶v的菜單-帶檢查標(biāo)志的菜單 右邊帶的菜單-有對話框的菜單 右邊帶的菜單-有子菜單的菜單 字母帶下劃線的菜單(F) -該菜單的快捷鍵 帶功能鍵的菜單(如:Ctrl+M)-

3、該菜單的加速鍵 分隔線 灰化的菜單 浮動(dòng)式的菜單 子菜單可有功能提示(在狀態(tài)條中),快捷鍵的生成方法:,在菜單編輯器中,打開菜單屬性表,在Caption內(nèi),找到你欲定義為快捷鍵的字母,在此字母前加上字符“/不灰化 pCmdUI-Enable(FALSE);/灰化 ,菜單項(xiàng)設(shè)置的方法:,在更新命令消息的消息處理函數(shù)中: void C類名:OnUpdate函數(shù)名(CCmdUI* pCmdUI) / TODO: Add your command update UI handler code here pCmdUI-SetCheck(1);/設(shè)置 pCmdUI-SetCheck(0);/不設(shè)置 ,浮動(dòng)

4、菜單的實(shí)現(xiàn)方法:,1. 生成一新菜單IDR_MENU1; 2. 通過ClassWizard建立消息WM_CONTEXTMENU的映射 3.為WM_CONTEXTMENU消息的消息處理函數(shù)編程: void CEx7View:OnContextMenu(CWnd* pWnd, CPoint point) / TODO: Add your message handler code here /彈出IDR_MENU1菜單的第一個(gè)主菜單項(xiàng)的子菜單簾 CMenu m; m.LoadMenu(IDR_MENU1); CMenu* p=m.GetSubMenu(0); p- TrackPopupMenu(TP

5、M_LEFTALIGN|TPM_RIGHTBUTTON, point.x,point.y,this); ,介紹TrackPopupMenu函數(shù):,CMenu:TrackPopupMenu BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL ); 其中: nFlags : TPM_CENTERALIGN:2 (相對于X坐標(biāo)而言) TPM_LEFTALIGN :1 (相對于X坐標(biāo)而言) TPM_RIGHTALIGN :3 (相對于X坐標(biāo)而言) TPM_LEFTBUTTON : 浮動(dòng)菜單在

6、x,y點(diǎn)的左邊彈出; TPM_RIGHTBUTTON:浮動(dòng)菜單在點(diǎn)x,y的右邊彈出. x, y:鼠標(biāo)的坐標(biāo); pWnd: 當(dāng)前窗口; lpRect: NULL.,menuItem1 menuItem2 menuItem3,1,2,3,總結(jié),關(guān)于菜單我們學(xué)習(xí)了: 1. 菜單項(xiàng)的種類 2. 與菜單相關(guān)的命令消息 COMMAND UPDATE_COMMAND_UI 3. 普通菜單的建立和使用 4. 浮動(dòng)菜單的生成和使用,工具欄,工具欄、狀態(tài)欄、對話框欄都屬于控制欄。它們都是從CControlBar派生出來的。,工具欄,工具欄是CToolBar類的一個(gè)對象,狀態(tài)欄是CStatusBar類的一個(gè)對象。它

7、們都是從CControlBar類派生出來的。 在典型的SDI應(yīng)用程序中,CToolBar對象占用CMainFrame客戶區(qū)的頂部, CStatusBar對象占用CMainFrame客戶區(qū)的底部,視圖占用框架的其余部分(CMainFrame客戶區(qū)的中間部分)。 多數(shù)情況下,工具欄按鈕對應(yīng)于一個(gè)菜單項(xiàng),所以工具欄按鈕會(huì)產(chǎn)生與菜單一樣的命令消息。,工具欄的實(shí)現(xiàn):,創(chuàng)建自己的工具欄 創(chuàng)建新的工具欄資源(將在OnCreate()中使用) 在主框架窗口類中增加CToolBar成員變量。 在OnCreate()中增加創(chuàng)建工具欄的相應(yīng)代碼,包括實(shí)現(xiàn)Docking(??浚┗騀loating(浮動(dòng))技術(shù)。 m_w

8、ndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) | !m_wndToolBar.LoadToolBar(IDR_MAINFRAME),Docking工具欄的三個(gè)必須步驟: 使框架窗口支持Docking操作 CFrameWnd:EnableDocking () 使工具欄支持Docking操作 CControlBar:EnableDocking () 將工具欄Docking到框架

9、窗口的指定邊框上。 CFrameWnd:DockControlBar() 使工具欄永久浮動(dòng)(Floating)的兩個(gè)步驟: 在CControlBar:EnableDocking中使用參數(shù)0 相對應(yīng)CFrameWnd:DockControlBar使用CFrameWnd:FloatControlBar,狀態(tài)欄,工具欄、狀態(tài)欄、對話框欄都屬于控制欄。它們都是從CControlBar派生出來的。,1. 狀態(tài)欄的pane: 2. 狀態(tài)欄數(shù)組:(在MaimFrm.cpp中定義) static UINT indicators = ID_SEPARATOR, / status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ; pane與數(shù)組元素一一對應(yīng).,與狀態(tài)欄相關(guān)的名詞與概念:,pane0,pane1,pane2,pane3,創(chuàng)建狀態(tài)欄的三部曲:,1. 設(shè)定CStatusBar對象:CStatusBar sb; 2. 調(diào)用Create()函數(shù) 或 CreateEx()函數(shù); 3. 調(diào)用SetIndicators()函數(shù)使數(shù)組元素和 pane對應(yīng)起來.,函數(shù)CWnd:SetWindowText()可修 改pane0; 函數(shù)CStatusBar:SetPa

溫馨提示

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

評論

0/150

提交評論