Konfigurieren des Aussehens vom Hauptfenster

J1M1

Erfahrenes Mitglied
Hi!

Totaler Anfänger in VisualStudio2005/MFC.
Totale -Frage - peinlich für mich, aber unvermeidlich. :-|

Also ich möchte das mein Fenster foldenderweise aussieht (ein Single Document Programm): kein System Menü, keine Toolbar, keine Statusbar, keine Minimieren/Maximieren Box, aber ein Schließen-Box!
Ich bekomme es mit dem MFC nur so hin, dass es zusätzlich zu dem Schließen-Box, auch mindestens noch eine Minimieren-Box und ein SystemMenü haben muss.
Ich komm nicht weiter. -_-

Eine weitere Frage wäre: Kann man das Aussehen meines Fensters nachträglich über einen Assistenten verändern? Und wo könnte ich die Eigenschaften für das erzeugte Fenster im Quellcode verändern?

Und noch was: Kann man in einem Single Document Programm mehrere Hauptfenster erzeugen?

Vielen Dank im Voraus.

J!M!
 
Hi,
1. Die Styles für das Fenster werden in MainFrm.cpp in der Funktion PreCreateWindow festgelegt. Die sieht so aus:
Code:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Ändern Sie hier die Fensterklasse oder die Darstellung, indem Sie
	//  CREATESTRUCT cs modifizieren.

	cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
		 | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE | WS_SYSMENU;

	return TRUE;
}
Um den Style zu ändern, einfach die Flags löschen in cs.struct für den Style, den du nicht willst. Schau in der MSDN nach für die Bedeutung der Flags.

2. Nein, ein SDI-Programm hat nur ein Hauptfenster, alles andere müßte man über Dialoge lösen (oder eben ein MDI-Projekt nehmen).

Mfg

langer
 
Danke für die Antwort.

Könnte ich das Aussehen eines Fensters auch mithilfe eines Assistenten nachträglich verändern..?

Und wie ist es denn möglich ein Systemmenü ähnlich dem der neuen Windows-Programme zu erstellen: also kein Rand, und keine Rahmen für Titelleiste, sondern ein grenzloser Übergang zwischen Systemmenü und dem Client-Bereich. (Falls ihr so immer nocht nicht weiß was ich meine, kann ich auch n Screenshot reinmachen. :))

Und: MDI-Anwendungen ermöglichen ja nur die Erzeugung mehrer Child-Fenster, doch wie sieht#s mit der Erzeugung mehrer Hauptfenster aus?

J!M!
 
Hallo,

1. Das Aussehen des Hauptfensters wird mit dem Assistenten beim Erstellen des Projektes festgelegt. Nachträgliches Ändern ist nur über die o.a. Funktion im Quelltext möglich. Verschiedene Styles kann man auch im Programm auswählen, wenn man die BCG-Library verwendet, die kostet aber richtig Geld.

2. Ich weiß nicht, welche neuen Windows-Programme du meinst, aber wenn du das Projekt als Unicode erstellst, wird automatisch ein Manifest eingebettet, das die XP-Themes nutzt. Im Multibyte-Mode gibt es leider in den Includes einen Bug, der das Erzeugen des Manifestes verhindert.

3. Das stimmt, ein MDI-Programm erzeugt Child-Fenster. Um mehrere Hauptfenster zu erzeugen, muß man also mehrere Instanzen erzeugen, das heißt, das Programm mehrmals starten.

Mfg

langer
 
Ich meine z.b. den Windows Media Player, Windows Live Messenger...

Und wie ist es mit Mult-Top Level Dokuments, kann man da mehrere Hauptfenster erzeugen?

J!M!
 
Na ja, da geht es um Skins, damit habe ich nich noch nie beschäftigt, aber vielleicht gibt's hier ja kundige Leute.
MultiTopLevel-Dokuments setzt auf das Erzeugen mehrer Instanzen auf. Auch Microsoft hat sich mit dieser Technologie von MDI verabschiedet.

Mfg

langer
 
Wie erzeugt man denn mehrere Instanzen eines Programms...?

Warum? Was ist der Nachteil dieser Technologie?
Und wie machen die es jetzt stattdessen...?

J!M!
 
Zuletzt bearbeitet:
Hallo,

mehrere Instanzuen erzeugt man, indem man das Programm mehrmals startet. Z.B. kannst du ja den Explorer mehrmals starten, wenn du etwas kopieren willst von einen Ordner in einen anderen und Drag und Drop verwenden willst.

Mfg

langer
 
Zurück