菜单栏工具栏状态栏
- 菜单栏
CMenu封装了菜单句柄和相关菜单API
1.1添加资源
1.2在CMainFrame::OnCreate函数中添加菜单;CMenu::Attach——将菜单句柄附加到菜单对象中;CMenu::Detach——将菜单句柄从菜单对象中分离
1.3 命令相关 ON_COMMAND
1.4 菜单项的状态 ON_UPDATE_COMMAND_UI CCmdUI类
- 工具栏
工具栏相关类CToolBarCtrl——父类是CWnd,封装了Toolbar Control控件的相关信息,API等。CToolBar——父类CControlBar,封装了ToolBar和CFrameWnd之间的关系。
2.1创建工具栏 CToolBar::Create/Ex
2.2 加载工具栏
2.3工具栏的停靠 CToolBar::EnableDocking设置工具栏允许停靠;CFrameWnd::EnableDocking设置窗口允许被停靠;CFrameWnd::DockControlBar设置停靠位置。
2.4命令处理
2.5工具栏的显示与隐藏 CFrameWnd::ShowControlBar
2.6信息提示 增加风格 CBRS_TOOLTIPS;设置提示信息。
- 状态栏
状态栏相关类CStatusBarCtrl——父类是CWnd,封装了StatusBars的相关信息,API等。CStatusBar——父类CControlBar,封装了状态栏和窗口之间的关系。
3.1创建状态栏 CStatusBar::Create/Ex
3.2设置状态栏指示器 CStatusBar::SetIndicators
3.3设置或获取状态栏信息CStatusBar::SetPaneText,CStatusBar::GetPaneText
实例
- #include "stdafx.h"
- #include "Resource.h"
- UINT g_nIndicators[]=
- {
- 0,
- IDS_TIME,
- ID_INDICATOR_CAPS,
- ID_INDICATOR_NUM,
- ID_INDICATOR_SCRL
- };
- class CMainFrame:public CFrameWnd
- {
- public:
- DECLARE_MESSAGE_MAP()
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//菜单栏,工具栏,状态栏创建与加载
- //菜单栏消息处理函数
- afx_msg void OnExit();
- afx_msg void OnOpen();
- afx_msg void OnUpdateUIOpen(CCmdUI* pCmdUI);
- //工具栏消息处理函数
- afx_msg void OnViewStandard();
- afx_msg void OnUpdateUIStandard(CCmdUI* pCmdUI);
- //状态栏消息处理函数
- afx_msg void OnTimer(UINT nIDEvent);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- private:
- CToolBar mWndToolBar;
- CStatusBar mWndStatusBar;
- };
- BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
- ON_WM_CREATE()
- ON_COMMAND(ID_OPEN,OnOpen)
- ON_COMMAND(ID_EXIT,OnExit)
- ON_UPDATE_COMMAND_UI(ID_OPEN,OnUpdateUIOpen)
- ON_COMMAND(ID_VIEW_STANDARD,OnViewStandard)
- ON_UPDATE_COMMAND_UI(ID_VIEW_STANDARD,OnUpdateUIStandard)
- ON_WM_TIMER()
- ON_WM_MOUSEMOVE()
- END_MESSAGE_MAP()
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- //添加菜单
- CMenu menu;
- menu.LoadMenuW(IDR_MAINFRAME);//加载菜单资源
- SetMenu(&menu);//将菜单设置到窗口
- menu.Detach();//将菜单句柄与菜单对象分离
- //添加工具栏
- mWndToolBar.CreateEx(this,TBSTATE_CHECKED,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_ANY|CBRS_TOOLTIPS);
- mWndToolBar.LoadToolBar(IDR_MAINFRAME);//加载工具栏
- //停靠工具栏
- mWndToolBar.EnableDocking(CBRS_ALIGN_ANY);//1.设置工具栏允许停靠
- EnableDocking(CBRS_ALIGN_ANY);//设置框架窗口允许被停靠
- DockControlBar(&mWndToolBar,AFX_IDW_DOCKBAR_TOP);//停靠工具栏操作
- mWndToolBar.SetWindowTextW(L"标准工具栏");//设置工具栏的标题
- //创建状态栏
- mWndStatusBar.CreateEx(this);
- mWndStatusBar.SetIndicators(g_nIndicators,sizeof(g_nIndicators)/sizeof(UINT));//设置指示灯
- SetTimer(100,1000,NULL);//启动定时器
- return 0;
- }
- void CMainFrame::OnOpen()
- {
- MessageBox(L"OnOpen");
- }
- void CMainFrame::OnExit()
- {
- MessageBox(L"OnExit");
- //PostQuitMessage(0);
- }
- void CMainFrame::OnUpdateUIOpen(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck();
- pCmdUI->SetRadio();
- pCmdUI->SetText(L"Open");
- }
- void CMainFrame::OnViewStandard()
- {
- if (mWndToolBar.IsWindowVisible())
- {
- ShowControlBar(&mWndToolBar,FALSE,FALSE);
- }
- else
- {
- ShowControlBar(&mWndToolBar,TRUE,FALSE);
- }
- }
- void CMainFrame::OnUpdateUIStandard(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(mWndToolBar.IsVisible());
- }
- void CMainFrame::OnTimer(UINT nIDEvent)
- {
- CTime t=CTime::GetCurrentTime();
- CString strTime=t.Format("%Y-%m-%d %H:%M:%S");
- mWndStatusBar.SetPaneText(1,strTime);
- }
- void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
- {
- CString strPt;
- strPt.Format(L"坐标:X=%d,Y=%d",point.x,point.y);
- mWndStatusBar.SetPaneText(0,strPt);
- }
- class MFCMenu:public CWinApp
- {
- public:
- virtual BOOL InitInstance();
- };
- BOOL MFCMenu::InitInstance()
- {
- CMainFrame *pFrame=new CMainFrame;
- pFrame->Create(NULL,L"MFCMenue");
- //pFrame->Create(NULL,L"MFCToolbar",WS_OVERLAPPEDWINDOW,CFrameWnd::rectDefault,NULL,MAKEINTRESOURCE(IDR_MAINFRAME));
- m_pMainWnd=pFrame;
- pFrame->ShowWindow(SW_SHOW);
- pFrame->UpdateWindow();
- return TRUE;
- }
- MFCMenu theApp;
菜单栏的一些资源
- /
- // Bitmap
- IDR_MAINFRAME BITMAP "res\\toolbar1.bmp"
- /
- // Toolbar
- IDR_MAINFRAME TOOLBAR 16, 15
- BEGIN
- BUTTON ID_OPEN
- BUTTON ID_EXIT
- SEPARATOR
- BUTTON ID_EDIT_COPY
- BUTTON ID_EDIT_PASTE
- SEPARATOR
- BUTTON ID_APP_ABOUT
- END
- /
- // Menu
- IDR_MAINFRAME MENU
- BEGIN
- POPUP "文件(&F)"
- BEGIN
- MENUITEM "打开(&O)", ID_OPEN
- MENUITEM "退出(&X)", ID_EXIT
- END
- POPUP "视图(&V)"
- BEGIN
- POPUP "工具栏(&T)"
- BEGIN
- MENUITEM "标准(&S)", ID_VIEW_STANDARD
- END
- END
- END
- /
- STRINGTABLE
- BEGIN
- IDS_TIME " "
- END
运行结果: