菜單類
CMenu,封裝了關于菜單的各種操作成員函數,另外還封裝了一個非常重要的成員變量m_hMenu(菜單句柄)
菜單使用
- 添加菜單資源
- 加載菜單
工具欄相關類
CToolBarCtrl-》父類是CWnd,封裝了關于工具欄控件的各種操作。
CToolBar-》父類是CControlBar,封裝了關于工具欄的操作,以及和框架窗口的關系。
工具欄的使用
- 添加工具欄資源
- 創建工具欄 CToolBar::CreateEx
- 加載工具欄 CToolBar::LoadToolBar
- 設置工具欄的停靠
a. CToolBar::EnableDocking (工具欄想停靠在的位置)
b.CFrameWnd::EnableDocking (框架允許工具欄停靠在的位置)
c.CFrameWnd::DockControlBar (臨時停靠的位置)
上面兩圖:
菜單項ID和工具欄按鈕ID一樣,相當于兩者功能被綁定
代碼示例
#include <afxwin.h>
#include "resource.h"
#include <afxext.h> //CToolBarclass CMyFrameWnd :public CFrameWnd {DECLARE_MESSAGE_MAP()
public:afx_msg void OnNew();afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnSet();public://工具欄CToolBar toolbar;};BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)//菜單項ID和工具欄按鈕ID一樣,相當于兩者功能被綁定ON_COMMAND(ID_NEW,OnNew)ON_WM_CREATE()ON_COMMAND(ID_SET, &CMyFrameWnd::OnSet)
END_MESSAGE_MAP()void CMyFrameWnd::OnNew()
{AfxMessageBox("新建菜單項被點擊");
}void CMyFrameWnd::OnSet()
{AfxMessageBox("紅色按鈕被點擊");
}class CMyWinApp :public CWinApp {
public:virtual BOOL InitInstance();
};int CMyFrameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;//1.添加工具欄資源//2.創建工具欄 CBRS_GRIPPER 給工具欄添加把手toolbar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_GRIPPER);//3.加載工具欄toolbar.LoadToolBar(IDR_TOOLBAR1);//4.設置工具欄停靠toolbar.EnableDocking(CBRS_ALIGN_ANY); //設置工具欄想停靠在的位置this->EnableDocking(CBRS_ALIGN_ANY); //框架允許工具欄停靠在的位置this->DockControlBar(&toolbar,AFX_IDW_DOCKBAR_BOTTOM); //臨時停靠的位置return 0;
}BOOL CMyWinApp::InitInstance() {CMyFrameWnd* pFrame = new CMyFrameWnd;//1.添加菜單資源//2.IDR_MENU1 加載菜單資源pFrame->Create(NULL,"MFCToolBar",WS_OVERLAPPEDWINDOW,CFrameWnd::rectDefault,NULL,(CHAR*)IDR_MENU1);m_pMainWnd = pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;}CMyWinApp theApp;