将 UI 插入另一个 MFC 对话框
Posted
技术标签:
【中文标题】将 UI 插入另一个 MFC 对话框【英文标题】:Insert an UI into another MFC Dialog 【发布时间】:2011-05-26 18:53:22 【问题描述】:我有一个 MFC 应用程序 (exe),在其主 UI 中包含两个窗格。此应用程序加载另一个也包含一个对话框的 DLL。如何以编程方式将定义的 Dialog 放入 DLL 中,并将其放入(内)MFC 应用程序的窗格中?问题不是如何以编程方式从 DLL 中检索对话框,而是如何将此对话框放在属于应用程序的一个 UI 窗格的“顶部”(内部、内部)?
我的目标是使用从 dll 中检索到的对话框自定义应用程序的 UI,并让用户感觉这些对话框都属于一个应用程序 UI。感谢您的任何提示。
【问题讨论】:
【参考方案1】:我有一些具有此功能的应用程序,通常带有用于在窗口之间切换的选项卡控件。
首先,我在容器窗口中设置了一个对用户不可见的框架。框架只是对话框窗口所在位置的占位符。
然后我将对话窗口的实例作为容器类中的全局变量,我将对话窗口创建为无模式窗口(使用Create()
,而不是DoModal()
),将窗口移动到相同的@987654323框架控件的@,并调用ShowWindow()
显示窗口。
【讨论】:
【参考方案2】:我是否正确理解您不希望对话框显示为对话框,而是显示为另一个窗口的内容或窗格?
也就是说,你想去掉对话框的标题栏,把对话框的内容嵌入到另一个窗口中,对吗?
这是可能的。您需要创建没有标题栏的对话框(更改窗口样式),并确保将对话框的窗口创建为您希望内容所在窗口的子窗口。我可以进一步解释这一点,但我首先想知道我是否正确理解了你。
【讨论】:
谢谢。是的,这就是我想做的。我猜使用 SetParent 设置父/子? WS_CHILDWINDOW 是关键。我认为 SetParent 不足以解决问题。您需要使用 CreateWindowEx() 创建窗口并确保将第三个参数设置为包含 WS_CHILDWINDOW。参数4和5可用于窗口的位置,参数6设置父级。以上是关于将 UI 插入另一个 MFC 对话框的主要内容,如果未能解决你的问题,请参考以下文章
在另一个对话框将数据插入 DB 后刷新 DataGridView