Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wo startet eine Mfc-anwendung?

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
02.10.2003, 19:30 Uhr
~Java_auf_Cpp_Umsteiger
Gast


Hallo!

Ich habe ein einfaches Fenster mit Hilfe der MFC erstellt. Es funktioniert alles, ich frage mich nur warum...

Hier erstmal der Code:





*************** Main.h ***************

#include <afxwin.h>

class Main : CWinApp{

public:
virtual BOOL InitInstance();

private:
RECT rect;

};

**************************************






************** Main.cpp **************

#include "Main.h"

Main myApplication;


BOOL Main::InitInstance(){

CFrameWnd* mainWnd = new CFrameWnd();

rect.left=100;
rect.top=100;
rect.right=200;
rect.bottom=200;
mainWnd->Create(NULL, "Title");
mainWnd->ShowWindow(this->m_nCmdShow);
mainWnd->UpdateWindow();

this->m_pMainWnd = mainWnd;

return TRUE;

}

**************************************


Wie ist der Ablauf hier zu erklären? Bei einem WinAPI- oder Konsolen-Programm gibt es immer irgend eine Main-Methode (bzw. WinMain), aber wo genau fängt dieses Programm an?

Ich würde sagen es wird als erstes die Zeile ausgeführt, bei der ein Objekt vom Typ "Main" angelegt wird, ist das richtig?

Andere Frage: Was bedeutet es überhaupt, wenn ein Objekt mitten "im leeren Raum" erstellt wird (also außerhalb einer Funktion oder Klasse)? Ist das dann einfach ein globales Objekt?

Andere Frage: Wer ruft die Methode "InitInstance" auf? Der Konstruktor von CWinApp kann es nicht sein, denn wenn ich ihn überlagere funktioniert es trotzdem noch.

Kann mir das bitte jemand im Detail erklären?

Danke erst mal!

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.10.2003, 19:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
die MFC, wenn ich mich nicht täusche ist folgendermaßen aufgebaut:


C++:
WinMain (wird automatisch generiert)
| - CWinApp-Object (deine oben genannte Klasse)
   | - ...


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.10.2003, 09:36 Uhr
Tommix



'Morgen


Zitat:

Es funktioniert alles, ich frage mich nur warum...


Willkommen im Club .

WinMain ist Bestandteil der MFC (...\Mfc\Src\Appmodul.cpp):

C++:
extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine, int nCmdShow)
{
    // call shared/exported WinMain
    return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}


Andere Frage 1: Genau. es ist global.
Andere Frage 2: Windows.

Diesen Von-vorn-nach-hinten-Ablauf gibt es bei Windows-Programmen nicht.
Drum ist der Umstieg auch etwas verwirrend.

Gruss, Tommix

Dieser Post wurde am 03.10.2003 um 09:37 Uhr von Tommix 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: