15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


CHILD MDI -

Ehab Bassilli -- ehab@total.net
Friday, March 28, 1997

Environment: VC++ 5.0, Win 95

I need to create an MDI where the user has a number of CHILD documents that
can be created based
upon their initial selection from the FILE menu..

eg.

FILE   EDIT   VIEW   ... 
 ->dialog one
 ->dialog two
 ->dialog etc..

I need the children (kids) to be dialog based.. 

I know, well, I suppose that the class for the viewtype shuld be set to :
CFormView...
OK.. then what? I need to create different forms/dialogs that should be
treated as
children documents of the MDI...

Please please help

Ehab Bassilli..

ehab@total.net




Paul -- paulstemper@mpl1.ra.rockwell.com
Monday, March 31, 1997

Ehab,

MFC-L is intended for advanced questions on MFC.  I am assuming that you   
believe your question is advanced because you can't get AppWizard to do   
everything for you.....


I have written a app that does basically what you want.  I will eMail it   
to you separately so I don't bog down the mailing list..  (If anyone else   
would care for it, please let me know.)

[Moderator's note: Paul emailed it to me, and I put it up on the
web site.  http://www2.vertexgroup.com/mfc-l/dumbapp.zip ]

Anyway, these are the steps I went through to create the sample app.

1) Use AppWizard to create a default MDI app.  (Don't change any   
selections unless you WANT to.)
2) Create three new dialog resources. (YES, we are going to use CformView   
classes.  This should be equivalent to your requirement of being dialog   
based views.)
3) Use ClassWizard to create three new classes based upon CFormView.  (I   
called my classes Form1, Form2, and Form3.)  When you create each class,   
you tell class wizard the dialog template to tie to each class.
4) Here comes the tricky part.  You can't use ClassWizard.  You must code   
by hand!! (Oh No!.)  At the top of you App class (mine is CDumbAppApp,)   
put the includes for each of your CFormView classes.  My example is   
#include "Form1.h", #include "Form2.h", & #include "Form3.h"
5) Final tricky part.  In you InitInstance in the App class, locate the   
lines which register the document templates.  It should look something   
like this:
 CMultiDocTemplate* pDocTemplate;
 pDocTemplate = new CMultiDocTemplate(
  IDR_DUMBAPTYPE,
  RUNTIME_CLASS(CDumbAppDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CDumbAppView));
 AddDocTemplate(pDocTemplate);

Change the line that says: RUNTIME_CLASS(CDumbAppView)); to   
RUNTIME_CLASS(Form1));

Add two more MultiDocTemplates for the other two view types.  The final   
chunk should look like this:
 CMultiDocTemplate* pDocTemplate;
 pDocTemplate = new CMultiDocTemplate(
  IDR_DUMBAPTYPE,
  RUNTIME_CLASS(CDumbAppDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(Form1));
 AddDocTemplate(pDocTemplate);

 pDocTemplate = new CMultiDocTemplate(
  IDR_DUMBAPTYPE2,
  RUNTIME_CLASS(CDumbAppDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(Form2));
 AddDocTemplate(pDocTemplate);

 pDocTemplate = new CMultiDocTemplate(
  IDR_DUMBAPTYPE3,
  RUNTIME_CLASS(CDumbAppDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(Form3));
 AddDocTemplate(pDocTemplate);



When you do a file-new with more then 1 document template registered, MFC   
will automatically pop up a dialog to ask you which type you want.  You   
can customize each document type name by changing the string resource   
that you pass as the first parameter to the CMultiDocTemplate.  I don't   
wish to explain any more then to say, "Read the documentation!"  Check on   
CMultiDocTemplate.  I know your original posting said you wanted to pick   
the document type off of the file-new menu, and this example does not do   
that.  It is pretty trival to change it, but I wanted to show that I   
could do even this much using almost nothing but ClassWizard.

People, this is supposed to be an advanced MFC mailing list.  I don't   
know how many times people have had to respond to questions by saying,   
"Read the documentation."  The guys on the MFC&T team have done a lot of   
work to save us time.  Lets at least have the curitousy to read the help   
before wasting everyone's time (I hope everyone realizes that Mike B is   
not required to be active on this list.  He is here because he WANTS to   
be helpful.)  ClassWizard & AppWizard can do a lot of work for you, but   
sometimes you really should be able to work without it.

I know some of you have nothing better to do then to send flames back,   
but I wish you wouldn't waste my time.
   

Thanks for listening..

Paul Stemper


 -----Original Message-----
From: Ehab bassilli [SMTP:mfc-l@netcom.com]
Sent: Saturday, March 29, 1997 6:03 PM
To: mfc-l
Subject: CHILD MDI -


Environment: VC++ 5.0, Win 95
I need to create an MDI where the user has a number of CHILD documents   
that can be created based upon their initial selection from the FILE   
menu..
eg.
FILE   EDIT   VIEW   ...
* >dialog one
* >dialog two
* >dialog etc..

I need the children (kids) to be dialog based..
I know, well, I suppose that the class for the viewtype shuld be set to :
CFormView...
OK.. then what? I need to create different forms/dialogs that should be   
treated as children documents of the MDI...
Please please help
Ehab Bassilli..
ehab@total.net
 ------------------------- Original message header:
>MAIL FROM:
>RCPT TO:
>DATA
>Received: by extfw.mke.ra.rockwell.com; id SAA23132; Sat, 29 Mar 1997
18:04:53 -0600
>Received: from listless.netcom.com(206.217.29.105) by
extfw.mke.ra.rockwell.com via smap (3.2)
> id xma023109; Sat, 29 Mar 97 18:04:34 -0600
>Received: by majordomo.netcom.com (8.7.5/8.7.3/(NETCOM MLS v1.01)) id
LAA28908; Sat, 29 Mar 1997 11:04:39 -0800 (PST)
>Message-Id: <3.0.32.19970328125641.006ac20c@total.net>
>X-Sender: ehab@total.net
>X-Mailer: Windows Eudora Pro Version 3.0 Demo (32)
>Date: Fri, 28 Mar 1997 12:56:44 -0500
>To: mfc-l@netcom.com
>From: Ehab bassilli 
>Subject: CHILD MDI -
>Mime-Version: 1.0
>Content-Type: text/plain; charset="us-ascii"
>Sender: owner-mfc-l@majordomo.netcom.com
>Errors-To: owner-mfc-l@majordomo.netcom.com
>Precedence: bulk
>Reply-To: mfc-l@netcom.com
 ------------------------- End of message header.




Become an MFC-L member | Вернуться в корень Архива |