mfc中toolbar视图
时间: 2023-10-06 15:05:20 浏览: 99
在MFC工具栏ToolBar上面添加Edit控件
MFC中的ToolBar视图是一个工具栏控件,它通常与主窗口或文档视图一起使用,用于提供快捷操作按钮。ToolBar视图可以使用CToolBar类创建,可以添加按钮、分隔符等控件。可以通过在工具栏上拖动鼠标来调整工具栏的大小和位置。
要在MFC应用程序中创建ToolBar视图,可以按照以下步骤进行:
1.在资源视图中添加一个ToolBar资源。
2.在主窗口类或文档视图类中创建CToolBar对象,并使用Create函数创建工具栏。
3.使用AddButtons函数向工具栏中添加按钮。
4.在主窗口类或文档视图类中重写OnNotify函数,处理工具栏按钮的消息。
5.在主窗口类或文档视图类中重写OnSize函数,以便在窗口大小改变时调整工具栏的大小和位置。
示例代码如下:
//在主窗口类中创建ToolBar视图
class CMainFrame : public CFrameWnd
{
public:
CMainFrame();
virtual ~CMainFrame();
protected:
CToolBar m_wndToolBar;
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnUpdateToolbar(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
};
CMainFrame::CMainFrame()
{
}
CMainFrame::~CMainFrame()
{
}
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_WM_SIZE()
ON_UPDATE_COMMAND_UI(ID_TOOLBAR_BUTTON1, &CMainFrame::OnUpdateToolbar)
ON_UPDATE_COMMAND_UI(ID_TOOLBAR_BUTTON2, &CMainFrame::OnUpdateToolbar)
END_MESSAGE_MAP()
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//创建ToolBar
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
//设置工具栏按钮大小
m_wndToolBar.SetButtonSize(CSize(48, 48));
//启用工具栏按钮提示
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
//使工具栏可以调整大小
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
//调整工具栏大小和位置
if (m_wndToolBar.GetSafeHwnd())
m_wndToolBar.MoveWindow(0, 0, cx, m_wndToolBar.GetHeight());
}
void CMainFrame::OnUpdateToolbar(CCmdUI* pCmdUI)
{
//处理工具栏按钮的消息
}
注意:在上述示例代码中,IDR_TOOLBAR是工具栏资源的ID,ID_TOOLBAR_BUTTON1和ID_TOOLBAR_BUTTON2是工具栏按钮的ID。同时,需要在资源文件中定义工具栏资源和按钮资源,并将按钮资源关联到对应的命令ID。
阅读全文