打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC框体添加菜单栏工具栏状态栏

菜单栏工具栏状态栏
菜单栏
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

实例
[cpp]
#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; 

#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;

菜单栏的一些资源

[cpp]
/////////////////////////////////////////////////////////////////////////////   
// 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 

/////////////////////////////////////////////////////////////////////////////
// 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运行结果:

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VC2008在CMFCToolBar工具栏中加入组合框
MFC工具栏和状态栏
单文档窗口状态条的“就绪”怎么去掉?
Visual C .NET编程讲座之四(3)
如何实现工具栏的下拉箭头按钮-图文教程-中国教程网
数据库课程设计(学生成绩管理系统)(免费下载.xiaoy)[1]
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服