我想为项目使用基于 CPropertySheet 的应用程序,我不想要 CPropertySheet 类附带的默认确定、取消、帮助和应用按钮。因此,我销毁了 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 文件。
关于c++ - 破坏属性表的确定、取消和帮助窗口的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29344500/