MFC SDI程序,可停靠窗口嵌入对话框,对话框的初始化怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC SDI程序,可停靠窗口嵌入对话框,对话框的初始化怎么做相关的知识,希望对你有一定的参考价值。

创建了一个SDI程序,生成了一个可停靠窗口,在可停靠窗口上嵌入了一个对话框资源(基类为CDialog),在添加的对话框类中重载了OnInitialDialog(),在里面添加了初始化程序(对对话框上的控件初始化,例如combo box初始化或改变颜色等),但是运行程序发现,对话框上的控件并没有得到初始化。。。急急急急急急,,,,,,,,,,,,求大大们给醍醐灌顶,在线等呀。。。。。。。。怎样初始化对话框上的控件呀

参考技术A

从你的问题描述上看你 的OnInitialDialog函数没有重写成功。


重载是不可以的,你得重写。


说下重写的步骤,你对照下;

1、在对话框类的头文件里添加声明语句

virtual BOOL OnInitDialog();

这里要注意:OnInitDialog是一个虚函数


2、在对话框类的cpp文件里,进行定义:

BOOL CXXXDlg::OnInitDialog()

     //  这句很关键,千万不能少
     CDialog::OnInitDialog();
     
     // 下面写你的控件初始化,就可以了
     ......
     
     return TRUE;

追问

我就是这样写的呀,而且在OninitialDialog里只写一句messagebox运行是可以的,能够看到弹出消息,这是程序框架没有出来,只是弹出一个消息,点击确定后,才出现程序框架

追答

那是你的控件初始化的设置有问题。

参考技术B 我也遇到了这个问题,请问楼主解决没?

MFC SDI 和对话框

【中文标题】MFC SDI 和对话框【英文标题】:MFC SDI and Dialog Boxes 【发布时间】:2014-08-06 05:02:01 【问题描述】:

我想创建一个具有 5 个 SDI 格式的对话框类型窗口的应用程序。我需要对话框选项卡,以便用户可以单击不同的对话框窗口选项卡。此外,我不能同时显示任何两个对话框。

使用项目向导,我选择了一个 SDI 应用程序并创建了 5 个对话框。我使用 InitDialog 来最大化每个窗口。

不幸的是,只显示活动的对话窗口。我看不到选项卡式样式的其他四个窗口。

我做错了什么?

【问题讨论】:

也许你可以使用 CPropertySheet。或者带有 CFormView 的 SDI,以及里面的 Tab 控件。 【参考方案1】:

如果您需要一次显示多个对话框,请使用 CDialog::Create 创建一个非模态对话框。

当您从“窗口选项卡”中谈论时,请查看 CPropertySheet 和 CPropertyPage。 CPropertySheet 也可以使用 CPropertySheet::Create 非模态创建。

【讨论】:

以上是关于MFC SDI程序,可停靠窗口嵌入对话框,对话框的初始化怎么做的主要内容,如果未能解决你的问题,请参考以下文章

需要向旧版 MFC 对话框应用程序添加锚定/停靠

在 SDI mfc 应用程序中从视图访问模式对话框

MFC FormView+ CDHtmlDialog

MFC中CDialog 的OnKeyDown()为啥不好使?

如何在 SDI 中使用 MFC CListCtrl

MFC SDI中 如何为动态创建的按钮添加消息处理函数