Doc/View for property sheet app
Joe Vannucci -- vannuccj@ix.netcom.com Monday, March 10, 1997 Environment: VC 4.2 flat Win95 How do I get a CSingleDocTemplate frame to be created without a menu? I've got an app that I want to use Doc/View with for the management of the data, but the interface is only a wizard property sheet. The model is SDI because only one document is being used at a time, but in reality multiple documents will be in existence, just without views. So I'm trying to use Doc/View, but using the view as little as possible. One approach I thought of is to embed a property sheet in a CFormView. I know how to do that, but I can't get away from needing a menu. The code fails in CFrameWnd::Create(). I'd like to set the menu resource name parameter to NULL, but I can't figure out how to get in there. I override CMainFrame::Create(), but the code never goes there, even though CFrameWnd::Create() is virtual. Why? Is there a better way to do what I want, like using a hidden view and calling propertysheet.DoModal()? Thanks in advance. -joe vannucci
CADD Design Solutions -- cds59@idt.net Friday, March 14, 1997 At 05:30 PM 3/10/97 -0500, you wrote: >Environment: VC 4.2 flat Win95 > >How do I get a CSingleDocTemplate frame to be created without a menu? > >I've got an app that I want to use Doc/View with for the management of the >data, but the interface is only a wizard property sheet. The model is SDI >because only one document is being used at a time, but in reality multiple >documents will be in existence, just without views. So I'm trying to use >Doc/View, but using the view as little as possible. > >One approach I thought of is to embed a property sheet in a CFormView. I >know how to do that, but I can't get away from needing a menu. The code >fails in CFrameWnd::Create(). I'd like to set the menu resource name >parameter to NULL, but I can't figure out how to get in there. I override >CMainFrame::Create(), but the code never goes there, even though >CFrameWnd::Create() is virtual. Why? > >Is there a better way to do what I want, like using a hidden view and >calling propertysheet.DoModal()? > >Thanks in advance. > >-joe vannucci > I had a very similar problem, but I am using MSVC++ 1.52 (16-bit), but it should be basically the same for your situation. I took the following steps: - Create app with AppWizard using SDI option and CView as view base class - Derive an object from CPropertySheet and store a pointer to new object as a member of your view. - Create new property sheet object using 'new' operator from within your override of view's OnCreate() (don't forget to delete it from within OnDestroy!) - I also created an object derived from CPropertyPage for each page of my property sheet, storing pointers to each object as described above for property sheet object. - Add pages to property sheet as you normally would and then create the property sheet, like so: m_pPropertySheet->Create(this,WS_CHILD|WS_VISIBLE|WS_SYSMENU,0); this makes the property sheet a child of your view, and you can communicate with is by sending messages to it, like so: m_pPropertySheet->GetCurrentPage()->SendMessage(WM_message); Note that GetCurrentPage was created in the overridden instance of the CPropertySheet class. - Resize your main window to contain only the property sheet. I would also recommend centering the main window and disabling the maximize/resize capability from within the OnGetMinMaxInfo() override of your main frame class. If you need any more help, e-mail me direct and I can send you some code. ----------------------------------------------- Shawn L. Bradley CADD Design Solutions e-mail: cds59@mail.idt.net Visit our web site for latest news, neat tips, and FREE AutoLISP utilities! http://metropolis.idt.net/~cds59 ----------------------------------------------- All that must happen for evil to prevail, is for good men to do nothing. -Edmund Burke
Become an MFC-L member | Вернуться в корень Архива |