Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Klase CMDIFrameWnd i CMDIChildWnd : MFC.

[es] :: C/C++ programiranje :: Klase CMDIFrameWnd i CMDIChildWnd : MFC.

[ Pregleda: 2440 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Klase CMDIFrameWnd i CMDIChildWnd : MFC.29.07.2004. u 10:50 - pre 240 meseci
Treba mi pomoc za klase CMDIFrameWnd, i CMDIChildWnd.
U initInstance kreira se i pokaze glavni Frame, i to je ok. Ono sto ja zelim jeste da imam vise razlicitih naslednika klase CMDIChildWnd koji bi bili u vezi sa CDocument i CFrameView. Povezao sam ih u InitInstance na sledeci nacin:
Code:

    CMultiDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(IDR_DvaTYPE,
        RUNTIME_CLASS(CDokument),
        RUNTIME_CLASS(CChildFrame), // custom MDI child frame
        RUNTIME_CLASS(CPogled)); // Naslednik klase CFrameView
    CChildFrame * Cfrm= new CChildFrame();

Dalje kada zelim da komandom iz menija napravim frame, tj Child Prozor
ako to uradim ovako:
Code:

    CChildFrame * frame= new CChildFrame();
    frame->Create(NULL, "Imedd", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, CMDIChildWnd::rectDefault, this;    
    frame->ShowWindow(SW_SHOW);


Problem je sto na taj nacin se otvra standardni frame koji nije u vezi sa CFrameView klasom, u mom slicaju CPogled. Tako da mi je onaj kod sa DocTemplate-om koji povezuje ove tri klase bezznacajan.
Sta da radim da stvorim MDIChilfFrame koji ce da prikaze CFrameView klasu u sebi ??
 
Odgovor na temu

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Re: Klase CMDIFrameWnd i CMDIChildWnd : MFC.29.07.2004. u 19:18 - pre 240 meseci
Da budem malo prezizniji:
Ukoliko u aplikaciji imam vise setova dokument/prikaz, i ako koristim f-ju AddDocTemplate() u listi Doctepmplate-a imacu vise pokazivaca na dokument/prikaz prozore. i u tom slucaju ako koristim f-ju OnFileNew() korisnic ce morati da bura iz liste FileNew koji prikaz zeli da vidi.
Ja zelim da izbegnem da korisnik bira iz liste prikaza, vec da mu se automatski otvaraju prikazi u zavisnosti sta je iz menija odabrao. Sad se pitam da li je moguce to raditi bez AddDocTeplate() i OnFileNew(). Stecicu utisak da niko na ovom forumu ne koristi MFC ;) Dosta mi je hitno da resim ovaj problem.
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.client.comcast.net



+1001 Profil

icon Re: Klase CMDIFrameWnd i CMDIChildWnd : MFC.30.07.2004. u 05:08 - pre 240 meseci
Ima nas dosta koji koristimo MFC (pa nam ni Document/View arhitektura uopste nije
tudja), ali si tako nemusto opisao problem da smo odprilike shvatili da je bolje ne
upustati se u nagadjanja sta si hteo da kazes.
 
Odgovor na temu

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Re: Klase CMDIFrameWnd i CMDIChildWnd : MFC.30.07.2004. u 10:37 - pre 240 meseci
Citat:
Ima nas dosta koji koristimo MFC (pa nam ni Document/View arhitektura uopste nije
tudja), ali si tako nemusto opisao problem da smo odprilike shvatili da je bolje ne
upustati se u nagadjanja sta si hteo da kazes.


Ok, sigurno si u pravu.
Ajde da probam ponovo:
Ja hocu da napravim MDI Aplikaciju naravno koristeci klase CMDIFrameWnd za glavni okvir Aplikacije, i CMDIChildWnd. Ako klasu CMDIChildWnd povezem sa nekim dokumentom i prikazom na sledeci nacin:
Code:

pDocTemplate = new CMultiDocTemplate(IDR_DvaTYPE,
    RUNTIME_CLASS(CFirstDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CFirstView));
  AddDocTemplate(pDocTemplate);
  pDocTemplate = new CMultiDocTemplate (
    IDR_DvaTYPE,
    RUNTIME_CLASS(CSeconDoc),
    RUNTIME_CLASS(CChildFrame),
    RUNTIME_CLASS(CSecondViewi)
    );
  AddDocTemplate(pDocTemplate);

Sada u listi templejta imam dva dokumenta prikaza i kada korisnik zeli da vidi jedan od ta dva koristeci f-ju OnFileNew() on mora da bira iz liste Templejta koji dokument ili bolje da kazem prozor zeli da otvori. Moje pitanje je kako to da izbegnem, da bi korisnik direktno otvori ili jedan ili drugi prozor(dokument/prikaz).
 
Odgovor na temu

Djuki
Djurdjevac Ivan
Pancevo

Član broj: 56
Poruke: 171
*.panet.co.yu

Jabber: djuki_mag@elitesecurity.org
ICQ: 66867882


Profil

icon Re: Klase CMDIFrameWnd i CMDIChildWnd : MFC.30.07.2004. u 10:42 - pre 240 meseci
Nasao san na Code Guru da moze ovako:
Code:

  POSITION pos = GetFirstDocTemplatePosition();
  CDocTemplate* pTemplate = GetNextDocTemplate(pos);
  pTemplate->OpenDocumentFile(NULL);  // creates the first document

  pTemplate = GetNextDocTemplate(pos);
  pTemplate->OpenDocumentFile(NULL);  // creates the second document

  // etc...


Ako neko ima neko drugo, mozda elegantnije resenje neka napise.
I izvinjavam se ako u bilo kom delu tread-a nisam bio dovoljno jasan i koncizan.
Hvala
 
Odgovor na temu

[es] :: C/C++ programiranje :: Klase CMDIFrameWnd i CMDIChildWnd : MFC.

[ Pregleda: 2440 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.