问题标签 [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.
c++ - OnInitDialog 未在 CDialog 的后代中调用
我有一个派生自 CDialog (CNotificationDialog) 的类,它是在选择“添加类”选项时由 Visual Studio 自动生成的。
我还有另一个派生自 CNotificationDialog (CWebNotificationDialog) 的类。
我的代码是这样的:
显示对话框,但未调用 CWebNotificationDialog::OnInitDialog 方法。仅调用 CNotificationDialog::OnInitDialog 方法。
在你问之前,是的,它被宣布为虚拟的。我还尝试添加 DECLARE_DYNAMIC、BEGIN_MESSAGE_MAP 和所有其他自动生成的宏,但没有成功。
我究竟做错了什么?
这就是 CNotificationDialog::OnInitDialog 的样子。
它是这样声明的:
c++ - CDialog 类的父子实现
场景:我想在孩子中使用 Parent 方法。是否可以创建具有两个对话框类的解决方案,如下所示?
mfc - MFC:单击了窗口关闭按钮;窗口对象没有被破坏
我有一个应用程序,其中有很多窗口,每个窗口都有一个不同的CDialog
派生类。
我的应用程序多年来一直运行良好,delete this
但PostNcDestroy()
现在我环顾四周,我没有看到任何正确或需要的证据。摆脱我的CDialog
子类对象的正确方法是什么?
c++ - MFC:一个窗口上的 X 按钮也在关闭第二个窗口
我的应用程序有几个窗口,每个窗口都有一个不同的CDialog
派生类。
点击窗口框架右上角的“X”按钮关闭窗口并调用PostNcDestroy
.
但是,对于四个窗口中的一个,它还PostNcDestroy
额外调用另一个窗口的 () 并使该窗口也变得不可见。
有任何想法吗?
mfc - Enter 键不会触发 IDOK 默认按钮操作
我有一个 CDialog 派生类。它的界面定义后面有几个图片框和一些按钮,在资源文件中定义为:
当我初始化表单时,按下 Enter 键不会触发与 IDOK 按钮关联的操作,因为 IDC_ALL 按钮已聚焦并且 Enter 会执行其操作,这是不可取的。
在其初始化例程中,
我尝试了一切将焦点放在 IDOK 按钮上,但没有成功。以至于厌倦了交替注释和取消注释我添加的行:
我离得越近,就是使用这条线
这做了一件非常奇怪的事情:它在两个按钮上绘制了一个焦点矩形,如图所示:
但 Enter 键尚未触发默认按钮!
我什至尝试添加一个 OnOK 方法
还没有成功!
再做一个实验:我在类的消息映射中添加了一个条目:
还是不成功!
我怎样才能设法让 Enter 键执行 IDOK 按钮的操作?
c++ - MFC VS2010 无法通过向导添加 CDialogEx 派生类
在我的 MFC 项目中,我尝试创建对话框。所以在资源视图中插入对话框。然后在对话框内双击,得到对话框类。当我输入类名并选择基类:CDialogEx 时,MFC 添加类向导运行。单击完成按钮,向导关闭,没有其他反应。未创建任何文件 (cpp, h)。
你能告诉我有什么问题吗?
作为解决方法,我创建了手动文件 .cpp 和 .h,其中从 CDialogEx 派生类,它显示正确,并且我可以使用它(正确处理消息)但是我还有其他问题,例如将变量添加到控件。
mfc - MFC:来自 CPropertyPage 的 CDialog
我有 CPropertySheet,其中包含多个 CPropertyPage 作为选项卡。在其中一个 CPropertyPage 中,我有一个按钮,单击该按钮会启动一个 CDialog。我试图让 CPropertyPage 的控件在 CDialog 类方法中调用 GetParent() 方法,但不知何故我没有得到正确的父窗口,当我尝试访问 CPropertypage 的成员时,它会引发访问冲突异常。
以下是我使用的代码:
同样的事情曾经在 Visual Studio 2008 中工作,但是当我搬到 Visual Studio 2013 时,它抛出了异常。
mfc - CDialog子窗口
我只是想在一个很好的基于 MFC 对话框的应用程序中使用 2 个更多可移动对话框作为子项。在解决方案向导之后,我创建了一个默认对话框资源(子样式)并在主对话框的 OnInitDialog 中创建了 2 个对话框:
现在,它们都出现了,但是当我将它们移动到客户端区域的重绘时不会发生。如果我重叠两个 Windows,并在系统栏中选择后面的一个并开始移动它,则客户端区域仍然有未更新的区域,因此它们显示第二个重叠对话框的内容。
我试图覆盖 OnPaint 并使那里的矩形无效,但是由于两个对话框属于同一类,因此两个对话框都获取 OnPaint 并且都更新了完整的客户端区域,因此发生了很多闪烁。
我尝试使用 ON_WM_ACTIVATE() 或 ON_WM_SETFOCUS() 使客户区无效一次,但根本没有调用这些事件。
那么,制作一个可移动的子对话框的正确方法是什么,一旦你拖动它,它就会很好地更新客户区域,在选择后处于前台?
非常感谢您的帮助
斯特凡