问题标签 [cmfcpropertypage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
137 浏览

visual-studio-2017 - 在 VS2017 中使用 CMFCPropertyPage

我可以使用 VS 2017 IDE 创建一个 Dialog 资源,然后我去添加一个类:

添加类

我想选择CMFCPropertyPage,但它没有显示。那么只选择CPropertyPage然后手动更改它可以吗?

我很困惑,因为它在这里表明我可以选择课程:

http://www.functionx.com/visualc/dialogboxes/mfcpspp.htm

请指教。谢谢。

0 投票
1 回答
78 浏览

html-help - 如何处理 CMFCPropertySheet / CMFCPropertyPage 上的帮助按钮?

根据 MSDN:

CPropertySheet 中的帮助仅受 F1 键和帮助按钮支持。默认情况下,帮助按钮出现在应用程序框架中。无需用户干预。当用户在属性表中添加每个页面的帮助信息时,帮助机制会在单击帮助按钮时自动显示该页面的帮助信息。

我认为对于CMFCPropertySheet. 所以我首先开始尝试处理处理WM_HELPINFO程序:

没用。然后我添加了一个IDHELP按钮点击处理程序:

没用。

那么当用户按下工作表上的帮助按钮时,我应该如何显示正确的帮助主题?使困惑。

更新

我在工作表和页面上都试过这个 - 不起作用:

0 投票
1 回答
228 浏览

c++ - 如何从自定义对话框工具栏属性页中隐藏 CMFCToolBar?

我正在开发包含功能区和一些工具栏的 Mfc 应用程序。我制作了一个 CMFCToolBar 虚拟对象来存储功能区选项卡中的所有图标并稍后使用它。

我已经从 UI 中隐藏了虚拟工具栏。但无法从自定义对话框工具栏属性页中隐藏。 图片(无标题栏是虚拟工具栏)

我不希望用户在属性页中看到虚拟工具栏。为此,我还制作了 CMFCToolBarsCustomizeDialog 扩展并继承了 ShowToolBar 函数,但它不起作用。

代码:

0 投票
1 回答
140 浏览

c++ - 如何在 CPropertySheet 中定义新颜色?

我正在尝试在 CPropertySheet(mfc 库)的某些区域中定义新颜色。我尝试过的是重载OnCtlColor并定义新的背景颜色。这种方法效果很好,但它不会给我想要的区域着色。

在下一张图片中,您可以看到我的方法得到了什么。

控件的图像

在此图像中,您可以看到 4 个彩色区域:

  1. 红色:我可以使用着色的区域OnCtlColor
  2. 深灰色和黑色:我可以使用OnCtlColor 对象 CPropertyPage 着色的区域
  3. 浅灰色(用蓝色箭头表示):我要着色的区域
  4. 白边:我也想着色的区域。

我不知道如何使用这个库或使用任何可定制的对象为所有区域着色。任何帮助将不胜感激。

谢谢!

更新 1

在阿德里安的回答之后,它看起来像这样

但是,仍有一个区域我们无法着色。

回答

在尝试很多组合之前,我已经完成了接下来的两个对象,这让我可以定义我需要的颜色。你可以找到后面的所有源代码。这段代码的结果可以在这张图片中查看

属性页

标题

cpp

属性表

标题

cpp

0 投票
0 回答
60 浏览

mfc - 在 VS2017 中使用类向导创建链接到 Dialog 的 CMFCPropertyPage 类?

我添加了一个新的资源对话框IDD_PROPPAGE_LARGE,为其分配了一个新的 ID、标题等。现在我通过右键单击资源编辑器中的对话框启动类向导 - 添加类。它具有Add MFC Class,我选择基类CMFCPropertyPage并输入我的类名,为 .h 和 .cpp 文件采用默认值,保留具有正确 ID 的对话框 ID 集。

它创建 .cpp/.h 文件。我进去了,没有指向 ID 的链接(它创建了一个从 派生的简单类CMFCPropertyPage,但构造函数甚至没有调用它)。更重要的是,我进入类向导为 DDX/DDV 分配各个字段,但没有列出任何内容。

我究竟做错了什么?

蒂亚!!

0 投票
1 回答
212 浏览

visual-c++ - 有条件地阻止 CPropertySheet 从页面 OnOK 按钮处理程序关闭

我刚刚遇到了一个问题CPropertyPage

我一直在尝试使用OnOK处理程序进行一些验证:

问题是,工作表仍然关闭。我曾希望阻止它CMFCPropertyPage::OnOK会停止关闭工作表。但事实并非如此。

我从这里了解到,工作表 OnOK正在EndDialog(IDOK)打电话。但我不想让我的工作表复杂化。测试在此页面中。所以我需要一个是让工作表知道当用户单击“确定”按钮时它是否应该关闭。

0 投票
1 回答
45 浏览

visual-studio-2017 - 即使头文件到位,SetLook 的 MFC MDI 问题

我已经实现了一个属性表和几个从 MainFrame.cpp 的主菜单调用的属性页,这些属性页是从我的问题在这里产生的:

MFC MDI 设计用户首选项对话框 GUI 布局功能

我登陆的代码是:

产量:

设置表/页面工作

我已包含在 MainFrame.h

属性表CMFCPropertySheet同时在.cpp&中使用.h,如其.h文件中所示:

所以这里的问题是什么,你可以看到我不得不注释掉,SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);因为我得到一个错误,说SetLookidentifier not found C3861

如果我将鼠标悬停在 IDE 中MainForm.h并右键单击该#include <afxpropertysheet.h>文件,则会在 IDE 中直接打开,如果我搜索SetLook它,肯定可以在public函数部分找到它。

因此,我已经看到了多个使用它的代码示例,SetLook并且我查看的其中一个教程使用了它,并且在我使用 VS2017 时它运行良好。

我意识到什么是“未找到”,但我不知道为什么这里会出现问题。这是我现在遇到的唯一错误,我想使用该功能。

对这里可能发生的事情的想法?

更新:

按照 Dxiv 的建议,我将代码更改为:

SettingsSheet.SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);

它现在可以编译并运行,但有一些奇怪的结果,它只显示一个属性页,其余的都是 AWOL。

选项卡不见了!

0 投票
0 回答
50 浏览

c++ - MFC MDI 属性页单选按钮在功能 1 的一个页面上工作,功能 2 的另一页面上的按钮不触发

继续我的对话框设置属性表/页面对话框,我有 5 个页面中的 4 个在工作。在 MFC 中,他们提供了一种名为 的简洁风格方法ApplicationLook,在我的一个属性页面上,我将单选按钮全部设置为该函数中 case 值的值,并且它按预期工作。我已经复制了ApplicationLook我的其他属性页的开关功能并更改了值,该属性页将控制所tabs提供的样式。具有选项卡的属性页遵循提供的选项卡样式的枚举。

就像使用ON_COMMAND_RANGE一样ApplicationLook,单选按钮应该进入选项卡功能......但它永远不会......就像没有人在家一样。但是,我创建了两个MenuItems用于测试的调用tab1tab2它们具有相同的案例标识符,并且它们都可以工作并进入选项卡功能。属性表的单选按钮具有相同的案例标识符,但它从不触发函数。我查看了任何地方是否ApplicationLook有任何 DDX 或 DDV 控件,我很幸运,ApplicationLook但没有,所以这似乎不是问题。

为了测试,函数条目上唯一应该发生的事情是在输出窗口中写入一个测试字符串,显示它进入了这种情况,然后写入注册表设置值......基本上是一个骨架函数,只是为了验证单选按钮操作...这就是为什么要问这个问题。

这很奇怪,因为menuitemradiobuttonID 相同,它们都应该触发该功能……但这不会发生。由于我逐字复制了功能元素,这让我很难过。这两个功能都存在MainFrame.cpp

资源.h

我已将该功能缩减为 2 种情况,默认情况下仅用于测试。

主框架.cpp

设置对话框选项卡视图

tabs对话框页面中,3d StyleFlat设置为函数集的前两个案例值:

正如我上面提到的,下图显示了tabs设置为相同大小写值的两个,STYLE_3D_USER并按STYLE_FLAT_SHARED_HORZ_SCROLL_USER预期触发函数:

正确驱动功能的选项卡菜单

它确实告诉我(我认为)我的消息范围映射工作正常。我只是无法弄清楚为什么单选按钮设置为菜单项的确切 ID 值不会触发该功能。作为一个注释,我展示了我使用过的完全相同的方法,ApplicationLook这就是为什么我对选项卡式视图做了同样的事情,因为我知道它以一种方式工作......激发tab视图(我无法开始工作)。

ApplicationLook 以同样的方式做,确实有效

如果我能弄清楚为什么这不起作用,我“几乎”在那里。有什么想法可能是错的吗?

0 投票
1 回答
23 浏览

visual-c++ - 我们如何自己在属性页中直接运行 OnPsnHelp 事件(或调用它)?

我一直在通过我的应用程序添加OnHelpInfo消息处理程序。这不是因为我的应用程序将支持上下文帮助。相反,我想拦截 F1 键,然后简单地调用现有的“帮助”代码,当按下对话框按钮或菜单项时触发该代码。例子:

我的问题是属性页。他们使用不同的机制来处理帮助主题的显示。例子:

它使用PSN_HELP处理程序。当我添加OnHelpInfo到属性页面时,我现在不确定如何简单地运行该OnPsnHelp事件。我试图避免有两个我打电话的地方DisplayHelpTopic

我们如何直接调用OnPsnHelp(就像我调用帮助按钮单击处理函数)或通过消息调用它?


这是样板代码:

所以我不明白。如果我使用SendMessage(WM_COMMAND, ID_HELP);软件中的响应是一个弹窗Failed to launch help