破坏滤纸的“确定”、“取消”和“帮助”窗口的效果
Effect of destroying OK, CANCEL and HELP windows of a porperty sheet
我想为项目使用基于 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的一类。
但是,当我在调试模式下使用 VC++2008 编译程序时,我收到调试断言失败错误消息
">CPropertySheet::OnInitDialog((;">
谁能说明为什么会发生这种情况?
根据如何在 CPropertySheet 中隐藏"应用"按钮。销毁窗口不是隐藏属性表默认按钮的正确解决方案。我建议你使用"ShowWindow(("。但是正如您已经提到的,您的showwindow((也会产生问题,如果您的调用正确,则这是不可能的。顺其自然,如果你的ShowWindow((在"OnInitDialog(("函数中不起作用,那么最好把这个函数移到"OnCreate(("。另外,如果它不起作用,那么请分享您的整个.H 和 .CPP 文件。
- 您应该调用
ShowWindow (SW_HIDE);
而不是DestroyWindow();
- 也没有必要将
CWnd*
GetDlgItem()
返回投给CButton*
。 - 也请注释掉您的
CButton SaveChanges;
声明。你不需要它。
您还可以使用内置标志来执行此操作:
CMyPropertyPage myPage;
myPage.m_psp.dwFlags &= ~PSP_HASHELP;
myPropertySheet.AddPage(&myPage);
myPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
myPropertySheet.m_psh.dwFlags &= ~PSH_HASHELP;
重要说明:通常,请在调试模式下运行应用程序以查看其断言位置。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 需要帮助设置在C++中使用的Potrace
- 问:如何使用C++中的按钮从窗口打开窗口
- 在指针的帮助下,文本文件中单词的频率
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 需要帮助将结构数组传递给函数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 破坏滤纸的“确定”、“取消”和“帮助”窗口的效果
- 需要帮助理解一个Java家伙的c++窗口
- 有关所需窗口对话框资源类型的帮助