VS2010中CMFCToolBar的用法
cmfcbutton 用法
cmfcbutton 用法CMFCButton 是 MFC(Microsoft Foundation Class)框架中的一个类,它是用于创建和管理按钮的控件。
在使用 CMFCButton 进行按钮的创建和管理时,可以按照以下步骤进行操作:1. 在 Visual Studio 中创建 MFC 项目并进入资源视图,选择 Dialog 框的设计器。
2. 在 Dialog 框的设计器中选择“按钮”工具,绘制一个按钮控件,并为其指定一个 ID。
3. 在 Dialog 类的头文件中添加一个成员变量,将其设置为 CMFCButton 类型,并赋予按钮的 ID。
4. 在 OnInitDialog() 函数中调用 CMFCButton 类的 Create() 函数,创建按钮的实例。
5. 在按钮的回调函数中添加相应的逻辑处理。
以下是使用 CMFCButton 的一个简单示例:首先,在 Visual Studio 中创建一个新的 MFC 对话框项目,然后按照上述步骤进行操作。
步骤1:在资源视图中选择 Dialog 框的设计器,双击打开 Dialog 对话框设计器。
步骤2:在设计器中选择“按钮”工具,绘制一个按钮控件,并为其指定一个ID。
例如,将按钮的 ID 设置为 IDC_BUTTON。
步骤3:在 Dialog 类的头文件中添加一个 CMFCButton 类型的成员变量,将其设置为按钮的 ID。
例如,添加以下代码:```cppCMFCButton m_btn;```步骤4:在 OnInitDialog() 函数中调用 CMFCButton 类的 Create() 函数,创建按钮的实例,并设置按钮的样式、文本和位置。
例如,添加以下代码:```cppBOOL CMyDialog::OnInitDialog(){CDialogEx::OnInitDialog();// 创建按钮实例m_btn.Create(_T("我的按钮"), WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON, CRect(10, 10, 100, 30), this, IDC_BUTTON);return TRUE;}```步骤5:在按钮的回调函数中添加相应的逻辑处理。
VS2010MFC编程入门-Ribbon界面开发
Ribbon界面就是微软从Office2007开始引入的一种为了使应用程序的功能更加易于发现和使用、减少了点击鼠标的次数的新型界面,从实际效果来看,不仅外观漂亮,而且功能直观,用户操作简洁方便。
鸡啄米将以图文结合的方式来说明利用MFC向导创建Ribbon样式的单文档应用程序框架的过程,其实Ribbon应用程序框架的创建有很多地方与普通单文档应用程序类似,所以如果有些步骤的选项不太明白,可以参见VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)。
下面是具体步骤:1、打开VS2010,在菜单中选择File->New->Project,弹出标题为“New Project”的对话框。
在此对话框左侧面板中选择Installed Templates->Visual C++->MFC,然后在中间区域中选择“MFC Application”。
选择了工程类型后,可以看到对话框下边有三个设置项,分别是Name--工程名、Location--解决方案路径、Solution Name--解决方案名称。
鸡啄米在这里将Name设为“Example52”,Location设为“桌面”的路径,Solution Name默认与Name一样,我们这里不作修改。
如下图:点“OK”按钮。
2、这时会弹出“MFC Application Wizard”对话框,上部写有“Welcome to the MFC Application Wizard”,下面显示了当前工程的默认设置。
第一条“Tabbed multiple document interface (MDI)”是说此工程是多文档应用程序。
如果这时直接点下面的“Finish”按钮,可生成具有上面列出设置的多文档程序。
但我们此例是要建立Ribbon样式的单文档应用程序,所以点“Next”按钮再继续设置吧。
3、接下来弹出的对话框上部写有“Application Type”,当然是让选择应用程序类型,我们选择“Single document”,说明要创建的是单文档应用程序框架。
VS2010和MFC编程入门之39(文档、视图和框架:概述)
VS2010MFC编程入门之三十九(文档、视图和框架:概述)菜单、工具栏和状态栏的使用,这里开始将为大家讲解文档、视图和框架的知识。
文档、视图和框架简介在VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)创建的单文档工程Example34中,我们可以看到MFC向导自动为我们生成了CExample34Doc类、CExample34View类和CMainFrame类,它们就分别是文档类、视图类和框架窗口类。
文档/视图结构是MFC提供的一种不错的设计,它将数据的处理和显示分开来,这样更便于我们对程序的维护和扩展。
下面分别介绍这种结构中涉及到的几个重要概念。
文档文档对象用于管理和维护数据,包括保存数据、取出数据以及修改数据等操作,在数据被修改以后,文档可以通知其对应的所有视图更新显示。
视图视图对象将文档中的数据可视化,负责从文档对象中取出数据显示给用户,并接受用户的输入和编辑,将数据的改变反映给文档对象。
视图充当了文档和用户之间媒介的角色。
框架一个文档可能有多个视图界面,这就需要有框架来管理了。
框架就是用来管理文档和视图的。
框架窗口是应用程序的主窗口,应用程序执行时会先创建一个最顶层的框架窗口。
视图窗口是没有菜单和边界的子窗口,它必须包含在框架窗口中,即置于框架窗口的客户区内。
文档模板文档模板中存放了与文档、视图和框架相关的信息。
应用程序通过文档模板创建文档对象、框架窗口对象和视图对象。
另外,文档、视图和框架之间的关系也是由文档模板来管理的。
我们来看看Example34单文档程序中,CExample34App应用程序类的成员函数CExample34App::InitInstance()创建并注册文档模板的部分:C++代码BOOL CExample34App::InitInstance(){......略// Register the application's document templates. Document templates// serve as the connection between documents, frame windows and views CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CExample34Doc),RUNTIME_CLASS(CMainFrame), // main SDI frame windowRUNTIME_CLASS(CExample34View));if (!pDocTemplate)return FALSE;AddDocTemplate(pDocTemplate);......略return TRUE;}在构造文档模板类CSingleDocTemplate的对象时,第一个参数是资源IDIDR_MAINFRAME,它包括框架窗口图标等,后面的三个参数都是RUNTIME_CLASS 宏的调用,RUNTIME_CLASS用于获取类的运行时信息,文档模板可以根据这些动态创建信息来创建相应类的对象,即文档对象、框架窗口对象和视图对象。
MFC 对话框添加ToolBar
MFC中没有提供供对话框使用的工具条类,而我们时常需要开发以对话框为框架的程序。下面简单的说明这种方法。
1:在资源编辑器中插入工具条资源,并为每个按钮创建ID。将它命名为IDR_TOOLBAR1
2:在对话框变量中添加一个工具条变量。
CToolBar m_wndToolBar;
//所有的子窗口将被移动,以免被TOOLBAR覆盖
// Offest to move all child controls after adding Tollbar
//计算移动的距离
CPoint ptOffset(rcClientNew.left-rcClientOld.left,
rcClientNew.top-rcClientOld.top);
//重新计算RECT大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNew);
// All of the Child Windows (Controls) now need to be moved so the Tollbar does not cover them up.
3:在CDialog::OnInitDialog中添加如下代码:
// 创建工具条并调入资源
if(!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to Create Dialog Toolbar\n");
toolbar的用法
Toolbar的用法1. 什么是Toolbar?Toolbar(工具栏)是一种常见的用户界面组件,通常位于应用程序的顶部或底部,用于提供快速访问常用功能和操作。
Toolbar通常包含图标按钮、文本按钮、下拉菜单等,用于执行特定的操作或导航到其他页面。
在移动应用程序中,Toolbar通常位于屏幕的顶部,用于显示应用程序的标题、导航按钮、搜索框以及其他常用操作。
2. Toolbar的使用场景Toolbar适用于各种应用程序,尤其是那些需要提供快速访问常用功能和操作的应用程序。
以下是一些常见的使用场景:•导航:Toolbar通常包含导航按钮,用于在不同的页面之间切换。
导航按钮可以是返回按钮、菜单按钮或其他自定义按钮。
•搜索:Toolbar可以包含搜索框,使用户可以快速搜索应用程序中的内容或进行其他相关操作。
•操作:Toolbar可以包含各种操作按钮,用于执行特定的功能或操作。
例如,编辑按钮、分享按钮、设置按钮等。
•过滤器:Toolbar可以包含过滤器按钮,用于筛选显示的内容。
用户可以选择不同的过滤器选项,以查看特定类型的内容。
3. Toolbar的基本结构在Android应用程序中,Toolbar是由Toolbar类表示的。
它是ViewGroup的子类,可以包含其他视图组件,如按钮、文本视图等。
Toolbar通常包含以下几个主要部分:•标题:Toolbar可以显示应用程序的标题,通常位于屏幕的中间位置。
标题可以是文本或图标。
•导航按钮:Toolbar可以包含导航按钮,用于返回上一个页面或打开侧边栏菜单。
导航按钮通常位于标题的左边。
•操作按钮:Toolbar可以包含操作按钮,用于执行特定的功能或操作。
操作按钮可以是图标按钮或文本按钮,通常位于标题的右边。
•溢出菜单:如果Toolbar上的操作按钮太多无法一次显示完全,可以使用溢出菜单来显示更多的操作选项。
•搜索框:Toolbar可以包含搜索框,使用户可以快速搜索应用程序中的内容。
VS2010和MFC编程入门之35(菜单:菜单及CMenu类的使用)
VS2010MFC编程入门之三十五(菜单:菜单及CMenu类的使用)VS2010的菜单资源,这里主要讲菜单及CMenu类的使用。
CMenu类的主要成员函数MFC为菜单的操作提供了CMenu类,下面鸡啄米就常用的几个成员函数进行简单的介绍。
BOOL LoadMenu(UINT nIDResource);加载菜单资源,并将其附加到CMenu对象上。
参数nIDResource指定了要加载的菜单资源的ID。
如果菜单加载成功则返回TRUE,否则返回FALSE。
BOOL DeleteMenu(UINT nPosition,UINT nFlags);在菜单中删除一个菜单项。
参数nPosition指定要删除的菜单项。
参数nFlags就用来解释nPosition的意义,为MF_BYCOMMAND时说明nPosition表示菜单项的ID,为MF_BYPOSITION时说明nPosition表示菜单项的位置,第一个菜单项的位置为0。
如果删除菜单项成功则返回TRUE,否则返回FALSE。
BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = 0);用来在指定位置显示一个浮动的弹出式菜单。
参数nFlags指定屏幕坐标和鼠标位置的标志,可以是以下取值:TPM_CENTERALIGN:菜单在水平方向上相对于参数x指定的坐标值居中显示TPM_LEFTALIGN:菜单的左侧与参数x指定的坐标值对齐TPM_RIGHTALIGN:菜单的右侧与参数x指定的坐标值对齐TPM_BOTTOMALIGN:菜单的底部与参数y指定的坐标值对齐TPM_TOPALIGN:菜单项的顶部与参数y指定的坐标值对齐TPM_VCENTERALIGN:菜单在垂直方向上相对于参数y指定的坐标值居中显示这里先介绍这几个比较常用的,其他可参见MSDN。
参数x指定弹出式菜单的水平方向的屏幕坐标,参数y指定菜单顶部垂直方向上的屏幕坐标,参数pWnd指明哪个窗口拥有此弹出式菜单,不能为NULL,参数lpRect忽略。
VS2010和MFC编程入门之6(对话框:创建对话框模板和修改对话框属性)
VS2010MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)对于VC++编程入门学习者来说可能有些抽象,会把消息映射的知识渗透到后面的教程中。
这里开始为大家讲解偏应用的知识-创建对话框。
对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。
创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。
鸡啄米在本节中先讲讲怎样创建对话框模板和设置对话框属性。
创建基于对话框的应用程序框架之前创建的HelloWorld程序是单文档应用程序,生成了多种窗口,如果用它来将讲创建对话框的话可能有些复杂,对大家单纯理解对话框有点影响,所以这里鸡啄米就再创建一个基于对话框的应用程序,用来实现加法运算的功能。
创建步骤同单文档应用程序大同小异,简单步骤如下:1.选择菜单项File->New->Project,弹出“New Project”对话框。
2.左侧面板中Installed Templated的Visual C++下选择MFC,中间窗口中选择MFC Application,然后在下面的Name编辑框中键入工程名称,本例取名“Addition”,在Location编辑框中设置工程的保存路径。
点“OK”。
3.点“Next”到“Application Type”对话框,在Application type下选择Dialog based,其他使用默认设置,点“Finish”。
我们可以在Solution Explorer视图中看到,此工程的文件要比单文档应用程序少的多,在Class View中主要有三个类:CAboutDlg、CAdditionApp和CAdditionDlg。
mfc toolbar用法
mfc toolbar用法MFC(Microsoft Foundation Classes)是一个微软公司提供的应用程序框架,用于在Windows 操作系统上开发应用程序。
在 MFC 中,Toolbar 工具栏是一个常用的控件,它可以包含多个按钮,并且可以自定义每个按钮的图像、文本和功能。
以下是一个简单的 MFC Toolbar 用法示例:1. 在 VS2019 中新建一个 MFC 项目。
2. 右键资源文件,选择 ToolBar,点击新建。
3. 自定义三个按钮,可以设置图案、颜色、样式。
4. 因为资源不能像控件一样通过自动生成工具自动添加变量,所以需要手动添加成员变量,在主对话框的 h 文件中添加 CToolBar 类型的变量,并引入 afxext.h 头文件。
5. 在主窗口 cpp 中重写父类继承下来的虚函数 OnInitDialog(),并添加以下代码。
以下是详细步骤:1. 在 VS2019 中新建一个 MFC 项目。
2. 右键资源文件,选择 ToolBar,点击新建。
3. 自定义三个按钮,可以设置图案、颜色、样式。
4. 因为资源不能像控件一样通过自动生成工具自动添加变量,所以需要手动添加成员变量,在主对话框的 h 文件中添加 CToolBar 类型的变量,并引入 afxext.h 头文件。
5. 在主窗口 cpp 中重写父类继承下来的虚函数 OnInitDialog(),并添加以下代码。
上述代码将在 MFC 应用程序中创建一个包含三个按钮的 Toolbar 工具栏,并在主窗口中显示。
每个按钮的图像和功能可以根据需要进行自定义。
请注意,上述示例仅涵盖了Toolbar 工具栏的基本用法,你可以根据实际需求进一步扩展和定制其功能。
VS2010单文档窗口属性改变及按键文本框的添加
VS2010窗口属性修改及文本按键添加1、输出窗口的资源管理器停靠窗口、输出停靠窗口、属性停靠窗口的勾选取消在创建VS2010单文档工程时,会出现需要改变输出窗口界面的情况,正常情况下的界面如下图所示:那么我们不需要窗口的类视图及属性窗口,我们就可以再创建单文档工程的时候做如下的修改,在创建工程的过程中,在向导的高级功能选项中,将高级框架窗格中的资源管理器停靠窗口、输出停靠窗口、属性停靠窗口的勾选取消,这样之后输出的窗口就是我们想要的。
2、去掉窗口的工具栏及菜单项在MainFrm.cpp中的int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中的五行注释掉,窗口的工具栏就不会再出现。
如果要去掉菜单栏,则可以将OnCreate(LPCREATESTRUCT lpCreateStruct)中的if (!m_wndMenuBar.Create(this)){TRACE0("未¡ä能¨¹创ä¡ä建¡§菜?单Ì£¤栏¤?\n");return -1; // 未¡ä能¨¹创ä¡ä建¡§}到CMFCToolBar::EnableQuickCustomization();都注释掉。
然后在函数的末尾添加上long Style;this->SetMenu(NULL);之后运行的结果如下所示:3、窗口的大小以及固定窗口大小的设置:设置窗口的大小与标题可以再BOOL CMy2App::InitInstance()函数中做修改,界面如下:要使得窗口的大小固定不变还应该在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)下添加如下的函数:最后生成的界面去下图所示,我们可以看到串口的最大化图标已经变成灰色,说明整个窗口已经固定大小。
VS2010和MFC编程入门之36(工具栏:工具栏资源及CToolBar类)
VS2010MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)菜单及CMenu类的使用,这里讲与菜单有密切联系的工具栏。
工具栏简介工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成。
当用户用鼠标单击工具栏上某个按钮时,程序会执行相应的操作,如果鼠标没有点击,只是停留在某个按钮上一会后,会弹出一个小窗口显示提示信息。
一般工具栏中的按钮在菜单栏中都有对应的菜单项中,即点击工具栏按钮与点击菜单项的效果相同。
但工具栏中的按钮都显式的排列出来,操作很方便,而且按钮上的图片描述功能更直观,所以工具栏作为用户操作接口来说比菜单更加便捷。
VS2010工具栏资源详解鸡啄米仍然以VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)中创建的单文档工程Example34为基础,讲解工具栏资源。
在Example34工程中,打开Resource View资源视图,展开Example->Example34.rc->Toolbar,我们可以看到有一个ID为IDR_MAINFRAME的工具栏资源,双击打开,工具栏资源显示如下:以IDR_MAINFRAME工具栏的第一个按钮为例说明工具栏按钮的各项属性。
用鼠标单击工具栏资源上的第一个按钮,属性页中就会显示其属性。
下面分别讲解各项属性。
ID属性:ID_。
不知大家是否还记得,菜单IDR_MAINFRAME的菜单项File->New的ID也是ID_,两者ID相同,正是如此才使得工具栏第一个按钮与菜单项File->New能实现相同的功能。
所以大家一定要记住,如果想让工具栏某个按钮与菜单栏某个菜单项点击后执行的操作相同,就要为两者设置相同的ID。
Prompt属性:Create a new document\nNew。
此属性为工具栏按钮的提示文本。
在鼠标指向此按钮时,状态栏中会显示“Create a new document”,当弹出提示信息窗口时会显示包含“New”的提示信息。
VS2010和MFC编程入门之38(状态栏的使用详解)
VS2010MFC编程入门之三十八(状态栏的使用详解)工具栏的创建、停靠与使用,这里来讲解状态栏的知识。
状态栏简介状态栏相信大家在很多窗口中都能见到,它总是用来显示各种状态。
状态栏实际上也是一个窗口,一般分为几个窗格,每个窗格分别用来显示不同的信息和状态等,如菜单项和工具栏按钮的提示信息。
用MFC向导生成的单文档或多文档程序都会自动创建状态栏,大家可以运行下VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)中创建的Example34程序,在结果界面中可以看到窗口底部有个状态栏,该状态栏被分为了几个窗格,分别用来显示菜单项和工具栏按钮的提示信息及Caps Lock、Num Lock、Scroll Lock键的状态。
当然,我们可以自定义状态栏,加入新的提示信息或指示器。
CStatusBar类MFC为状态栏提供了CStatusBar类,封装了状态栏的属性和操作。
下面是CStatusBar类几个主要的成员函数:virtual BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR);创建一个状态栏。
参数pParentWnd为状态栏父窗口的指针,参数dwStyle为状态栏的风格,除了标准的Windows风格外,它还支持:CBRS_TOP:位于框架窗口的顶部。
CBRS_BOTTOM:位于框架窗口的底部。
CBRS_NOALIGN:父窗口大小改变时状态栏不会被重新定位。
参数nID指定状态栏的ID。
BOOL SetIndicators(const UINT* lpIDArray, intnIDCount);为每个指示器设置显示文本,具体来说,就是用lpIDArray数组中的对应元素为每个指示器设置一个ID,然后加载每个ID代表的字符串,设置为这些指示器的显示文本。
mfc button 的使用方法 -回复
mfc button 的使用方法-回复MFC(Microsoft Foundation Classes)是一套用于Windows平台上开发图形用户界面(GUI)应用程序的类库。
其中的MFC button(按钮)是在MFC框架下用于响应用户交互的一种控件。
本文将详细介绍MFC button的使用方法,包括创建、设置属性和事件处理等方面,以帮助读者全面了解并运用MFC button来构建优秀的GUI应用程序。
一、创建MFC button首先,在打开的Visual Studio开发环境中,选择创建一个新的MFC应用程序项目。
在创建对话框界面(Dialog)时,可以在工具箱中找到MFC button控件。
1. 打开Visual Studio,选择“文件”>“新建”>“项目”>“Windows 桌面向导”>“MFC应用程序”。
2. 填写应用程序名称和存储位置等信息,点击“确定”。
3. 在“应用程序类型”中选择“对话框”,点击“确定”。
4. 在对话框编辑器中,找到工具箱(Toolbox)窗口,展开“Button Controls”。
5. 在工具箱中找到MFC button控件,将其拖动到对话框界面上。
二、设置MFC button属性设置MFC button的属性是为了满足特定的应用需求,如显示文本、更改颜色、设置字体等。
下面是一些常见的MFC button属性及设置方法。
1. 文本设置:a. 双击MFC button控件,在控件上显示光标后,可以直接输入文本,或者在属性窗口的“caption”属性中输入文本。
b. 可以通过右键点击MFC button控件,选择“属性”来打开属性窗口,然后在“Caption”属性中输入文本。
2. 大小和位置设置:a. 在属性窗口中,可以通过“Move”选项来调整MFC button控件的位置。
b. 可以通过选中MFC button控件,然后拖动或调整边框来调整控件的大小。
VS2010 MFC多文档中的工具栏CMFCToolBar停靠的问题
今天遇到了一个问题,关于VS2010 MFC多文档中的工具栏CMFCToolBar停靠的问题。
关于CMFCToolBar的一些介绍网上也有人介绍过,就不过多介绍了,直奔主题。
解决问题的关键点就在于,如想将CMFCToolBar正常停靠的话,需要在其Create的时候,加上后面的ID,使其ID值不能相同。
目的:我一共有四个工具栏,想将它进行停靠在两行,每行两个工具栏。
做法:1. 在InitInstance的适当地方加入CleanState(_T("WorkSpace"));2. 在CMainFrame的类定义中加入CMFCToolBar m_wndToolBar2;CMFCToolBar m_wndToolBar3;CMFCToolBar m_wndToolBar4;3. 在CMainFrame中的OnCreate中加入:int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){...if (!m_wndToolBar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY| CBRS_SIZE_DYNAMIC) ||!m_wndToolBar2.LoadToolBar(IDR_TOOLBAR3)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}if (!m_wndToolBar3.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY| CBRS_SIZE_DYNAMIC) ||!m_wndToolBar3.LoadToolBar(IDR_PROPERTIES)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}if (!m_wndToolBar4.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY| CBRS_SIZE_DYNAMIC) ||!m_wndToolBar4.LoadToolBar(IDR_SORT)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}...m_wndToolBar2.SetWindowText( _T("JunxToolBar2") );m_wndToolBar3.SetWindowText( _T("JunxToolBar3") );m_wndToolBar4.SetWindowText( _T("JunxToolBar4") );...m_wndToolBar2.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);m_wndToolBar3.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);m_wndToolBar4.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);...m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar3.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar4.EnableDocking(CBRS_ALIGN_ANY);...DockPaneLeftOf(&m_wndToolBar2, &m_wndToolBar); // 将m_wndToolBar2停靠在m_wndToolBar的左边DockPane(&m_wndToolBar3); // 将m_wndToolBar3停靠在下一行DockPaneLeftOf(&m_wndToolBar4, &m_wndToolBar3); // 将m_wndToolBar4停靠在m_wndToolBar3的左边...}结果:做法很简单,但是出现一个奇怪现象,就是在下面的工具条竟然不见了。
MFC工具栏ToolBar按钮添加下拉菜单
MFC工具栏ToolBar按钮添加下拉菜单(转)2010-07-04 11:001.在MainFrm.cpp的int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数末尾添加如下代码://为画图工具栏的按钮添加下拉菜单m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARRO WS);//取值TBSTYLE_EX_DRAWDDARROWS,可以为某一个按钮添加下拉按钮。
DWORD dwStyle =m_wndToolBar.GetButtonStyle(m_mandToIndex(ID_DRAW_LINE ));dwStyle |= TBSTYLE_DROPDOWN; //其中ID_DRAW_LINE是你要添加下拉菜单的按钮的IDm_wndToolBar.SetButtonStyle(m_mandToIndex(ID_DRAW_LINE ),dwStyle);2.新建你要在点击按钮ID_DRAW_LINE出现的下拉菜单,即在工程的Resourceview选择目录树的条目点击右键,插入新的Resouse:Menu,在这里我新建的Menu它的ID是IDR_POPUP_LINE,如下图所示:3.在CMainFrame类的消息映射中(即MainFrm.cpp )加入下拉箭头的TBN_DROPDOWN消息映射:ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolbarDropDown)如下:BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolbarDropDo wn)//此行即为新增的ON_NOTIFY消息映射//}}AFX_MSG_MAPEND_MESSAGE_MAP()4.在MainFrame.h头文件中加入消息处理函数的声明:afx_msg void OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* plRes);如下:// Generated message map functionsprotected://{{AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* plRes);//}}AFX_MSGDECLARE_MESSAGE_MAP()5.在MainFrame.cpp文件中加入TBN_DROPDOWN消息处理的实现代码:void CMainFrame::OnToolbarDropDown(NMTOOLBAR *pnmtb, LRESULT *plr){CWnd *pWnd;UINT nID;switch(pnmtb->iItem){case ID_DRAW_LINE: //ID_DRAW_LINE即是你要添加下拉菜单的ToolBar按钮的IDpWnd = &m_wndToolBar;nID = IDR_POPUP_LINE;//IDR_POPUP_LINE就是上面新制作的菜单ID,当然,如果你要添加多个下拉菜单,只要多加几个case就好了break;default:return;}CMenu menu;menu.LoadMenu(nID);CMenu* pPopup = menu.GetSubMenu(0);ASSERT(pPopup);CRect rc;pWnd->SendMessage(TB_GETRECT,pnmtb->iItem,(LPARAM)&r c);pWnd->ClientToScreen(&rc);pPopup->TrackPopupMenu(TPM_LEFTALIGN |TPM_LEFTBUTTON | TPM_VERTICAL,rc.left,rc.bottom,this,&rc);}运行后如图:。
VS2010中CMFCToolBar的用法
VS2010中CMFCToolBar的用法自从VS2008中增加了一些特性的菜单,但这些特性在帮助中说明的很少,给使用者造成了很多麻烦。
笔者经过搜索以及自己的摸索,对其的用法有了初步了解,形成本文,如果能够为后来者解决一些问题,笔者将会感到欣慰。
一、向导自动生成的CMFCToolBar由于应用了系统风格,向导生成的菜单确实很漂亮。
如下图:但在某些情况下(至于哪些情况,笔者还不能确定),向导自动生成的菜单会没有名字,在“工具栏和停靠窗口”的子菜单下会显示空。
如下图:出现这种情况的解决办法就是自己给工具栏命个名称。
在CMainFrame::OnCreate()事件中给工具栏命名:int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){……// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockPane(&m_wndMenuBar);DockPane(&m_wndToolBar);m_wndToolBar.SetWi ndowText(_T(“工具栏”)); //这是自己添加的……return 0;}二、自己添加一条工具栏自己添加的工具栏如果按照向导生成的样子去做,在菜单中是不会显示出来的,虽然工具栏已经生成了。
如下图:要想让菜单在“工具栏和停靠窗口”中显示,是不能完全按照向导生成的样子做的。
需要模仿向导生成的样子做但仍有点变化。
(1)创建自已的工具栏在头文件中定义一个工具栏变量。
CMFCToolBar m_wndToolBar2;在CMainFrame::OnCreate()事件中创建并加载工具栏: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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 :IDR_MAINFRAME)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}//自己创建的工具栏if (!m_wndToolBar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |CBRS_SIZE_DYNAMIC,CRect(1,1,1,1),theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 +1:IDR_MAINFRAME+1) ||!m_wndToolBar2.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 :IDR_MAINFRAME)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}(2)自己的工具栏浮动或停靠窗口// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY);//自己创建的工具栏EnableDocking(CBRS_ALIGN_ANY);DockPane(&m_wndMenuBar);DockPane(&m_wndToolBar);DockPane(&m_wndToolBar2);//自己创建的工具栏这时候再运行程序会显示如下图:(3)给自己的工具栏命名m_wndToolBar2.SetWindowText(_T("我的工具栏"));此时程序运行如下图:三、浮动我的工具栏在以前CToolBar的时候,浮动工具栏可以使用FloatControlBar()函数。
VC MFC中使用工具栏控件详解
VC MFC工具栏(CToolBar)控件工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。
CButton类的Create成员函数可以创建一个按钮控件,这个函数的格式如下:BOOL CButton::Create(LPCTSTR lpszCaption,//按钮显示的文本DWORD dwStyle,//按钮样式const RECT& rect,//按钮控件显示的区域(大小)相对于父窗口CWnd* pParentWnd,//按钮的父窗口(按钮属于哪个窗口)UINT nID//指明按钮控件ID号);这个函数的第二个参数dwStyle是按钮控件的样式,也就是在可视化添加按钮控件时,右击按钮控件,选择属性,之后会弹出一个对话框,这个对话框有一个样式的选项,该参数即对应这个样式。
好了,了解了上面这些我们就来动态创建一个按钮吧,首先在对应话类里添加一个按钮类成员变量CButtonm_Button;然后在对话框编辑区里给对话框添加一个按钮控件(单击这个按钮创建按钮控件),然后添加这个按钮控件单击消息处理函数,并在函数添加以下语句:RECT ButtonRect;//按钮控件显示的区域(大小)相对于父窗口ButtonRect.left=10;ButtonRect.top=10;ButtonRect.right=80;ButtonRect.bottom=30;m_Button.Create("动态创建",WS_CHILD,ButtonRect,this,1115);m_Button.ShowWindow(SW_SHOW);//显示按钮控件知道了怎样动态创建按钮控件,我们就来创建工具栏控件。
VS2010中CDockablePane停靠框
VS2008中对于MFC的MDI程序界面做了增强,支持很炫的的布局效果,之前还在说不能用CDialogBar类,现在完全可以使用 CDockablePane类替代了,现在只需要新建一个继承自CDockablePane的新类,就可以在其上添加各种控件了,如组合框、对话框等,现在尝试添加一个对话框。
新建一个MFC的多文档程序,如在Wizard中选择标准的MFC MDI新建一个想放入悬浮框的对话框资源IDD_DIALOG_DOCKDLG,Style设为Child,Border设为None,建议把默认添加的OK和 Cancel去掉,因为一般情况下点击这两个按钮后,对话框会销毁,而这里是不需要销毁的(如果没去掉点击了,悬浮框中的对话框内容就不能用了),如下添加一个按钮IDC_BUTTON_TEST。
然后为对话框添加类CTestDlg,如下为按钮添加响应voidCTestDlg::OnBnClickedButtonTest(){// TODO: Add your control notification handler code here MessageBox(_T("Hello World!"));}添加继承自CDockablePane的类CMyPane,如下添加此类的WM_CREATE和WM_SIZE响应,并添加上面对话框的成员变量CTestDlgm_TestDlg;在CMyPane::OnCreate和CMyPane::OnSize函数中添加代码,如下intCMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CDockablePane::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code here CRectrectDummy;rectDummy.SetRectEmpty();// 创建选项卡窗口:if (!m_TestDlg.Create(IDD_DIALOG_DOCKDLG,this)){TRACE0("未能创建输出选项卡窗口/n");return -1; // 未能创建}m_TestDlg.ShowWindow(SW_SHOW);return 0;}voidCMyPane::OnSize(UINT nType, int cx, int cy){CDockablePane::OnSize(nType, cx, cy);// TODO: Add your message handler code here// 选项卡控件应覆盖整个工作区m_TestDlg.SetWindowPos (this, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);m_TestDlg.ShowWindow(SW_SHOW);}然后在MainFrame.h代码中添加成员变量CMyPanem_MyPane;在CMainFrame::OnCreate函数中添加代码if (!m_wndStatusBar.Create(this)){TRACE0("Failed to create status bar\n");return -1; // fail to create}m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));if (!m_MyPane.Create(_T("MyPane"), this, CRect(0, 0, 100, 100), TRUE, IDD_DIALOG_DOCKDLG,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)){TRACE0("未能创建输出窗口/n");return FALSE;}m_MyPane.EnableDocking(CBRS_ALIGN_ANY);// TODO: Delete these five lines if you don't want the toolbar and menubar to be dockablem_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockPane(&m_wndMenuBar);DockPane(&m_wndToolBar);DockPane(&m_MyPane); // 调整m_MyPane的大小使之适合父窗口运行程序,如下点击按钮,弹出Message对话框MyPane悬浮框可以悬浮在各个位置,具体见最上面的图片。
vs2010修改toolbar图标方法
使用VS2010的CMFCToolbar实现真彩色工具栏一步:准备图片不知道大家是如何制作工具栏图片的,我使用的方法是,使用Photoshop将几个32×32的图标横向排成一排,图标之间不需要留间隙,确保背景是透明的,然后保存成png文件。
为了让VS能够把该图片做为资源导入,需要转为bmp文件:用画图程序打开png文件,另存为24位位图文件。
最后,把bmp文件拷贝到项目的res文件夹中,接下来就可以导入资源了,这里假设导入的资源ID为IDB_BITMAP1(这也是默认的图片资源ID),因为下面会用到。
第二步:修改工具栏按钮大小这个最简单,只需要选中按钮,在属性栏中输入需要的尺寸即可,尺寸要与图标大小相同,这里是32×32。
然后根据需要创建按钮、设置按钮的ID。
(附:工具栏上会一直有一个按钮,你修改它,就又会跑出来一个新的,这也就是创建按钮的操作;删除按钮的方法是:将按钮拖离工具栏,用Delete键不管用,Delete只是删除了按钮上的图像;插入分隔符的方法也很简单:横向右拖动按钮一定距离,就会插入分隔符,反方向再拖一下,就删除分隔符了)第三步:创建工具栏创建代码在MainFrame.h头文件中找到CMFCToolBar m_wndToolBar;//如果没有主动添加在MainFrame.cpp的OnCreate函数中找到下面的代码: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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))将其改为: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_MAINFRAME_256, 0, 0, TRUE, 0, 0, IDB_BITMAP1))看是否有这两句话m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); DockPane(&m_wndToolBar);。
VS2010和MFC编程入门之37(工具栏:工具栏的创建、停靠与使用)
VS2010MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)工具栏资源及CToolBar类,这里继续讲解工具栏的相关知识,主要内容包括工具栏的创建、停靠与使用。
工具栏的使用前面曾提到过,一般情况下工具栏中的按钮在菜单栏中都有对应的菜单项,两者实现的功能相同,要想实现这种效果,只需要将工具栏按钮的ID与对应的菜单栏中菜单项的ID设置为相同值即可。
在实际使用工具栏时,除了前面讲的资源编辑外,其他使用与菜单类似。
例如,对COMMAND消息和UPDATE_COMMAND_UI消息,可以像VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)中的菜单应用实例那样为工具栏按钮添加消息处理函数。
如果工具栏按钮对应的菜单项已经添加了消息处理函数,那么就不必再为它添加了,因为它的ID与菜单项相同,所以会调用同样的消息处理函数。
这样点击工具栏按钮与点击相应菜单项执行相同的功能,在菜单项为选中、激活或禁用等状态时,工具栏按钮会有一样的状态。
工具栏的创建大家在第三十四讲创建的Example34工程的CMainFrame类中看到,它创建工具栏所使用的类并不是常用的CToolBar类,而是CMFCToolBar类。
CMFCToolBar类是自VS2008以来MFC提供的类,它与CToolBar类有些类似,但功能更丰富。
这里要注意,CMFCToolBar类与CToolBar类并没有任何派生关系。
鸡啄米这里就以CMFCToolBar类来讲讲工具栏的创建步骤:1. 创建工具栏资源。
2. 构造CMFCToolBar类的对象。
3. 调用CMFCToolBar类的Create或CreateEx成员函数创建工具栏。
4. 调用LoadToolBar成员函数加载工具栏资源。
大家可以对应着看看Example34的CMainFrame类自动生成的代码中创建工具栏的过程。
工具栏IDR_MAINFRAME的资源已经自动创建好。
MFC ToolBar动态真彩工具栏(含实例附件)
MFC ToolBar动态真彩工具栏CObject└CCmdTarget└CWnd类CToolBar的对象是带有一行位图按钮和可选分隔线的控件条。
这些按钮可以像普通按钮、核选按钮或单选按钮那样动作。
CToolBar对象通常是由CFrameWnd 或CMDIFrameWnd派生的框架窗口对象的嵌入成员。
CToolBar::GetToolBarCtrl是MFC4.0后新增加的成员函数,它允许你利用Windows通用控件对工具条的定制及其它性能的支持。
CToolBar的成员函数为你提供了Windows通用控件的大多数性能;但是,当你调用GetToolBarCtrl时,你可以使你的工具条具有更多Windows 95工具条的特征。
参见CToolBarCtrl 可以获得更多有关如何使用Windows通用控件来设计工具条的信息。
更多有关通用控件的一般信息,参见“Windows 95 SDK程序员参考”中的“通用控件”。
Visual C++提供了两种创建一个工具条的方法。
要使用资源编辑器(ResourceEditor创建一个工具条,应遵循下面的步骤:方法一:1. 创建一个工具条资源。
2. 构造CToolBar对象。
3. 调用Create(或CreateEx函数来创建Windows工具条并将它与该CToolBar对象连接。
4. 调用LoadToolBar来装入工具条资源。
[2.1] 先添加工具栏(IDR_TOOLBAR1资源,并画好各个按钮。
[2.2] 在CDlgMenuToolbarDlg类声名中添加成员变量CToolBar m_wndtoolbar;[2.3] 在CDlgMenuToolbarDlg::OnInitDialog( 中添加如下代码//添加一个平面工具条if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBL E | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,CRect(4,4,0,0 || !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1{TRACE0( "failed to create toolbar\n ";return FALSE;}m_wndtoolbar.ShowWindow(SW_SHOW;RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0;方法二:1. 构造CToolBar对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VS2010中CMFCToolBar的用法
自从VS2008中增加了一些特性的菜单,但这些特性在帮助中说明的很少,给使用者造成了很多麻烦。
笔者经过搜索以及自己的摸索,对其的用法有了初步了解,形成本文,如果能够为后来者解决一些问题,笔者将会感到欣慰。
一、向导自动生成的CMFCToolBar
由于应用了系统风格,向导生成的菜单确实很漂亮。
如下图:
但在某些情况下(至于哪些情况,笔者还不能确定),向导自动生成的菜单会没有名字,在“工具栏和停靠窗口”的子菜单下会显示空。
如下图:
出现这种情况的解决办法就是自己给工具栏命个名称。
在CMainFrame::OnCreate()事件中给工具栏命名:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
……
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
m_wndToolBar.SetWi ndowText(_T(“工具栏”)); //这是自己添加的
……
return 0;
}
二、自己添加一条工具栏
自己添加的工具栏如果按照向导生成的样子去做,在菜单中是不会显示出来的,虽然工具栏已经生成了。
如下图:
要想让菜单在“工具栏和停靠窗口”中显示,是不能完全按照向导生成的样子做的。
需要模仿向导生成的样子做但仍有点变化。
(1)创建自已的工具栏
在头文件中定义一个工具栏变量。
CMFCToolBar m_wndToolBar2;
在CMainFrame::OnCreate()事件中创建并加载工具栏:
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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 :
IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
//自己创建的工具栏
if (!m_wndToolBar2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC,CRect(1,1,1,1),theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 +1:
IDR_MAINFRAME+1) ||
!m_wndToolBar2.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 :
IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
(2)自己的工具栏浮动或停靠窗口
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY);//自己创建的工具栏
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
DockPane(&m_wndToolBar2);//自己创建的工具栏
这时候再运行程序会显示如下图:
(3)给自己的工具栏命名
m_wndToolBar2.SetWindowText(_T("我的工具栏"));
此时程序运行如下图:
三、浮动我的工具栏
在以前CToolBar的时候,浮动工具栏可以使用FloatControlBar()函数。
但在CMFCToolBar却不能这么用,需要使用CMFCToolBar::FloatPane()函数。
、m_wndToolBar2.FloatPane(CRect(80,150,130,200));
四、显示或隐藏我的工具栏
在CToolBar的时候,显示或隐藏工具栏可以使用ShowControlBar()函数,但在
CMFCToolBar时需要使用CMFCToolBar::ShowPane()函数。
thi s->ShowPane(&m_wndToolBar2,FALSE,FALSE,TRUE);
thi s->ShowPane(&m_wndToolBar2,TRUE,FALSE,TRUE);
或者
m_wndToolBar2.ShowPane(FALSE,FALSE,TRUE);
m_wndToolBar2.ShowPane(TRUE,FALSE,TRUE);
五、余下的问题
如何使工具栏能够成为两行或者多行,也可以说如何使工具栏成为两列或者多列,笔者还不知道。
如果哪位牛人知道,请告诉笔者。
e-mail:luoshupeng#
qq:909908999。