您的位置:首页 > 其它

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

2015-08-06 17:38 218 查看

菜单栏工具栏状态栏

菜单栏

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] view
plaincopy

#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] view
plaincopy

/////////////////////////////////////////////////////////////////////////////

// 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

运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: