问题标签 [cdialog]

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 投票
2 回答
3192 浏览

c++ - OnInitDialog 未在 CDialog 的后代中调用

我有一个派生自 CDialog (CNotificationDialog) 的类,它是在选择“添加类”选项时由 Visual Studio 自动生成的。

我还有另一个派生自 CNotificationDialog (CWebNotificationDialog) 的类。

我的代码是这样的:

显示对话框,但未调用 CWebNotificationDialog::OnInitDialog 方法。仅调用 CNotificationDialog::OnInitDialog 方法。

在你问之前,是的,它被宣布为虚拟的。我还尝试添加 DECLARE_DYNAMIC、BEGIN_MESSAGE_MAP 和所有其他自动生成的宏,但没有成功。

我究竟做错了什么?

这就是 CNotificationDialog::OnInitDialog 的样子。

它是这样声明的:

0 投票
1 回答
245 浏览

c++ - CDialog 类的父子实现

场景:我想在孩子中使用 Parent 方法。是否可以创建具有两个对话框类的解决方案,如下所示?

0 投票
1 回答
90 浏览

mfc - MFC:单击了窗口关闭按钮;窗口对象没有被破坏

我有一个应用程序,其中有很多窗口,每个窗口都有一个不同的CDialog派生类。

我的应用程序多年来一直运行良好,delete thisPostNcDestroy()现在我环顾四周,我没有看到任何正确或需要的证据。摆脱我的CDialog子类对象的正确方法是什么?

0 投票
2 回答
264 浏览

c++ - MFC:一个窗口上的 X 按钮也在关闭第二个窗口

我的应用程序有几个窗口,每个窗口都有一个不同的CDialog派生类。

点击窗口框架右上角的“X”按钮关闭窗口并调用PostNcDestroy.

但是,对于四个窗口中的一个,它还PostNcDestroy额外调用另一个窗口的 () 并使该窗口也变得不可见。

有任何想法吗?

0 投票
1 回答
613 浏览

mfc - Enter 键不会触发 IDOK 默认按钮操作

我有一个 CDialog 派生类。它的界面定义后面有几个图片框和一些按钮,在资源文件中定义为:

当我初始化表单时,按下 Enter 键不会触发与 IDOK 按钮关联的操作,因为 IDC_ALL 按钮已聚焦并且 Enter 会执行其操作,这是不可取的。

在其初始化例程中,

我尝试了一切将焦点放在 IDOK 按钮上,但没有成功。以至于厌倦了交替注释和取消注释我添加的行:

我离得越近,就是使用这条线

这做了一件非常奇怪的事情:它在两个按钮上绘制了一个焦点矩形,如图所示:

带有 2 个焦点按钮的对话框!

但 Enter 键尚未触发默认按钮!

我什至尝试添加一个 OnOK 方法

还没有成功!

再做一个实验:我在类的消息映射中添加了一个条目:

还是不成功!

我怎样才能设法让 Enter 键执行 IDOK 按钮的操作?

0 投票
0 回答
403 浏览

c++ - MFC VS2010 无法通过向导添加 CDialogEx 派生类

在我的 MFC 项目中,我尝试创建对话框。所以在资源视图中插入对话框。然后在对话框内双击,得到对话框类。当我输入类名并选择基类:CDialogEx 时,MFC 添加类向导运行。单击完成按钮,向导关闭,没有其他反应。未创建任何文件 (cpp, h)。

你能告诉我有什么问题吗?

作为解决方法,我创建了手动文件 .cpp 和 .h,其中从 CDialogEx 派生类,它显示正确,并且我可以使用它(正确处理消息)但是我还有其他问题,例如将变量添加到控件。

0 投票
0 回答
407 浏览

mfc - MFC:来自 CPropertyPage 的 CDialog

我有 CPropertySheet,其中包含多个 CPropertyPage 作为选项卡。在其中一个 CPropertyPage 中,我有一个按钮,单击该按钮会启动一个 CDialog。我试图让 CPropertyPage 的控件在 CDialog 类方法中调用 GetParent() 方法,但不知何故我没有得到正确的父窗口,当我尝试访问 CPropertypage 的成员时,它会引发访问冲突异常。

以下是我使用的代码:

同样的事情曾经在 Visual Studio 2008 中工作,但是当我搬到 Visual Studio 2013 时,它抛出了异常。

0 投票
1 回答
232 浏览

string - SetDlgItemText 用垃圾填充编辑字段

0 投票
0 回答
232 浏览

c++ - 有没有办法为 MFC CDialog 缩放单选按钮或复选框?

我们根据当前的“缩放”字体大小缩放对话框中的控件。适用于文本、编辑控件、组框。

但是,物理单选按钮圆圈和复选框方块都是相同/原始的“100%”大小。

示例 100%/225%/65% 比例

除了编写我们自己的控件之外,有没有办法缩放标准单选按钮或复选框图形?

0 投票
0 回答
358 浏览

mfc - CDialog子窗口

我只是想在一个很好的基于 MFC 对话框的应用程序中使用 2 个更多可移动对话框作为子项。在解决方案向导之后,我创建了一个默认对话框资源(子样式)并在主对话框的 OnInitDialog 中创建了 2 个对话框:

现在,它们都出现了,但是当我将它们移动到客户端区域的重绘时不会发生。如果我重叠两个 Windows,并在系统栏中选择后面的一个并开始移动它,则客户端区域仍然有未更新的区域,因此它们显示第二个重叠对话框的内容。

我试图覆盖 OnPaint 并使那里的矩形无效,但是由于两个对话框属于同一类,因此两个对话框都获取 OnPaint 并且都更新了完整的客户端区域,因此发生了很多闪烁。

我尝试使用 ON_WM_ACTIVATE() 或 ON_WM_SETFOCUS() 使客户区无效一次,但根本没有调用这些事件。

那么,制作一个可移动的子对话框的正确方法是什么,一旦你拖动它,它就会很好地更新客户区域,在选择后处于前台?

非常感谢您的帮助

斯特凡