Wie kann ich machen, das die main zuerst startet?



  • Hallo!

    Ich schreibe ein Programm, dort benutz ich Direct X, ich lerne es gerade.
    In einem Tut wird das Programm hiermit gestartet ->

    INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
    {
    
    	// Fensterklasse
    	WNDCLASS wc;
    
    	wc.hInstance		= hInst;	// Handle der Instanz
    	wc.lpszClassName	= "MyWin";	// Name der Fensterklasse
    	wc.lpfnWndProc		= MsgProc;	// Die Fensterroutine zum Verarbeiten von Meldungen
    	wc.style			= 0;		// Standard Fenster
    	wc.hIcon			= LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));// Icon
    	wc.hCursor			= 0;		// Keinen besonderen Cursor		
    	wc.lpszMenuName		= NULL;		// Kein Menü
    	wc.cbClsExtra		= 0;		// Keine Keine Extras
    	wc.cbWndExtra		= 0;
    	wc.hbrBackground    = (HBRUSH)GetStockObject(WHITE_BRUSH); // Fenster weiß färben
    
    // .........
    

    Wen ich debugge wird diese Funtkion immer als erstes aufgerufen, ich will aber, das das Programm mit der funktion

    int main()
    

    startet, was ist zu tun?

    Somit will ich alles besser unter kontrolle haben, und z.B. selbst bestimmen, wann das Fenster erscheint, oder was davor passiert usw

    Grüsse
    DaMiNaToR



  • Du musst die WinAPI-Main nehmen, da das kein std-C++ mehr ist.

    mfg



  • Abgesehen davon ist die winmain (Fast) das gleiche wie die main, nur dass du nen
    paar Parameter mehr hast.
    Du kannst dort genau das gleiche machen wie in der normalen main.

    Dein Problem liegt wohl einfach daran, dass du dich mit der Windowsprogrammierung
    noch nicht auskennst, der Code im Rumpf bestimmt nur wie das Fenster aussieht.

    Lösche doch mal das RegisterClass, ShowWindow und UpdateWindow, weiter unten im Code,
    dann zeigt es das Fenster nicht mehr an (Und die Schleife mit GetMessage brauchste, dann auch nicht mehr).



  • Mit WinMain wird übrigens auch kein Dos Fenster mehr angezeigt.
    Du kannst natürlich auch per main() ein Fenster erstellen, aber dann hast du immer ein hässliches Dos Fenster in der Gegend rumschwirren.



  • OK Danke Leute 🙂
    Jetzt weiss ich, was die Funktion macht.



  • SirLant schrieb:

    Du kannst dort genau das gleiche machen wie in der normalen main.

    zB. cout << argv[0]; ? :p

    Bei dem gcc kann man einstellen ob man die Dos-Box sehen will. Da braucht man keine dumme WinMain-Funktion.

    (hoffe ich habe das richtig in Erinnerung)


Anmelden zum Antworten