wie mdi-programm ohne view-fenster starten?
-
hallo leute!
gibt es eine möglichkeit, eine mdi-applikation (mit doc/view) zu starten ohne gleich zu beginn ein view-fenster zu öffnen? ich weis ja zu dem zeitpunkt noch gar nicht, was der anwender anzeigen möchte!
ich habe es zwar geschafft, indem ich in "MyaApp::InitInstance()" die if-anweisung mit "ProcessShellCommand(cmdInfo)" auskommentiere, aber wie öffne ich dann ein view-fenster?vielen dank schon mal für alle tipps und hinweise!
mkr
-
Hallo,
ob es mit der Hilfe des Wizard generiert ist, du kanst das Fenster einfach von Menu oefnen. Oder du kannst auch deine eigene Prozeduren aufstellen, zum Beispeil:
void CMyApp::FileNew()
{
// TODO: Add your command handler code here
CWinApp::OnFileNew();
}void CMyApp::FileOpen()
{
// TODO: Add your command handler code here
CWinApp::OnFileOpen();
}Fredy
(sorry, meine deutsche Sprache ist nicht ganz gute
)
-
hallo fredy,
Fredy Kruger schrieb:
[snipp]
void CMyApp::FileNew()
{
// TODO: Add your command handler code here
CWinApp::OnFileNew();
}void CMyApp::FileOpen()
{
// TODO: Add your command handler code here
CWinApp::OnFileOpen();
}danke, das hilft mir schon mal ein stück weiter!
wenn ich nun aber unterschiedliche dokumentklassen verwenden muss/möchte, die rufe ich die dann auf? ich kann sie zwar mit AddDocTemplate hinzufügen, aber wie wähle ich dann eine aus?Fredy Kruger schrieb:
(sorry, meine deutsche Sprache ist nicht ganz gute
)
kein problem, ist alles gut verständlich!
weisst du zufällig noch eine möglichkeit, wie ich dabei automatisch zwei views öffnen kann? ich möchte dabei eingelesene datein auf zwei verschiedene arten anzeigen. AddView() scheint dafür ja nicht so geeignet zu sein, oder?
markus
-
Hallo markus,
du willst mir dahin bringen, daß ich mich in deutscher Sprache verbesere, oder ? :-))
Okay, es gibt zwei Moeglichkeiten:
in MyApp.cpp haben
CMultiDocTemplateML* pDocTemplate;
pDocTemplate = new CMultiDocTemplateML(
IDR_MULTILTYPE3,
RUNTIME_CLASS(CMyDoc1),
RUNTIME_CLASS(CMyChildFrame1), // custom MDI child frame
RUNTIME_CLASS(CMyView1));
AddDocTemplate(pDocTemplate);pDocTemplate = new CMultiDocTemplateML(
IDR_MULTILTYPE1,
RUNTIME_CLASS(CMyDoc2),
RUNTIME_CLASS(CMyChildFrame2), // custom MDI child frame
RUNTIME_CLASS(CMyView2));
AddDocTemplate(pDocTemplate);und dann einzelne templates suchen:
POSITION teml_pos = AfxGetApp()->GetFirstDocTemplatePosition();
ASSERT(teml_pos);while (teml_pos)
{
CDocTemplate* pTemplate = AfxGetApp()->GetNextDocTemplate (teml_pos);.....
}oder, und das is ganz besser:
in MyApp.h haben:
CMultiDocTemplate* pDocTemplateProfile;
CMultiDocTemplate* pDocTemplateFiltr;und in MyApp.cpp :
pDocTemplateProfile = new CMultiDocTemplate(
IDR_INBUSVTYPE,
RUNTIME_CLASS(CInbusViewDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CInbusProfileView));
AddDocTemplate(pDocTemplateProfile);pDocTemplateFiltr = new CMultiDocTemplate(
IDR_INBUSVFILTR,
RUNTIME_CLASS(CFiltrDoc),
RUNTIME_CLASS(CChildFrameFiltr), // custom MDI child frame
RUNTIME_CLASS(CFiltrView));
AddDocTemplate(pDocTemplateFiltr);Jetzt du hast zwei templates, aber du hast auch zwei direkte pointers auf sie. Neue dokumenten kanst du dann rufen:
void CMyApp::OnNewFilter()
{
pDocTemplateFiltr->OpenDocumentFile (NULL);
}void CMyApp::OpenNewProfile (long klic)
{
pDocTemplateProfile->OpenDocumentFile (NULL);
}Die zweite Frage verstehe ich nicht ganz gut. Du moechtest datein in zwei verschidenen Fenster oder in zwei verchidenen views in einem Fenster darstellen ?
Fredy