System menu for the property sheet window
Tipparaju Surendra -- tips@hotmail.com Monday, January 20, 1997 Environment: VC++ 4.0, Win 95 Hello, I am using Property sheet dialog as the main window in my application. Its is similar to dialog based application. By default MFC removes the system menu for property sheets. I want to get it back on my application. I tried my overriding WM_CREATE and after calling property sheets's OnCreate() function, I called GetSystemMenu(TRUE), but it does not work. Can somebody help me with the solution. Thanks in advance Tips --------------------------------------------------------- Get Your *Web-Based* Free Email at http://www.hotmail.com ---------------------------------------------------------
Pradeep -- Tamanna@albpig.cho.ge.com Tuesday, January 21, 1997 [Mini-digest: 5 responses] Hi, The 'GetSystemMenu( )' function allows the application to access the System menu (also known as the Control menu), if the window has one, for copying and modifying. Setting the 'BOOL bRevert' parameter TRUE does nothing more than resetting the System menu, if available, back to the Windows default state. In order to get back the system menu for ur property sheet, u may try using the window style WS_SYSMENU along with WS_CAPTION style during the property sheet window creation. bye, Pradeep ---------- From: owner-mfc-l Sent: Monday, January 20, 1997 5:12 AM To: mfc-l Subject: System menu for the property sheet window Environment: VC++ 4.0, Win 95 Hello, I am using Property sheet dialog as the main window in my application. Its is similar to dialog based application. By default MFC removes the system menu for property sheets. I want to get it back on my application. I tried my overriding WM_CREATE and after calling property sheets's OnCreate() function, I called GetSystemMenu(TRUE), but it does not work. Can somebody help me with the solution. Thanks in advance Tips --------------------------------------------------------- Get Your *Web-Based* Free Email at http://www.hotmail.com --------------------------------------------------------- -----From: Simon CoghlanAfter some fiddling this is how I got it to look .. I can send the whole code if you like.. > I am using Property sheet dialog as the main window in > my application. Its is similar to dialog based application. In your App Instance you might do something like this : BOOL CMgtApp::InitInstance() { ;;; CMyPropSheet MyPropSheet("Thingy"); // Bring up the property sheet just like a modal dialog MyPropSheet.DoModal(); return FALSE; } Then in the Derived PropSheet code have something like : ////////////////////////////////////////////////////////////////////////////// // OnInitDialog // 26/11/96 Development started // BOOL CMyPropSheet::OnInitDialog() { HWND hWnd = GetSafeHwnd(); LONG lStyle = GetWindowLong( hWnd, GWL_STYLE ); SetWindowLong( hWnd, GWL_STYLE, (lStyle | WS_MAXIMIZEBOX) ); // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); // Add "About..." menu item to system menu. and remove the other rubish CMenu* pSysMenu = GetSystemMenu(FALSE); CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { // pSysMenu->RemoveMenu( SC_SIZE, MF_BYCOMMAND ); pSysMenu->AppendMenu( MF_STRING, SC_RESTORE, "&Restore" ); pSysMenu->AppendMenu( MF_STRING, SC_MAXIMIZE, "Ma&ximize" ); pSysMenu->AppendMenu( MF_SEPARATOR ); pSysMenu->AppendMenu( MF_STRING, IDM_ABOUTBOX, strAboutMenu ); } // Activate the Apply Button GetDlgItem( ID_APPLY_NOW )->EnableWindow(); // Hide the Help button GetDlgItem( IDHELP )->ShowWindow( SW_HIDE ); CBOOL cbStatus = CPropertySheet::OnInitDialog(); m_bInit_Done = TRUE; return( cbStatus ); } // End CMyPropSheet::OnInitDialog > By default MFC removes the system menu for property sheets. > I want to get it back on my application. I tried my overriding > WM_CREATE and after calling property sheets's OnCreate() > function, I called GetSystemMenu(TRUE), but it does not > work. > --------- Simon ----------<- Smurf-IV ->------------- Tel : 0121 200 7713 Fax : +44 (0)121 212 0379 Email smurf-iv@sharelink.com Member of the 'Team of CIS' ;-) ---------<- Fun To All ->------------ We are what we repeatedly do, Excellence, then, is not an act, but a habit. Aristotle The one who says it cannot be done, should never interrupt the one who is doing it. The Roman Rule On 20 January 1997 05:12, Tipparaju Surendra wrote: -----From: mfc-l@netcom.com >From mfc-l Wed Jan 22 19:46:56 1997 remote from netcom.com Received: from netcom.com by tc4d1.cmc.stph.net; Wed, 22 Jan 1997 20:27 EST Received: by majordomo.netcom.com (8.7.5/8.7.3/(NETCOM MLS v1.01)) id IAA07193; Tue, 21 Jan 1997 08:41:58 -0800 (PST) Date: 20 Jan 1997 05:12:06 -0000 Message-ID: <19970120051206.18999.qmail@hotmail.com> X-Originating-IP: [202.239.121.26] From: "Tipparaju Surendra" To: mfc-l@netcom.com Subject: System menu for the property sheet window Sender: owner-mfc-l@majordomo.netcom.com Errors-To: owner-mfc-l@majordomo.netcom.com Precedence: bulk Reply-To: mfc-l@netcom.com Content-Type: text/plain Content-Length: 638 Environment: VC++ 4.0, Win 95 Hello, I am using Property sheet dialog as the main window in my application. Its is similar to dialog based application. By default MFC removes the system menu for property sheets. I want to get it back on my application. I tried my overriding WM_CREATE and after calling property sheets's OnCreate() function, I called GetSystemMenu(TRUE), but it does not work. Can somebody help me with the solution. Thanks in advance Tips --------------------------------------------------------- Get Your *Web-Based* Free Email at http://www.hotmail.com --------------------------------------------------------- -----From: mfc-l@netcom.com >From mfc-l Wed Jan 22 19:46:56 1997 remote from netcom.com Received: from netcom.com by tc4d1.cmc.stph.net; Wed, 22 Jan 1997 20:26 EST Received: by majordomo.netcom.com (8.7.5/8.7.3/(NETCOM MLS v1.01)) id IAA07193; Tue, 21 Jan 1997 08:41:58 -0800 (PST) Date: 20 Jan 1997 05:12:06 -0000 Message-ID: <19970120051206.18999.qmail@hotmail.com> X-Originating-IP: [202.239.121.26] From: "Tipparaju Surendra" To: mfc-l@netcom.com Subject: System menu for the property sheet window Sender: owner-mfc-l@majordomo.netcom.com Errors-To: owner-mfc-l@majordomo.netcom.com Precedence: bulk Reply-To: mfc-l@netcom.com Content-Type: text/plain Content-Length: 638 Environment: VC++ 4.0, Win 95 Hello, I am using Property sheet dialog as the main window in my application. Its is similar to dialog based application. By default MFC removes the system menu for property sheets. I want to get it back on my application. I tried my overriding WM_CREATE and after calling property sheets's OnCreate() function, I called GetSystemMenu(TRUE), but it does not work. Can somebody help me with the solution. Thanks in advance Tips --------------------------------------------------------- Get Your *Web-Based* Free Email at http://www.hotmail.com --------------------------------------------------------- -----From: ktm@ormec.com Tips (tips@hotmail.com) wrote: > Environment: VC++ 4.0, Win 95 > I am using Property sheet dialog as the main window in my application. > Its is similar to dialog based application. By default MFC removes the > system menu for property sheets. I want to get it back on my application. > I tried my overriding WM_CREATE and after calling property sheets's > OnCreate() function, I called GetSystemMenu(TRUE), but it does not work. I expect that GetSystemMenu(TRUE) is working exactly as documented. It makes the System menu revert to the default state. In this case, you never had a menu to begin with, so it doesn't do anything. To add a system menu to a property sheet, you need to call ModifyStyle(0, WS_SYSMENU, 0); in OnInitDialog of your CPropertySheet-derived class. Since this is a dialog-box style application, you may want to remove the Size and Maximize menu items from the system menu after you add it: // The default system menu has several menu items that don't make // sense for this dialog box. Remove or hide them as appropriate. CMenu* pSystemMenu = GetSystemMenu(FALSE); ASSERT(pSystemMenu != NULL); pSystemMenu->DeleteMenu(SC_SIZE, MF_BYCOMMAND); pSystemMenu->DeleteMenu(SC_MAXIMIZE, MF_BYCOMMAND); // You might want to DeleteMenu on SC_MINIMIZE and SC_RESTORE, too // The close box will always be displayed in the caption bar, so // it ought to show up in the menu, too. The user should use the // dialog's Close button to close it, so disable the menu item. // This also disables the close box. pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED); Katy -- Katy Mulvey ktm@ormec.com Software Development Engineer ORMEC Systems http://www.ormec.com
| Вернуться в корень Архива |