Article: Q141039
Product(s): Microsoft C Compiler
Version(s): winnt:2.0,2.1,2.2,4.0
Operating System(s):
Keyword(s): kbcode kbMFC kbPropSheet KbUIDesign kbVC152 kbVC200 kbVC210 kbVC220 kbVC400 kbGrpDSMFCA
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), used with:
- Microsoft Visual C++ for Windows, 16-bit edition, version 1.52
- Microsoft Visual C++, 32-bit Editions, versions 2.0, 2.1, 2.2, 4.0
-------------------------------------------------------------------------------
SUMMARY
=======
A modal CPropertySheet will automatically create an Apply button. To hide this
button, you need to use different methods for different versions of MFC.
In Visual C++ 2.2 and earlier (MFC 3.2 and earlier), you can derive a class from
CPropertySheet, override OnCreate(), call GetDlgItem(ID_APPLY_NOW), and finally
call ShowWindow(SW_HIDE) to hide the Apply button.
In Visual C++ 4.0 (MFC 4.0), CPropertySheet has a public member called m_psh.
m_psh is a PROPSHEETHEADER structure with a dwFlags member. One of the possible
values of m_psh.dwFlags is PSH_NOAPPLYNOW. Setting this value before the call to
DoModal() hides the Apply button. Another option in Visual C++ 4.0 is to call
GetDlgItem()/ShowWindow(), but you should do it in OnInitDialog() instead of
OnCreate().
MORE INFORMATION
================
In Visual C++ 2.2 and earlier, CPropertySheet was implemented internally by MFC.
Starting with Visual C++ 4.0, the CPropertySheet uses the Windows 95
PropertySheet control, so the method for hiding the Apply button changed.
You can hide any of the default buttons in a modal property sheet by using the
methods in this article. The IDs for each button are IDOK (OK button), IDCANCEL
(Cancel button), ID_APPLY_NOW (Apply button), and IDHELP (Help button). Note
that the Apply button is disabled by default until you call SetModified(). In
addition, in Visual C++ 4.0, the Help button is not shown by default. To show
it, you can set m_psh.dwFlags |= PSH_HASHELP.
Sample Code
-----------
/***** this code applies to Visual C++ 4.0 and later *****/
void CMyView::OnDisplayModalSheet()
{
CMySheet sheet ("Set Properties");
// this hides the Apply button
sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
sheet.DoModal ();
}
/* You can also do the following to hide the Apply button */
BOOL CMySheet::OnInitDialog()
{
CPropertySheet::OnInitDialog();
// this hides the Apply button
CWnd* pApplyButton = GetDlgItem (ID_APPLY_NOW);
ASSERT (pApplyButton);
pApplyButton->ShowWindow (SW_HIDE);
return TRUE;
}
/*********************************************************/
/***** this code applies to Visual C++ 2.2 and earlier *****/
int CMySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;
// this hides the Apply button
CWnd* pApplyButton = GetDlgItem (ID_APPLY_NOW);
ASSERT (pApplyButton);
pApplyButton->ShowWindow (SW_HIDE);
return 0;
}
/*********************************************************/
Additional query words: kbinf 1.52 2.00 2.10 2.20 4.00
======================================================================
Keywords : kbcode kbMFC kbPropSheet KbUIDesign kbVC152 kbVC200 kbVC210 kbVC220 kbVC400 kbGrpDSMFCATL
Technology : kbAudDeveloper kbMFC
Version : winnt:2.0,2.1,2.2,4.0
Issue type : kbhowto
=============================================================================