当前位置:编程学习 > C/C++ >>

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);
补充:软件开发 , C++ ,

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,