轉帖|使用教程|編輯:鮑佳佳|2020-11-25 13:37:55.833|閱讀 629 次
概述:Toolkit Pro 是MFC開發中最全面界面控件套包,它提供了Windows開發所需要的11種主流的Visual C++ MFC控件。本文通過實例說明MFC工具欄的創建、設計和使用方法,包括三個demo。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Visual c++ 提 供 了 功 能 強 大 的 類 庫, 基 本 上 應 用 開 發 的 要 求, 但 對 于 某 些 特 殊 要 求 的 界 面, 如 圖 像 兼 文 字 的 按 紐, 列 表 框 中 插 入 圖 像, 中 國 式 報 表 等 等, 仍 顯 得 力 不 從 心, 因 而 很 有 必 要 創 建 擴 展MFC 類 庫, 以 滿 足 實 際 開 發 的 需 求。But,Toolkit Pro 是MFC開發中最全面界面控件套包,它提供了Windows開發所需要的11種主流的Visual C++ MFC控件。 根據需要可進行 下載體驗!
本文通過實例說明MFC工具欄的創建、設計和使用方法,包括三個demo。
demo1:創建一個工具欄
C++代碼
//摘抄自MSDN demo1 (創建一個工具欄) 1.Create a toolbar resource. /*可以先插入一個新的工具欄資源 添加分隔符,將按鈕向右拖動一小下 刪除按鈕,將按鈕拖動出工具欄 */ 2.Construct the CToolBar object. /* 工具欄是 CToolBar 對象,聲明為應用程序的 CMainFrame 類的數據成員。也就是說,工具欄對象嵌入到主框架窗口對象中。這意味著 MFC 在創建框架窗口時創建工具欄,在銷毀框架窗口時銷毀工具欄。 */ 3.Call the Create (or CreateEx) function to create the Windows toolbar and attach it to the CToolBar object. 4.Call LoadToolBar to load the toolbar resource. /* 工具欄創建發生在 CMainFrame::OnCreate 中。MFC 在創建框架窗口之后且在窗口可見之前調用 OnCreate。 在 OnCreate 中調用適當的函數來停靠或浮動工具欄、設置它的樣式等。 應用程序向導”生成的默認 OnCreate 執行以下工具欄任務: 1.調用 CToolBar 對象的 Create 成員函數來創建基礎 CToolBarCtrl 對象。 2.調用 LoadToolBar 來加載工具欄資源信息。 3.調用函數來啟用停靠、浮動和工具提示。 */ class CMainFrame : public CMDIFrameWnd { // ... // Implementation // ... protected: // control bar embedded members CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; // Generated message map functions protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP() }; int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1) return -1; //框架類中m_wndMyToolBar成員變量先調用CreateEx函數,再調用LoadToolBar函數 if (! m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || ! m_wndToolBar.LoadToolBar(IDR_MYTOOLBAR)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } //調用CToolBar中的成員函數設置工具欄可停靠的位置 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); //調用框架類中的成員函數設置哪里可以被停靠 EnableDocking(CBRS_ALIGN_ANY); //Points to the control bar to be docked. DockControlBar(&m_wndToolBar); return 0; }
demo2:停靠和浮動工具欄
C++代碼
demo2 (停靠和浮動工具欄) /* 如果使用“應用程序向導”來生成應用程序的主干,向導將要求您選擇是否想要可停靠的工具欄。 默認情況下,“應用程序向導”生成代碼來執行將可停靠工具欄放置在應用程序中所需的三個操作: 1.在框架窗口中啟用停靠。 2.為工具欄啟用停靠。 3.停靠工具欄(靠向框架窗口)。 如果這些步驟中的任何一個缺少,應用程序都將顯示標準工具欄。 后兩個步驟對應用程序中的每一個可停靠工具欄都必須執行。 */ CFrameWnd::EnableDocking()//在框架窗口中啟用停靠 /* 若要將工具欄停靠到某個框架窗口,則必須啟用該框架窗口(或目標)以允許停靠。 這可通過使用 CFrameWnd::EnableDocking 函數來實現,該函數采用一個 DWORD 參數,這是一組指示框架窗口的哪一個邊接受停靠的樣式位。 如果一個工具欄即將停靠并且有多個邊可以停靠,則在傳遞給 EnableDocking 的參數中指示的邊按以下順序使用:頂邊、底邊、左邊、右邊。 如果希望能夠將控制條停靠在任意位置,請將 CBRS_ALIGN_ANY 傳遞給 EnableDocking。 */ CControlBar::EnableDocking()//為工具欄啟用停靠 /* 準備好停靠目標后,必須以相似的方式準備工具欄(或源)。為想要停靠的每一個工具欄調用 CControlBar::EnableDocking,指定工具欄應停靠的目標邊。如果在 CControlBar::EnableDocking 調用中所指定的邊沒有一個與框架窗口中為停靠啟用的邊匹配,則工具欄無法停靠(它將浮動)。 工具欄一旦浮動,將保持為浮動工具欄,不能停靠到框架窗口。 如果希望工具欄永久浮動,請調用參數為 0 的 EnableDocking。然后調用 CFrameWnd::FloatControlBar。工具欄將保持浮動,永遠不能在任意位置停靠。 */ CFrameWnd::DockControlBar()//停靠工具欄 /* 當用戶試圖將工具欄放置在允許停靠的框架窗口某一邊時,框架調用 CFrameWnd::DockControlBar。 另外,可以隨時調用該函數將控制條停靠在框架窗口中。這通常在初始化過程中完成。 框架窗口的具體某個邊上可停靠多個工具欄。 */ CFrameWnd::FloatControlBar()//浮動工具欄 /* 從框架窗口分離可停靠工具欄稱為浮動工具欄。調用 CFrameWnd::FloatControlBar 來執行該操作。指定要浮動的工具欄、將放置的點以及決定浮動工具欄是水平還是垂直的對齊樣式。 當用戶拖動工具欄離開停靠位置并將它放置在一個未啟用停靠的位置時,框架調用該函數。 這可以是框架窗口的內部或外部的任意位置。同 DockControlBar 一樣,也可以在初始化過程中調用該函數。 可停靠工具欄的 MFC 實現不提供一些支持可停靠工具欄的應用程序中有的擴展功能。諸如可自定義工具欄這樣的功能不提供。 */ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //... //部分代碼略 //... //調用CToolBar中的成員函數設置工具欄可停靠的位置 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); //調用框架類中的成員函數設置哪里可以被停靠 EnableDocking(CBRS_ALIGN_ANY); //Points to the control bar to be docked. DockControlBar(&m_wndToolBar); return 0; }
demo3:點擊菜單項顯示和隱藏工具欄
C++代碼
demo3 (點擊菜單項顯示和隱藏工具欄) CFrameWnd::ShowControlBar//顯示和隱藏菜單項 void ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay ); void CMainFrame::OnViewNewtool() { ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);//控制顯示和隱藏 } void CMainFrame::OnUpdateViewNewtool(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());//為菜單項打標記 }
MFC擴展類庫
在平時練習的時候我們可以自己手動進行,但是一旦接受一些項目,應用程序開發等,對界面的要求就會高出許多。這時候就有必要借助這些“半成品”實現界面美化提升效率。這里簡單介紹一下,具體可點進去查看每個的詳情以及教程,案例!
Toolkit Pro:
Codejock軟件公司的Xtreme Toolkit Pro是屢獲殊榮的VC界面庫,是MFC開發中最全面界面控件套包,它提供了Windows開發所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。(點這下載)
BCGControlBar
BCGControlBar ("Business Components Gallery ControlBar")是MFC擴展庫,使您可以創建具有完全自定義選項(功能區、可自定義工具欄、菜單等)以及一組專業設計的豐富Microsoft Office和Microsoft Visual Studio的應用程序 GUI控件,例如圖表、日歷、網格、編輯器、甘特圖和許多其他控件。
BCGControlBar庫擁有500多個經過全面設計、測試和充分記錄的MFC擴展類。可以輕松地集成到你的應用程序中,并為你節省數百個開發和調試時間。(點這下載)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn