我想为项目使用基于CPropertySheet的应用程序,但我不希望CPropertySheet类随附的那些默认的OK,Cancel,Help和Apply按钮。因此,我销毁了OnInitDialog上的那些窗口。这是供参考的代码:

BOOLCProductUI::OnInitDialog()
{
    CPropertySheet::OnInitDialog();

    CRect rect;
    CButton *pTempBtn;
    CButton SaveChanges;

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDHELP));
    if (NULL != pTempBtn)
    {
        pTempBtn->GetWindowRect(&rect);
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDOK));
    if (NULL != pTempBtn)
    {
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDCANCEL));
    if (NULL != pTempBtn)
    {
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(ID_APPLY_NOW));
    if (NULL != pTempBtn)
    {
        ScreenToClient(&rect);
        pTempBtn->MoveWindow(rect);
        pTempBtn->SetWindowText(_T("Save Changes"));
    }

    UpdateData(FALSE);
    return TRUE;
}


CProductUI是CPropertySheet的一类。
但是,当我在Debug模式下使用VC ++ 2008编译程序时,在此行收到Debug Assertion Failed错误消息。
“ CPropertySheet :: OnInitDialog();”
谁能说明为什么会这样吗?

最佳答案

根据How to Hide the Apply Button in CPropertySheet。销毁窗口不是隐藏属性表默认按钮的适当解决方案。我建议您使用“ ShowWindow()”。但是正如您已经提到的,showwindow()也会产生问题,如果您的调用正确,那是不可能的。顺便说一句,如果您的ShowWindow()在“ OnInitDialog()”函数中不起作用,那么最好将此函数移至“ OnCreate()”。另外,如果无法正常使用,请共享整个.H和.CPP文件。

08-27 12:41