MFC框体添加菜单栏工具栏状态栏
2013-04-02 14:25
393 查看
菜单栏工具栏状态栏
菜单栏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
运行结果:
相关文章推荐
- MFC框体添加菜单栏工具栏状态栏
- MFC框体添加菜单栏工具栏状态栏
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- MFC 2008,新的用户界面 - 3 - 菜单栏、工具栏和状态栏
- 添加菜单栏、工具栏按钮、状态栏,并将菜单栏和工具栏关联
- 在mfc中,设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- MFC对话框添加工具栏、菜单、状态栏
- MFC对话框添加工具栏、菜单、状态栏
- MFC基于对话框的菜单栏,工具栏和状态栏的创建
- MFC 2008,新的用户界面(3)- 菜单栏、工具栏和状态栏
- MFC VS2008中的新用户界面 ————菜单栏、工具栏和状态栏
- MFC的对话框工具栏、状态栏、和菜单栏的编辑
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- Qt mainWindow添加状态栏,菜单栏,工具栏的Action方法
- MFC取消MDI、SDI的状态栏、工具栏、菜单栏
- C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
- MFC 对话框程序如何添加目录,工具栏,状态栏
- MFC处理菜单栏和工具栏
- 模式对话框非模式对话框添加工具栏、菜单、状态栏总结
- 工具栏添加大图标 MFC/VC++