MFC-- 遇到致命的死亡钻石

MFC - encountering deadly diamond of death

windows 编程新手。

我想制作一个同时使用 CPropertyPageCDHtmlDialog 的对话框?

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;
    }
};