【MFC】对话框中创建工具栏 您所在的位置:网站首页 windows自定义工具栏对话框 【MFC】对话框中创建工具栏

【MFC】对话框中创建工具栏

2024-07-01 10:08| 来源: 网络整理| 查看: 265

00. 目录

文章目录 00. 目录01. 案例概述02. 开发环境03. 关键技术04. 程序设计05. 秘笈心法06. 源码下载07. 附录

01. 案例概述

使用MFC向导可以创建基于文档视图结构的应用程序也可以创建基于对话框的应用程序,向导默认生成的文档视图结构的应用程序带有工具栏,而对话框的应用程序没有带任何工具栏,本实例演示如何在对话框中创建工具栏,效果如下图所示。 在这里插入图片描述

02. 开发环境

系统环境:Windows 10

开发环境:Visual Studio 2019

03. 关键技术

MFC提供了工具栏类CToolBarCtrl来创建工具栏。创建工具栏使用Create方法,向工具栏中添加按钮使用AddButtons方法。

Create方法:

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 返回值:如果成功则返回非零值;否则返回零。 参数: dwStyle 指定工具条控件的风格。工具条必须总是具有WS_CHILD风格。另外,你可以为工具条指定在 说明部分描述的工具条风格和窗口风格的任意组合。 rect 随意指定该工具条控件的尺寸和位置。它可以是一个CRect对象或一个RECT结构。 pParentWnd 指定工具条控件的父窗口。它不能是NULL。 nID 指定工具条控件的ID。

AddButtons方法

BOOL AddButtons( int nNumButtons, LPTBBUTTON lpButtons ); 功能 该方法是用来设置工具栏上的按钮。 参数描述 nNumButtons:工具栏按钮的数量。 lpButtons:TBBUTTON结构体类型的指针。TBBUTTON结构体中包含了工具栏按钮的命令ID值、图标索引、按钮名称等数据成员。 04. 程序设计

(1)新建一个基于对话框的应用程序。

(2)在CDialogToolBarDlg类中定义一个CToolBarCtrl对象和一个CImageList对象。

private: CToolBarCtrl m_ToolBarCtrl; CImageList m_ImageList;

(3)在自定义函数InitToolBar中动态创建工具栏,函数实现代码如下。

//初始化工具栏 void CMy3ToolBarDlg::InitToolBar() { CString strPath; HICON hIcon; //创建图像列表 m_ImageList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0); //向图像列表中添加图标 for (int i = 0; i button[j].dwData = 0; //工具栏按钮为可用 button[j].fsState = TBSTATE_ENABLED; //工具栏按钮样式 button[j].fsStyle = TBSTYLE_BUTTON; } //设置工具栏按钮的命令ID值 button[0].idCommand = ID_ADDDATA; //设置图标索引 button[0].iBitmap = 0; //设置工具栏按钮名称 button[0].iString = m_ToolBarCtrl.AddStrings(TEXT("添加")); //设置工具栏按钮的命令ID值 button[1].idCommand = ID_UPDATEDATA; //设置图标索引 button[1].iBitmap = 1; //设置工具栏按钮名称 button[1].iString = m_ToolBarCtrl.AddStrings(TEXT("修改")); //设置工具栏按钮的命令ID值 button[2].idCommand = ID_DELETEDATA; //设置图标索引 button[2].iBitmap = 2; //设置工具栏按钮名称 button[2].iString = m_ToolBarCtrl.AddStrings(TEXT("删除")); button[3].fsStyle = TBSTYLE_SEP; //设置工具栏按钮的命令ID值 button[4].idCommand = ID_FIRSTDATA; //设置图标索引 button[4].iBitmap = 3; //设置工具栏按钮名称 button[4].iString = m_ToolBarCtrl.AddStrings(TEXT("第一条")); //设置工具栏按钮的命令ID值 button[5].idCommand = ID_PREVIOUSDATA; //设置图标索引 button[5].iBitmap = 4; //设置工具栏按钮名称 button[5].iString = m_ToolBarCtrl.AddStrings(TEXT("上一条")); //设置工具栏按钮的命令ID值 button[6].idCommand = ID_NEXTDATA; //设置图标索引 button[6].iBitmap = 5; //设置工具栏按钮名称 button[6].iString = m_ToolBarCtrl.AddStrings(TEXT("下一条")); //设置工具栏按钮的命令ID值 button[7].idCommand = ID_LASTDATA; //设置图标索引 button[7].iBitmap = 6; //设置工具栏按钮名称 button[7].iString = m_ToolBarCtrl.AddStrings(TEXT("末一条")); button[8].fsStyle = TBSTYLE_SEP; //设置工具栏按钮的命令ID值 button[9].idCommand = ID_SAVEDATA; //设置图标索引 button[9].iBitmap = 7; //设置工具栏按钮名称 button[9].iString = m_ToolBarCtrl.AddStrings(TEXT("保存")); //设置工具栏按钮的命令ID值 button[10].idCommand = ID_CANCELDATA; //设置图标索引 button[10].iBitmap = 8; //设置工具栏按钮名称 button[10].iString = m_ToolBarCtrl.AddStrings(TEXT("取消")); //向工具栏中添加按钮 m_ToolBarCtrl.AddButtons(11, button); //自动调整工具栏的大小 m_ToolBarCtrl.AutoSize(); //设置工具栏的样式 m_ToolBarCtrl.SetStyle(TBSTYLE_FLAT | CCS_TOP); } BOOL CMy3ToolBarDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 InitToolBar(); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } 05. 秘笈心法

工具栏的创建方法

CToolBarCtrl类是创建工具栏控件的类,而CToolBar类是创建工具栏的类,CToolBar类包含了CToolBarCtrl类,文档视图结构通常使用CToolBar类来创建工具栏,CToolBar类可以直接通过加载位图来生成工具栏,也可以调用CToolBarCtrl对象进行工具栏的设置。

06. 源码下载

下载:对话框中创建工具栏.rar

07. 附录


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有