c++ - 破坏属性表的确定、取消和帮助窗口的效果

标签 c++ mfc dialog cpropertysheet

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

相关文章:

mfc - CPropertySheet 中对话框的垂直滚动条不起作用

c++ - MFC 将双数据类型写入注册表

jsf - Primefaces Dialog Framework - 打开对话框 - 关闭它 - 打开另一个对话框

c++ - 字符指针的地址值

C++ 11 正则表达式

c++ - 将 Visual Studio 调试器工作目录设置为 CMake 中的可执行输出目录

c++ - 在这种情况下如何使用双缓冲区?

android - 尝试打开对话框时出错 : android. view.WindowManager$BadTokenException

android - 如何防止 android 软键盘调整我的 Activity 大小

c++ - 如何将图像阵列拼接成MxN图像拼贴