首页
学习
活动
专区
工具
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可视化界面_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
  • MFC常用的类详细介绍

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

    1.2K50

    VC++6.0入门——第三讲 认识MFC框架

    引出VC++6.0入门——认识MFC框架第三讲 MFC框架本章将剖析基于MFC的框架程序,探讨MFC框架程序的内部组织结构。...利用这些类,可以有效地帮助程序员完成Windows应用程序的开发。新建项目在这个程序中,我们自己没有编写任何代码,就生成了一个带有标题栏,具有最小化框、最大化框,具有系统菜单和一个可调边框的应用程序。...这个程序和我们在第1章中所创建的程序类似,但比后者多了菜单栏、工具栏以及状态栏。这一切都是通过MFC AppWizard生成的。...该窗口中,标题栏和菜单都位于非客户区,而工具栏位于它的客户区(关于窗口的客户区和非客户区的内容将在下一章讲解)。...我们程序中的按钮是在主框架窗口的客户区出现的,并且其位置由CRect(0,0,100,100)参数指定,说明其左上角就是其父窗口客户区的(0,0)点,因此,该按钮就在程序的菜单下、工具栏上显示出来了。

    32710

    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.3K30

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

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

    1.5K30

    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

    Calculator

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

    1.1K30

    游戏编程之三 DirectX SDK简介

    例如,升级的COM对象提供附加的接口,而非现有接口的修改版。QueryInterface()函数可以用来确定旧的接口,以决定新的接口是否被支持。...现在程序员就可以利用MFC库的好处而不必担心他们的应用程序的代码大小了。 最后,MFC是唯一真正有用的类库。...单击向左箭头右边的窗口块并拖动它会使屏幕输出快速更新到应用程序屏幕输出的任意位置。 菜单条 一个可选择的菜单条可以显示在标题条的下方。通过菜单条来选择菜单和子菜单。...用户区 通常用户区占据了窗口最大的部分。这是应用程序的基本输出区域。应当由应用程序来复杂管理用户区。另外,应用程序可以输出到用户区。...特别地,一个对象意味这数据和数据的功能。菜单、标题条、控制块以及滚动条等都是图形对象的例子。下一部分描述一些影响应用程序外观的新的图形对象。

    15800

    游戏编程之二 windows编程基础

    用户区 通常用户区占据了窗口最大的部分。这是应用程序的基本输出区域。应当由应用程序来复杂管理用户区。另外,应用程序可以输出到用户区。...特别地,一个对象意味这数据和数据的功能。菜单、标题条、控制块以及滚动条等都是图形对象的例子。下一部分描述一些影响应用程序外观的新的图形对象。...现在程序员就可以利用MFC库的好处而不必担心他们的应用程序的代码大小了。 最后,MFC是唯一真正有用的类库。...用户区 通常用户区占据了窗口最大的部分。这是应用程序的基本输出区域。应当由应用程序来复杂管理用户区。另外,应用程序可以输出到用户区。...特别地,一个对象意味这数据和数据的功能。菜单、标题条、控制块以及滚动条等都是图形对象的例子。下一部分描述一些影响应用程序外观的新的图形对象。

    7110

    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 Aspire 添加到现有应用:前端 JavaScript 项目处理

    本文介绍如何将 .NET Aspire 添加到现有应用的前端项目中,以便于在现有项目中使用 .NET Aspire 的功能。...NET Aspire 通过以下五个主要方面实现这一目标:.NET Aspire 仪表板、应用程序业务流程、组件、服务发现和部署。每个部分都可以独立集成到现有应用程序中,或在新项目启动时整体采用。...本文将以 Vue.js 项目为例介绍如何将 .NET Aspire 添加到现有应用的前端项目中。 2....项目右键菜单中选择添加->.NET Aspire 业务流程协调程序支持...: 添加.NET Aspire 支持 然后按照向导操作即可,一般不需要修改内容: 处理向导 在处理完成后,我们可以看到解决方案中增加了...总结 通过本文的介绍,我们了解了如何将 .NET Aspire 添加到现有应用的前端项目中,以便于在现有项目中使用 .NET Aspire 的功能。

    10210

    Qt教程一

    Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理...Qt 和 MFC 读者经常将 MFC 和 Qt 进行对比,MFC 只能应用在 Windows 平台,而 Qt 是跨平台的,一次编写,到处运行。...另外,Qt 已经封装了底层细节,学习 Qt 将会非常简单;而 MFC 只是给 Windows API 加了一层包装,不了解 Windows API 也学不好 MFC,大家普遍反映 MFC 难学。...我们不能简单地说 Qt 好还是 MFC 好,两者都有用武之地;但是初学者学习 Qt 会比较简单,不用应付那些烦人的 Windows API,很快就能开发出带有漂亮界面的应用程序。...#请参考不推荐使用的API的文档,以了解如何将您的代码移植远离它。 DEFINES += QT_DEPRECATED_WARNINGS #如果使用过时的API,您还可以使代码无法编译。

    8810

    VC++6.0入门——第六讲 菜单编程

    现有的方法主要是从一个句子中提取文本信息来表示图像,文本表示对生成图像的质量影响很大。然而,在一句话中直接利用有限的信息会遗漏一些关键的属性描述,而这些属性描述是准确描述图像的关键因素。...大多数 Windows应用程序都提供了菜单,作为用户与应用程序之间交互的一种途径。本章主要讲解与菜单相关的编程知识。...这是MFC AppWizard为Menu这个单文档程序自动创建的一个主菜单。双击这个菜单资源名称,即可在VC++开发界面的右边窗格中打开菜单编辑器。如图所示。...命令消息来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND形式呈现。在MFC中,通过菜单项的标识(D)来区分不同的命令消息:在SDK中,通过消息的 wParam参数识别。...命令更新模式如果用索引可能会出现问题,最好采用id号设置右键弹出菜单功能添加方式方式一:通过 工程---增加到工程--- , 进行添加方式二:自己手动添加显示位置捕获鼠标右键点击事件位置不对的原因是:

    10630

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

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

    26320

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

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

    2K21
    领券