如何在 MFC C++ 中实例化相同的对话框?
Posted
技术标签:
【中文标题】如何在 MFC C++ 中实例化相同的对话框?【英文标题】:How to instanciate same dialog in MFC C++? 【发布时间】:2012-07-25 18:05:25 【问题描述】:我想构建一个 MFC 对话框,在其中添加一个简单的TabControl
。我希望我的标签页是相同 CDialog
的实例,但具有一些不同的参数(例如显示哪些按钮)。
我正在使用 Visual Studio 2008。
我对 C++ 比较陌生,但我看到每个组件(CButton、CDialog)都有自己的 ID(这是静态的,所以我理论上不能实例化同一个组件两次)。
我想知道如何做这样的事情:
for (index = 0 to tabNumber)
name = "TAB"+index;
tabCtrl.add(new CustomDialog(name, i));
【问题讨论】:
实际上创建同一个对话框可以根据需要多次。控件 ID 始终参考父对话框窗口,因此没有冲突。 【参考方案1】:您必须在创建项目时提供不同的 TabID。
OnInitDialog()
m_cTab.Init();
m_cTab.InsertItem(0,"Register new user");//tabID=0
m_cTab.InsertItem(1,"Identify");// TabID=1
//注册新用户 m_cTab.CreateButton("加载图片",23,TabID=0, 0, m_cTab.RightOf(22)+15, m_cTab.TopOf(19),60); //确认 m_cTab.CreateButton("注册用户",24,TabID=1,P_LEFT,0, m_cTab.TopOf(20) ,60);
【讨论】:
以上是关于如何在 MFC C++ 中实例化相同的对话框?的主要内容,如果未能解决你的问题,请参考以下文章
从非托管 C++ mfc active x dll 启动 C# 对话框