首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将功能区菜单添加到现有MFC应用程序?

要将功能区菜单添加到现有的MFC应用程序,请按照以下步骤操作:

  1. 在Visual Studio中打开现有的MFC应用程序项目。
  2. 在主框架窗口中,右键单击并选择“添加类”。
  3. 在“添加类”对话框中,选择“MFC类”模板,然后单击“添加”。
  4. 在“MFC类向导”中,选择“CMFCRibbonBar”类,并确保“在主框架窗口中启用功能区栏”选项已选中。
  5. 单击“完成”以添加功能区栏类。
  6. 在主框架窗口的消息映射中,添加以下代码以处理WM_CREATE消息:
代码语言:cpp
复制
ON_MESSAGE(WM_CREATE, OnCreate)
  1. 在主框架窗口的实现文件中,添加以下代码以处理WM_CREATE消息:
代码语言:cpp
复制
LRESULT CMainFrame::OnCreate(WPARAM wParam, LPARAM lParam)
{
    LRESULT lResult = CMDIFrameWndEx::OnCreate(wParam, lParam);

    if (!m_wndRibbonBar.Create(this))
    {
        return -1;
    }

    return lResult;
}
  1. 在主框架窗口的实现文件中,添加以下代码以初始化功能区栏:
代码语言:cpp
复制
void CMainFrame::InitializeRibbon()
{
    CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(_T("File"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);

    // 在此处添加功能区面板和按钮
}
  1. 在主框架窗口的实现文件中,添加以下代码以在功能区栏中添加面板和按钮:
代码语言:cpp
复制
void CMainFrame::InitializeRibbon()
{
    CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(_T("File"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);

    // 添加“新建”按钮
    CMFCRibbonButton* pNewButton = new CMFCRibbonButton(ID_FILE_NEW, _T("New"), 0, 0);
    pMainPanel->Add(pNewButton);

    // 添加“打开”按钮
    CMFCRibbonButton* pOpenButton = new CMFCRibbonButton(ID_FILE_OPEN, _T("Open"), 1, 1);
    pMainPanel->Add(pOpenButton);

    // 添加“保存”按钮
    CMFCRibbonButton* pSaveButton = new CMFCRibbonButton(ID_FILE_SAVE, _T("Save"), 2, 2);
    pMainPanel->Add(pSaveButton);

    // 添加其他面板和按钮
}
  1. 在主框架窗口的实现文件中,添加以下代码以在功能区栏中添加其他面板和按钮:
代码语言:cpp
复制
void CMainFrame::InitializeRibbon()
{
    CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(_T("File"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);

    // 添加“新建”按钮
    CMFCRibbonButton* pNewButton = new CMFCRibbonButton(ID_FILE_NEW, _T("New"), 0, 0);
    pMainPanel->Add(pNewButton);

    // 添加“打开”按钮
    CMFCRibbonButton* pOpenButton = new CMFCRibbonButton(ID_FILE_OPEN, _T("Open"), 1, 1);
    pMainPanel->Add(pOpenButton);

    // 添加“保存”按钮
    CMFCRibbonButton* pSaveButton = new CMFCRibbonButton(ID_FILE_SAVE, _T("Save"), 2, 2);
    pMainPanel->Add(pSaveButton);

    // 添加其他面板和按钮
    CMFCRibbonCategory* pCategory = m_wndRibbonBar.AddCategory(_T("Edit"), IDB_RIBBON_EDIT_SMALL, IDB_RIBBON_EDIT_LARGE);

    CMFCRibbonPanel* pEditPanel = pCategory->AddPanel(_T("Editing"));

    // 添加“剪切”按钮
    CMFCRibbonButton* pCutButton = new CMFCRibbonButton(ID_EDIT_CUT, _T("Cut"), 0, 0);
    pEditPanel->Add(pCutButton);

    // 添加“复制”按钮
    CMFCRibbonButton* pCopyButton = new CMFCRibbonButton(ID_EDIT_COPY, _T("Copy"), 1, 1);
    pEditPanel->Add(pCopyButton);

    // 添加“粘贴”按钮
    CMFCRibbonButton* pPasteButton = new CMFCRibbonButton(ID_EDIT_PASTE, _T("Paste"), 2, 2);
    pEditPanel->Add(pPasteButton);
}
  1. 在主框架窗口的实现文件中,添加以下代码以在功能区栏中添加其他面板和按钮:
代码语言:cpp
复制

void CMainFrame::InitializeRibbon

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MFC拓展库】上海道宁与BCGSOFT合作为您带来专业的Micrisoft Windows开发业务组件

功能、可自定义工具栏、菜单等)和一组丰富的专业设计的Microsoft Office和Microsoft Visual Studio类应用程GUI控件,例如图表、日历、网格、编辑器、甘特图等主要产品功能...01、Microsoft Office 风格的功能栏“功能”控件是Microsoft在Office 2007中引入的。...功能控件将传统的工具栏和菜单替换为选项卡式组(类别)。每个选项卡在逻辑上分为面板,每个面板可能包含各种控件和命令按钮。此外,Ribbon控件提供了利用可用空间的智能布局。...04、视觉主题该库为应用程序组件提供Microsoft Office 2013外观。这是一个完全换肤的界面,可以应用于各种控件集,例如功能菜单、工具栏、停靠窗格等。...功能背景图像支持05、可定制的工具栏和菜单Library提供了一种强大而简单的工具栏/菜单自定义机制,类似于Microsoft Office和Visual Studio。

5.6K20

MFC常用的类详细介绍

CObject类 MFC的CObject类为程序员提供了对象诊断、运行时类型标识和序列化等功能。...要创建一个支持序列化的派生类,必须将DECLARE_SERIAL宏添加到类定义中,将IMPLEMENT_SERIAL添加到类的实现文件中。...功能如下: (1)消息发送:MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。...在MFC应用程序中有且仅有一个CWinApp派生类的对象,代表程序运行的主线程,代表应用程序本身。 CWnd类 由CCmdTarget类直接派生,是MFC中最基本的GUI对象。...其对象是一个框架窗口,包括边界、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。 其常用成员函数: GetActiveDocument():得到当前文档的指针。

1.2K50
  • mfc可视化界面_mfc界面开发

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v32.2正式发布!...新版本改进的功能和框架标题命令搜索、带有可选复选框的网格日期选择器、带有标签的功能滑块等,需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.2正式版下载...由于搜索框现在可以位于框架上,因此您可以为non-Ribbon-based的应用程序启用它(启用框架标题栏的基于工具栏/菜单应用程序)。...对于这种应用程序,框架会扫描所有工具栏和菜单栏以寻找最佳匹配,并在下拉菜单中显示搜索结果。...工具栏和菜单 1. 改进了某些可视化主题中禁用的组合框外观。 2.

    3.7K20

    c++界面开发工具_visual c++界面设计教程

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v30.2正式发布!...此版本包含新的Office 2019样式可视化主题、改进了Shell控件以及其他一些新功能和改进!本文将为大家介绍v30.2中发布的新功能!让您对BCG最新发布的版本有一个全新的认识和了解。...内容在应用程序外部更改时,将向该控件通知该控件,并且控件将自动更新。...CBCGPMenuBar:实现右对齐的菜单栏项目,以下新方法已添加到此类: AddItemToRight:在菜单栏右侧添加一个项目 RemoveAllItemsOnRight:删除所有右对齐的菜单栏项目...CBCGPPlannerViewSchedule:实现在时间表视图中显示/隐藏持续时间栏的功能,EnableDurationBar和IsDurationBarEnabled方法已添加到此类。

    2.2K30

    VC2008中如何为MFC应用程序添加和删除消息响应函数

    最近重温《MFC Windows应用程序设计》第二版这本书,里面的代码全部是使用VC6.0写的,我Win7下安装的是VS2008开发环境。        ...一、VC2008中自动添加消息响应函数       举一个《MFC Windows应用程序设计》的MFC单文档应用程序的例子,如下:        例4-9  设计一个利用CClientDC绘图,在窗口单击鼠标左键之后...,在窗口的用户出现一个菱形的应用程序。        ...(1)  在MFC AppWizard中创建一个名称为MFCexp4_9的单文档应用程序。        (2)  在视图类的OnLButtonDown()函数中输入如下代码。...手动删除消息响应函数需要删掉三个地方,以删除菜单响应函数为例时包括以下三个部分:             1、头文件中的定义,如afx_msg void OnDialogModel();

    1.9K20

    visual C++ 项目和解决方案的区别

    我们可以在现有的解决方案中添加任意种类的项目,但通常只添加与该解决方案内现有项目相关的项目。一般来说,各个项目都应该有自己的解决方案,除非我们有很好的理由不这样做。...Intellisense是在Editor窗口中输入代码时提供自动完成和提示功能的工具。 扩展名为.opensdf的文件,记录着关于项目状态的信息,此文件只在项目处于打开状态时才有。...4.资源文件 一般我们使用MFC生成窗口程序都会有对话框、图标、菜单等资源,应用程序向导会生成资源相关文件:res目录、HelloWorld.rc文件和Resource.h文件。...HelloWorld.rc:包含默认菜单定义、字符串表和加速键表,指定了默认的About对话框和应用程序默认图标文件等。 Resource.h:含有各种资源的ID定义。...这些库都是基于C++的,其封装了底层的API,似的我们可以不必每次去使用繁杂的API来实现我们想要的功能。当然你也可以使用C++去封装这些API,让自己成为一个库作者,方便他人。

    1.4K30

    Calculator

    ,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。...bilibili MFC教程 一、Calculator V1.0 当前完成的最初版本的计算器,能够进行整数的四则运算,输入有基本的纠错功能(比如无法连续输入两个加号++),但输入错误的括号形式时计算会出错...在应用程序类型选项,我们需要选择应用程序类型-应用程序类型:基于对话框、用户界面功能-主框架样式:最小化框,其他选项默认即可,点击完成进行创建。...打开属性菜单,我们同样需要记住这个文本框的ID;双击文本框,也会跳转到该文本框对应的代码。...(3)菜单 由于第一个版本的计算器只创建了一个菜单,没有在菜单上实现什么功能,所以暂时先介绍菜单的创建与编辑。

    1.1K30

    WINDOWS核心编程--Windows程序内部运行机制

    第四个参数:lParam LPARAM类型 WPARAM类型 根据不同的消息 代表不同的意思:例如 当收到 WM_SIZE 消息时候 lParam - 客户的大小。...LOWORD(底位) - 客户的宽度。 HIWORD(高位) - 客户的高度。...要在 VC++ 开发环境中向应用程序传递参数,可以单击菜单 【 Project 】→【 Settings 】,选择“ Debug ” 选项卡,在“ Program arguments ”编辑框中输入你想传递给应用程序的参数...--分派一个消息到窗口过程 分派一个消息到窗口过程 实际上是将消息回传给操作系统 LRESULT DispatchMessage( CONST MSG *lpMsg ); PeekMessage 函数功能...静态库版本命名规范: 库&描述 NAFXCWD.LIB 调试版本:MFC静态连接库 NAFXCW.LIB 发行版本:MFC静态连接库 UAFXCWD.LIB 调试版本:具有Unicode支持的MFC

    1.5K50

    如何在.NET电子表格应用程序中创建流程图

    将形状添加到电子表格流程图 将样式应用到形状 分组流程图形状 在 .NET WinForms 应用程序中保存并显示流程图 1.设置.NET WinForms 项目 打开Visual Studio软件,...连接完之后的样式: 6.将样式应用到形状 此步骤介绍如何应用样式主题以及如何将自定义样式应用于形状。用户可以使用“形状格式”选项卡的“形状样式”部分自定义形状的背景颜色和轮廓颜色。...Spread 的设计器支持使用上下文菜单和/或工具栏的“组对象”按钮将形状分组在一起。...在 Designer 的工具栏上,导航至“文件”菜单,选择“应用”和“退出”以应用所有更改,然后退出 Spread Designer。用户可以重新打开设计器并对流程图进行更改。...最终还可以将应用程序中创建的 .NET 流程图导出为 Excel (.XLSX) 文件,或使用 Spread Designer 的导入和导出功能导入现有的 Excel 文件流程图。

    25420

    钩子原理及实例:实现键盘钩子截获密码

    钩子原理及实例:利用鼠标键盘钩子截获密码 钩子原理 钩子能截获系统并得理发送给其它应用程序的消息,能完成一般程序无法完成的功能。...而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。...Windows 消息提供了应用程序应用程序之间、应用程序与Windows 系统之间进行通讯的手段。应用程序要实现的功能由消息来触发,并靠对消息的响应和处理来完成。...如下图; 钩子实际上是一个处理消息的程序段,通过系统调用(安装钩子),把它挂入系统(添加到钩子链表)。...WH_MOUSE 鼠标钩子 11、WH_MOUSE_LL 底层鼠标钩子 12、WH_SHELL 外壳钩子 13、WH_MSGFILTER 和WH_SYSMSGFILTER 使我们可以监视菜单

    2K21

    牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    MVC模式 提高篇:WIN32、MFC与Linux 一: WIN32 1. Win32应用程序的基本类型. 2. 创建win32窗口程序的几个步骤,及使用到的函数。...创建菜单、设置菜单的函数,在哪处理菜单命令的消息。 18. 加速键如何使用? 19. GDI绘图对象,使用的步骤,及函数。 20. 使用位图的步骤及用到的主要函数。 21....试比较互斥量和临界。 二:MFC 1. MFC包含哪几类程序? 其中MFC应用程序又包含哪几类? 2. MFC的中的大多数类都继承自哪个类? 3. MFC主要要用到哪几个类?...MFC中有哪6类核心机制?Cobject中封装了哪些机制? 5. 在哪个类的什么函数中进行MFC程序初始化? 相当于main功能的函数。 6. MFC应用程序的启动机制的实现。...MFC的消息分类。自注册消息用什么函数进行注册?消息映射宏是什么? 10. MFC菜单、工具栏、状态栏所用的类是什么? 11. 怎么定义一个视图窗口? 12. 划分窗口使用什么类?

    2.4K41

    使用强大的第三方串口类 CSerialPort

    组件的效果很差(一次接收一个缓冲的数据,没办法像写嵌入式程序那样单字节就能触发中断接收那样),所以进行了一些研究,发现了一个 第三方串口类 很强大,效果非常好。...应用程序,我在这里是 SerialPortTest ,画的界面如下: ?...) Step2 添加第三方类 将 SerialPort.h 和 SerialPort.cpp 两个文件复制到工程所在的文件夹中,而且添加到工程里,并在MFC生成的对话框类的头文件中包含 #include...类加入一个 Public 的成员变量 m_Com : CSerialPort m_Com;//串口类 在对对话框的 “打开串口” 的 CButton 控件添加 单击消息处理函数 在里面实现打开和关闭串口的功能...下面是我搜集到的解决方法,屡试不爽(基本用 方案1) 方案1: 改变项目配置属性 一种解决方案是改变基本运行时检查(changing the runtime checks in project settings):在菜单

    3.6K10

    VC6.0基础知识使用小结

    这段时间在使用MFC做媒体播放器项目,查询了不少资料,用到的技术主要有ADO、多线程、DirectShow、MFC相关控件包括ActiveX控件(Windows Media Player、Active...1、VC获取一个菜单的状态,并打钩 做记事本的时候,遇到这么个问题,就是:如何获取菜单项当前是否被选中(打勾),如果选中,点击菜单后取消选中,如果未选中,点击菜单后选中,具体实现代码如下: void...//加载菜单  CMenu menu;  menu.LoadMenu(IDR_MENU1);  SetMenu(&menu); 4、MFC中各种指针的获取   VC中编程对于刚刚开始学习的同学...首先一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于在非本类中操作和使用本类中的 功能。  ...   CMenu   *pMenu=m_pMainWnd->GetMenu(); 9) 在任何类中获得应用程序类        用MFC全局函数AfxGetApp()获得。

    1.3K20

    【Windows编程】系列第六篇:创建Toolbar与Statusbar

    上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮。...比如典型的windows应用程序的上面是菜单栏,从菜单栏我们可以选择应用程序提供的各种功能,但是有的功能比较常用,且不能放在第一级菜单,需要进入二级、三级甚至更多的菜单才能选择。...Statusbar主要用于显示应用程序的运行状态,统计信息,操作信息等提示作用,一般是只读状态。典型的状态栏放在窗口的最下面,比如下面就是我正在使用的Word应用程序的状态栏: ?...我们这次要一起学习的就是使用纯Windows API函数创建基本的状态栏和菜单栏。如果属性MFC的朋友知道,如果用MFC来做工具栏和菜单栏很简单。...状态栏一共有三个面板,后面两个在创建时静态赋字符串,第一个则实时捕获鼠标在客户中的坐标位置并显示出来。

    2.1K41
    领券