MFC-- 遇到致命的死亡钻石
MFC - encountering deadly diamond of death
windows 编程新手。
我想制作一个同时使用 CPropertyPage
和 CDHtmlDialog
的对话框?
class CPropertyPage : public CDialog
class CDHtmlDialog : public CDialog
由于我无法将上述每种情况的继承更改为 "virtual public",是否仍然可以制作一个对话框,其中包含来自 CPropertyPage
的某些字段和来自 [=] 的某些表单12=]?
您可以创建 HTML 对话框作为 属性 页面的子对话框。唯一的问题是如果用户按下取消,子对话框将关闭。您必须覆盖 CDHtmlDialog::OnCancel
。示例:
class CMyDHtmlDialog : public CDHtmlDialog
{
void OnCancel()
{
//GetParent()->GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
}
};
class CMyPropertyPage : public CPropertyPage
{
CMyDHtmlDialog child;
BOOL OnInitDialog()
{
BOOL res = CPropertyPage::OnInitDialog();
child.Create(IDD_HTML, this);
CRect rc;
GetClientRect(&rc);
child.SetWindowPos(NULL, 0, 0, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
return res;
}
};
windows 编程新手。
我想制作一个同时使用 CPropertyPage
和 CDHtmlDialog
的对话框?
class CPropertyPage : public CDialog
class CDHtmlDialog : public CDialog
由于我无法将上述每种情况的继承更改为 "virtual public",是否仍然可以制作一个对话框,其中包含来自 CPropertyPage
的某些字段和来自 [=] 的某些表单12=]?
您可以创建 HTML 对话框作为 属性 页面的子对话框。唯一的问题是如果用户按下取消,子对话框将关闭。您必须覆盖 CDHtmlDialog::OnCancel
。示例:
class CMyDHtmlDialog : public CDHtmlDialog
{
void OnCancel()
{
//GetParent()->GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
}
};
class CMyPropertyPage : public CPropertyPage
{
CMyDHtmlDialog child;
BOOL OnInitDialog()
{
BOOL res = CPropertyPage::OnInitDialog();
child.Create(IDD_HTML, this);
CRect rc;
GetClientRect(&rc);
child.SetWindowPos(NULL, 0, 0, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
return res;
}
};