Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Winmain in eine Klasse packen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.08.2003, 21:34 Uhr
~Einsteiger
Gast


Hallo!

Ich habe heute angefangen, mich mit Windows-Programmierung ohne MFC (also mit WinMain) zu beschäftigen. Habe auch mein erstes Fenster erstellt und es hat funktioniert. Nur da ist noch eine Sache, die mich irgendwie stört und mich auch verwirrt:

Wenn ich über das Kontextmenü "Hinzufügen/Klasse" eine neue Klasse erstelle, dann wird dafür automatisch eine Headerdatei erstellt (wo die Includes und die Prototypen zu finden sind) und eine CPP-Datei, die den eigentlichen Quelltext enthält. Für die Datei, die die wichtigsten Funktionen zum Starten des Programms und zum Anzeigen des Fensters beinhaltet (also WinMain und WndProc) wird allerdings nur eine Datei erstellt, die außerdem nicht einmal eine Klasse beinhaltet.
Kann man nicht auch diesen Code irgendwie in eine Klasse packen? Wenn ich z.B. genau das gleiche Fenster ein 2. Mal erstellen möchte, dann könnte ich einfach eine 2. Instanz der Klasse anlegen. Oder wenn ich ein nur geringfügig unterschiedliches Fenster anlegen möchte könnte ich eine andere Klasse ableiten und diese entsprechend modifizieren.

Es ist z.B. in Java so, dass dort alles als Klasse deklariert wird, und da gibt es auch bei der Start-Routine keine Ausnahme:
Ich hätte also gerne eine Klasse, deren Konstruktor beim Anlegen einer neuen Instanz auch automatisch ein Fenster inklusive Message-Behandlung erstellt.

Ich Java geht das so:

// Hauptklasse inklusive Start-Funktion und Fenster
public class Main extends java.awt.Frame{

// Startfunktion
public static void main(String args[]){

// Neue Instanz der Fenster-Klasse erstellen
Main m=new Main();

}

// Konstruktor
public Main(){

// Fenster anzeigen
this.show();

}

}

Kann man das in C++ auch irgendwie auf diese Art lösen?
Oder kann mir wer erklären warum in C++ das Fenster nicht in eine Klasse gepackt wird?

Danke im Voraus!

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.08.2003, 09:41 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ich bin kein Win32 API Kenner, aber du hast dort - gleich wie in der MFC - ein MainFrame also "Hauptfenster". Auf dieses bauen wietere Fenster auf. Also müsstest du mit

C++:
int DialogBox(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hwndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);


einen modalen Dialog erzeugen. Nicht modale Dialoge funtzen miz CreateDialog. Ebenfalls musst du die CALLBACK Funktion DialogProc nutzen, um den Dialog initialisieren zu können oder um Klicks,... abzufangen.

mfg
--

Dieser Post wurde am 18.08.2003 um 09:43 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: