我想为项目使用基于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文件。