如何在MFC中删除CPropertySheet中的默认帮助按钮?

如何在MFC中删除CPropertySheet中的默认帮助按钮?,mfc,button,cpropertysheet,Mfc,Button,Cpropertysheet,我在MFC应用程序中使用CPropertySheet类进行设计,通常在CPropertySheet中会有4个默认按钮..我想隐藏/删除帮助按钮..我尝试了以下操作..但不起作用/没有响应..我在CPropertyPage类中编写了此操作 还有别的办法吗 m_psh.dwFlags&=~psh_HASHELP //销毁“帮助”按钮 CButton*btnHelp; btnHelp=reinterpret_cast(GetDlgItem(IDHELP)); btnHelp->DestroyWindo

我在MFC应用程序中使用CPropertySheet类进行设计,通常在CPropertySheet中会有4个默认按钮..我想隐藏/删除帮助按钮..我尝试了以下操作..但不起作用/没有响应..我在CPropertyPage类中编写了此操作 还有别的办法吗

m_psh.dwFlags&=~psh_HASHELP

//销毁“帮助”按钮
CButton*btnHelp;
btnHelp=reinterpret_cast(GetDlgItem(IDHELP));
btnHelp->DestroyWindow();

转到项目的主cpp文件(其中定义了应用)。
删除此行:
ON\u命令(ID\u HELP,CWinApp::OnHelp)


Aditya Palanki

属性页还有一个需要清除的
HASHELP
标志。属性表的构造函数中的以下代码应起作用:

// After the last AddPage() call:
m_psh.dwFlags &= ~PSH_HASHELP;
for(int i=0; i<GetPageCount(); ++i)
    GetPage(i)->m_psp.dwFlags &= ~PSP_HASHELP;
这应该是:

重写从PropertySheet派生的类的OnNotify方法,将以下代码写入其中

CWnd*hwnd=GetDlgItem(IDHELP); hwnd->显示窗口(SW_隐藏)

您必须从工作表和所有页面中删除标志

mySheet.m_psh.dwFlags &= ~PSH_HASHELP;
page1.m_psp.dwFlags &= ~PSP_HASHELP;
page2.m_psp.dwFlags &= ~PSP_HASHELP;


注意区别:m_psh与m_psp和psh\u HASHELP与psp\u HASHELP

tanx 4您的回复…这不是一个正常的按钮,您可以使用上面的编码删除…我使用的是CPropertySheet-它是一个保存您的属性页的对象…它不会工作…我知道其他一些方法您正在使用CPropertySheet,按钮就是按钮。您可以尝试((CWnd*)GetDlgItem(IDHELP))->ShowWindow(SW_HIDE);或者可以查看internet上的各种示例:Hi Priyank,您的解决方案在调试模式下给出“调试断言失败”,在发布模式下给出“访问冲突”错误。除了我,我到处都看到它对别人有用。。为什么?有什么区别吗?你能给我们看一下CPPropertySheet::AddPage的代码吗?这不会隐藏或删除帮助按钮。仅断开按钮与其处理程序功能的连接。更糟的是。。。它会在您需要的其他位置删除处理程序。请注意
PS
**H
**
\u HASHELP`和
PS
**P**
\u HASHELP
之间的区别。我正在使用
CMFCPropertySheet
尝试此操作,此代码仅禁用了帮助按钮,因为我输入错误。但是它现在隐藏了按钮,就像它想象的那样。只是为了完整性:如果你想删除应用按钮,只需添加
m_psh.dwFlags |=psh_NOAPPLYNOW。页面没有此标志,因此没有任何操作。这是不必要的复杂性。
m_psh.dwFlags &= ~PSH_HASHELP;
page1.m_psp.dwFlags &= ~PSP_HASHELP;
AddPage(&page1);
// ...
mySheet.m_psh.dwFlags &= ~PSH_HASHELP;
page1.m_psp.dwFlags &= ~PSP_HASHELP;
page2.m_psp.dwFlags &= ~PSP_HASHELP;