MFC 功能包类菜单上的图标

2023-11-27

新的 MFC 功能(功能包)中菜单出现在三个位置:

  • 在菜单栏中(MFC MenuBar)
  • 在弹出菜单中 (CMFCPopupMenu)
  • 在 CMFCButton 的“下拉菜单”版本中

我想将图标(高颜色且透明)放在所有菜单中。我找到了 CFrameWndEx::OnDrawMenuImage() ,我可以用它来自定义绘制菜单栏项目前面的图标。这不是很方便,2008年必须实现图标绘制,但它可以工作。对于其他人我还没有找到解决方案。有没有一种自动设置菜单图标的方法?


这就是我让它工作的方式:

First

正如其他人所说,在主工具栏旁边创建一个不可见的工具栏(我使用基于 AppWizard 名称的常用名称):

MainFrm.h:
class CMainFrame
{
    //...    
    CMFCToolBar m_wndToolBar;
    CMFCToolBar m_wndInvisibleToolBar;
    //...
};

MainFrm.cpp:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    //...

    // Normal, visible toolbar
    if(m_wndToolBar.Create(this,
        TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
    {
        VERIFY( m_wndToolBar.LoadToolBar(
            theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME) );

        // Only the docking makes the toolbar visible
        m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
        DockPane(&m_wndToolBar);
    }

    // Invisible toolbar; simply calling Create(this) seems to be enough
    if(m_wndInvisibleToolBar.Create(this))
    {
        // Just load, no docking and stuff
        VERIFY( m_wndInvisibleToolBar.LoadToolBar(IDR_OTHERTOOLBAR) );
    }
}

第二:图像和工具栏资源

IDR_MAINFRAME and IDR_MAINFRAME_256由AppWizard生成。前者是丑陋的16色版本,后者是有趣的高色版本。
尽管它的名字如此,如果我没记错的话,即使是 AppWizard 生成的图像也具有 24 位颜色深度。最酷的事情是:只需将其替换为 32 位图像即可。

有个看不见的工具栏IDR_OTHERTOOLBAR:我用资源编辑器创建了一个工具栏。只是一些虚拟图标和命令 ID。然后 VS 生成了一个位图,我用我的高颜色版本替换了它。完毕!

Note

不要使用资源编辑器打开工具栏:它可能必须先将其转换为 4 位,然后才能对其执行任何操作。乃至if你让它这样做(因为,在 Visual Studio 的背后,你将再次用高彩色图像替换结果,哈!),我发现它(有时?)根本无法编辑工具栏。很奇怪。
在这种情况下,我建议直接编辑 .rc 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC 功能包类菜单上的图标 的相关文章

  • 具有透明背景的CWnd

    我想创建一个基于 CWnd 的类 它将引入具有透明背景的控件 只要内容是静态的 创建一个控件并用透明背景绘制其内容对我来说没什么大不了的 问题是当我想创建一个内容不断变化的控件时 这是因为我不知道如何用父背景删除控件的内容 一般情况下可能不
  • MFC:如何捕获Web浏览器控件中的链接单击事件?

    我有一个带有 Web 控件的 MFC 应用程序 单击可单击链接时 它将使用 IE 打开 而不是默认浏览器 问题 有没有办法强制使用默认浏览器打开它 如果没有 我如何捕获链接单击事件 以便稍后可以操纵单击事件 谢谢 不 据我所知还没有 查看有
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • 如何找到激活时打开给定 HMENU 的菜单项(如果有)?

    我想用原型实现一个功能 Locates the menu item of the application which caused the given menu mnu to show up return true if the given
  • 如何调整 CWnd 内 WPF 控件的大小?

    我正在托管 WPFUserControlMFC 内部CWnd 它工作得很好 我现在需要弄清楚如何与其父控件一起调整控件的大小 我已经迷上了OnSize我正在打电话GetWindowRect并将结果设置为我的控件 如下所示 void CChi
  • 在Linux上运行MFC程序

    我有一个相当大的基于 MFC 的程序 我的任务是让它在 Linux 上运行 我已经解释过 这需要将程序重新编写为带有 STL 的直接 C 更多工作 或者重新编写为 Qt C 更少工作 现在我被告知 我需要编写包装器以使每个 MFC 类在 L
  • 如何在VC++/MFC中替换字符串中两个子字符串之间的字符串?

    假设我有一个 CString 对象 strMain AAAABBCCCCCCDDBBCCCCCCCCDDDAA 我还有两个较小的字符串 例如 strSmall1 BB strSmall2 DD 现在 我想替换 strMain 中 strSm
  • 您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用吗?

    您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用来更改应用程序的外观吗 如果是这样 它是如何完成的 这个想法是使用随 MSVC 2008 发布的 MFC 功能包来更改控件 例如按钮 的形状 颜色等 不 不能这样做
  • _CrtDumpMemoryLeaks( ) == 1 在第一行代码上?

    我正在开发一个 MFC Visual C 项目 据我了解MSDN http msdn microsoft com en us library d41t22sb 28v VS 100 29 aspx CrtDumpMemoryLeaks 应该
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • 如何在 MFC 中创建带圆角的进度控件?

    我需要在 MFC 应用程序中创建一个带圆角的进度条 我尝试过使用 CreateRoundRectRgn 和 SetWindowRgn 的组合 它具有使控件完全消失的效果 我还尝试使用透明的 GIF 覆盖层 该覆盖层将绘制在进度栏的顶部 但我
  • 从模态 MFC 表单获取输入信息

    我已经创建了表格CPreparationDlg具有Edit Control 然后我创建了创建模态表单的应用程序 在按 确定 后 我需要将编辑控件中输入的文本读入主程序的变量中 最好的方法是什么 class CPreparationApp p
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft
  • 更改 GLUT 调用以与 MFC/C++ 一起使用

    我有一个使用 GLUT 进行 OpenGL 渲染的程序 现在我需要它位于 MFC 项目内部 以便它可以与另一个程序组件一起使用 我已经按照这个教程进行操作 http www codeguru com cpp g m opengl openf
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 通过 MFC 对话框中的代码更改 Tab 顺序

    我在 OnInitDialog 中通过代码创建了一个控件 但我找不到任何方法通过代码更改对话框的选项卡顺序 有人知道如何做到这一点吗 First Option use ctrl d on resource view in visual st
  • 如何获取通过网络驱动器访问的文件的 UNC 路径?

    我正在 VC 中开发一个应用程序 其中网络驱动器用于访问文件 驱动器由用户手动分配 然后在应用程序中选择驱动器 这会导致驱动器并不总是映射到相同的服务器 我该如何获取此类文件的 UNC 路径 这主要是为了识别目的 这是我用来将普通路径转换为

随机推荐

  • 导入错误:没有名为 numpy 的模块

    我正在尝试运行一个需要安装 Numpy 的程序 我想是的 因为如果我尝试sudo apt get install python numpy它告诉我 sudo apt get install python numpy Reading pack
  • 从 HTTP 重定向到 HTTPS - IIS 7.5

    我已经在我的应用程序上实现了 https 现在我正在尝试使 IIS 将所有 http 请求重定向到 https 以便用户甚至不会注意到此更改 我已经更改并尝试了一些 IIS 选项 但没有成功 我怎样才能做到这一点 我正在使用 IIS 7 5
  • C# ASP.NetParameters.AddWithValue 拒绝参数的空值

    我正在使用存储过程填充表 该表允许名称的中间首字母为 null 但我收到以下错误消息 过程或函数 uspInsertPersonalAccountApplication 需要参数 MiddleInitial 但未提供该参数 提前致谢 pub
  • 检查 UIScrollView 是否到达顶部或底部

    有没有办法知道是否UIScrollView已经到达顶部还是底部 可能在方法中 void scrollViewDidEndDragging UIScrollView scrollView willDecelerate BOOL deceler
  • R - 使用 x 和 y 数据绘制幂律线

    我正在尝试绘制幂律线来拟合数据框中已有的 x 和 y 数据 我已经在 igraph 库中尝试过 power law fit 但它不起作用 数据框是 dat data frame x 1 8 ygm c 251 288 167 739 112
  • 检测ajax调用,ASP.net

    如何在 ASP net 应用程序的服务器端检测请求是否是 AJAX 请求 来自 jQuery 我不想这样做 mypage aspx this is ajax true ex get mypage aspx 在服务器端 当请求是 ajax 请
  • 在 PHP 中使用 ' 代替撇号(')

    我尝试将文本转换为 utf8 或从 utf8 转换 但这似乎没有帮助 我越来越 It s Getting the Best of Me 它应该是 It s Getting the Best of Me 我从以下位置获取这些数据这个网址 要转
  • 在新的 matlab 版本上运行旧的 mex 文件

    我正在尝试在新版本 R2009a 上运行最初在 Matlab 6 5 上测试的程序 该程序使用一些 mex 文件 在尝试运行它时出现以下错误 无效的 MEX 文件 normalizedCut common files sparsifyc m
  • Android:导航到父活动重新创建父活动

    我有一个 SearchActivity 它有一个子 PersonActivity 每个都是 FragmentActivity 的 这是我的清单文件
  • Android 3.2 从操作栏中删除标题

    我正在使用 eclipse android 3 2 以及运行 android x86 的虚拟机 v3 2 我使用 Holo 主题 我想删除操作栏标题和图标 所以我这样做 Override public void onCreate Bundl
  • Facebook 在首次分享时忽略了 OG 图片

    我正在开发一个 WordPress 网站 并使用 yoast seo 插件在动态页面上生成 og 图像 不过 我认为这与此无关 og 图像链接显示完美 但如果我单击共享按钮 则不会包含任何图像 除非我之前已经单击过共享按钮 或者首先使用 f
  • Rails 中的资产/图像没有路由匹配

    在导轨上工作时 图像不可见并给出错误 Started GET assets home png for 127 0 0 1 at 2012 06 19 12 23 24 0530 Served asset home png 404 Not F
  • ASAN 检测到与动态加载库共享的类 vtable 的 ODR 违规

    我正在开发一个项目 它有一个 util 库 其中包含日志记录 断言处理等内容 它被编译成静态库 fPIC添加 我还有一个插件系统 其中插件是在运行时加载的共享库dlopen 这些插件和主要可执行文件都使用静态 util 库 问题 现在我得到
  • “无法找到模块‘jquery’” - 使用 Gulp 在 browserify 中处理 JQuery 和 AngularJS 的全局变量

    我一直在尝试创建一个利用AngularJS Browserify and Gulp以获得出色的开发人员体验 即生成可分发的 模块 用 Angular 的说法 这个想法是有一个自我记录的项目 比如Angular Bootstrap 这还会生成
  • 传递一个函数作为参数,然后在jquery函数中执行它

    我想知道用 jQuery 实现这个简单 也许是愚蠢 的事情的方法是什么 我有一个这样的函数 function setSomething make some stuff 然后是另一个像这样的函数 generalFunction par1 pa
  • TFS Sprint 项目打印插件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有谁知道 TFS 是否有一个插件 可以以适合在 Scrum Board 上使用的格式打印我们的 sprint backlog 项目 而不是我们必须手
  • 获取相机当前图片文件夹

    我的应用程序中有一个小型 FileExplorer 我希望他在当前由默认相机使用的文件夹中启动 有办法得到这条路吗 我尝试过 Environment getExternalStoragePublicDirectory Environment
  • Delphi 2010 中返回泛型接口的泛型方法

    鉴于下面的代码是实际代码的一个非常精简的版本 我收到以下错误 DCC 错误 Unit3 pas 31 E2010 不兼容的类型 IXList FindAll S gt 和 TXList FindAll S gt 在 FindAll 函数中
  • 以编程方式获取布局的高度和宽度

    我设计了一个布局 其中LinearLayout有 2 个孩子LinearLayout and FrameLayout我对每个孩子都提出了不同的看法 我只是想测量高度和宽度FrameLayout这样我就可以达到我的目的 在程序中我正在使用 i
  • MFC 功能包类菜单上的图标

    新的 MFC 功能 功能包 中菜单出现在三个位置 在菜单栏中 MFC MenuBar 在弹出菜单中 CMFCPopupMenu 在 CMFCButton 的 下拉菜单 版本中 我想将图标 高颜色且透明 放在所有菜单中 我找到了 CFrame