关于子对话框的问题,CDialog:Create的对话框怎么样初始化
在网上下载了一个向导对话框,但是发现创建对话框后,子对话框不能够被初始化。子对话框的构造函数没有被调用,OnInitDialog() 、OnCreate(LPCREATESTRUCT lpCreateStruct)、
Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
没有一个被调用的,怎么样初始化子对话框中的控件?
创建函数的原型如下:
void CWizard::AddPage(UINT nID)
{
struct PAGELINK* pTemp=pPageLink;
//插入新生成的结点
struct PAGELINK* pNewPage=new struct PAGELINK;
pNewPage->pDialog=new CDialog;
ASSERT(pNewPage->pDialog->Create(nID,this));
// Is window created
ASSERT(::IsWindow(pNewPage->pDialog->m_hWnd));
// 检查每页的样式
DWORD dwStyle = pNewPage->pDialog->GetStyle();
ASSERT((dwStyle & WS_CHILD) != 0); //子窗体
ASSERT((dwStyle & WS_BORDER) == 0); //无边界
//显示
pNewPage->pDialog->ShowWindow(SW_HIDE);
pNewPage->pDialog->MoveWindow(rectPage);
/*pNewPage->pDialog->SetWindowPos(&CWnd::wndTop,
rectPage.left,rectPage.top,
rectPage.Width(),rectPage.Height(),
SWP_NOMOVE);*/
pNewPage->Next=NULL;
pNewPage->nNum=++nPageCount; //计数器加1
if (pTemp)
{
while (pTemp->Next) pTemp=pTemp->Next; //移动链表末尾
pTemp->Next=pNewPage;
}
else
pPageLink=pNewPage; //若是第一个接点
}
Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
没有一个被调用的,怎么样初始化子对话框中的控件?
创建函数的原型如下:
void CWizard::AddPage(UINT nID)
{
struct PAGELINK* pTemp=pPageLink;
//插入新生成的结点
struct PAGELINK* pNewPage=new struct PAGELINK;
pNewPage->pDialog=new CDialog;
ASSERT(pNewPage->pDialog->Create(nID,this));
// Is window created
ASSERT(::IsWindow(pNewPage->pDialog->m_hWnd));
// 检查每页的样式
DWORD dwStyle = pNewPage->pDialog->GetStyle();
ASSERT((dwStyle & WS_CHILD) != 0); //子窗体
ASSERT((dwStyle & WS_BORDER) == 0); //无边界
//显示
pNewPage->pDialog->ShowWindow(SW_HIDE);
pNewPage->pDialog->MoveWindow(rectPage);
/*pNewPage->pDialog->SetWindowPos(&CWnd::wndTop,
rectPage.left,rectPage.top,
rectPage.Width(),rectPage.Height(),
SWP_NOMOVE);*/
pNewPage->Next=NULL;
pNewPage->nNum=++nPageCount; //计数器加1
if (pTemp)
{
while (pTemp->Next) pTemp=pTemp->Next; //移动链表末尾
pTemp->Next=pNewPage;
}
else
pPageLink=pNewPage; //若是第一个接点
}
...全文
相关推荐
MFC实现嵌入式对话框,显示子对话框到主对话框中的对应位置
- 在主对话框的构造函数中初始化子对话框对象,`m_InnerDialog.Create(NULL, this);`3.
MFC中树形控件的使用及子对话框响应事件
然后在对应的函数中,我们可以获取被选中的节点并进行后续操作,例如打开子对话框:```cppvoid CMyDialog::OnSelchangedTreeCtrl(NMHDR* pNMHDR, LRESULT
如何在父对话框中插入子对话框
**编写子对话框类**:为子对话框创建一个新的C++类,继承自CDialog。
MFC的CDialog中嵌入滚动CDialog
**在主对话框中嵌入子对话框**:在主对话框类(假设为CParentDlg)中,创建一个CScrollableDlg对象的实例,并在OnCreate()或OnInitDialog()中调用其Create
本人博客mfc总结三到六的源码(使用ChartCtrl绘制曲线、添加menu菜单、添加子对话框、文件与文件夹)
“添加子对话框”是另一个关键点。MFC中,对话框通常由CDialog派生的类表示。为了添加子对话框,你需要创建一个继承自CDialog的子类,并在对话框资源中定义它的布局。


界面
