(MFC mit dem...) Anfangsschwierigkeiten mit Visual C++



  • wie snorre schon sagte:
    Neu->Projekt->Konsole->Fertigstellen!
    Da kannst deine ganz normalen Dosprogramme schreiben!
    Wenn du eine StandardWin anwendung schreiben willst, brauchst du die int WINAPI WinMain(Hinstance x,hinstance y, LPCSTR str,int x)
    {
    return 0;
    }



  • @prolog - zumindest bei vc7 steht mit dem Konsolenassistent kein int main(...) oder so mehr da. Das Teil nennt sich dann _tmain( ... ). Naja - Microsoft typisch halt - hauptsache die Entwickler können das dann nur für unser System compilen 🙂
    Bei VC6 bin ich mir nicht mehr so sicher - ist schon ein paar Monate her - und den Assi verwende ich auch nicht



  • ich dachte bisher das die Konsolen anwendungen mit der Win-API nicht zusammenläuft. Hab drumm immer mit dem Assistenten eine Dialogbasierende
    Anwendung zusammenstellen lassen.
    Werd mich wol mal n bischen mit der Konsole spielen ... ohne Assistent.

    bis denn dann
    BackBONE



  • HI

    Ich hab mich wohl ein bischen missverständlich ausgedrückt.

    Ich meinte mit Assistent auch schon den Dialog in dem man entscheidet ob man ne Win32 ohne MFC, oder mit MFC, oder Lib oder eben Konsolenanwendung machen will.
    Habt aber recht, das kann man wohl nicht dazu zählen, der Eigentliche wird ja erst gestartet, so er denn gestartet wird, wenn man sich entschieden hat.



  • WinAPI, MFC siehe www.henkessoft.de

    Da gibts es auch einen kleinen Einstieg in Konsolen: http://www.henkessoft.de/cpp_konsole.htm

    Da findest Du z.B. so etwas:

    #include <iostream> 
    #include <cmath>  // notwendig fuer sqrt(...) 
    using namespace std; 
    int main() 
    { 
     cout << "Berechnung quadratischer Gleichungen vom Typ x*x + p*x + q = 0" <<"\n\n"; 
    
     double p, q, x1, x2; 
     cout << "Bitte p eingeben: "; 
     cin  >> p; 
     cout << "Bitte q eingeben: "; 
     cin  >> q; 
    
     x1 = -p/2 + sqrt(p*p/4.0 - q); 
     x2 = -p/2 - sqrt(p*p/4.0 - q); 
    
     cout << "\n" << "x1 = " << x1 << "\n" << "x2 = " << x2 <<"\n"; 
    
     return 0; 
    }
    

    [ Dieser Beitrag wurde am 28.06.2003 um 23:40 Uhr von Erhard Henkes editiert. ]



  • Original erstellt von SnorreDev:
    @prolog - zumindest bei vc7 steht mit dem Konsolenassistent kein int main(...) oder so mehr da. Das Teil nennt sich dann _tmain( ... ). Naja - Microsoft typisch halt - hauptsache die Entwickler können das dann nur für unser System compilen 🙂
    Bei VC6 bin ich mir nicht mehr so sicher - ist schon ein paar Monate her - und den Assi verwende ich auch nicht

    Man kann es aber zum Glück zu int main(int argc,char * argv[]) machen 🙂



  • Klar kann man das. Aber ich halte es für einen Schmarn, mit dem Assistenten was zu erstellen, wenn man von den 10 Zeilen eh wieder ändern muß. Die kann man auch zufuß eintippen.



  • Wenn ich mit dem Assistenten ein Prog. erstelle vermisse ich die Main-Funktion.Und eigene Funktionen funktionieren auch nicht wirklich.

    Schau Dir Kapitel 5 des MFC-Tutorials an:
    http://www.henkessoft.de/mfc_einsteigerbuch_kapitel5.htm

    Da findest Du MFC ohne Assistent. Vielleicht hilft Dir das weiter.

    #include <afxwin.h>  //Schritt 1 
    class CMyApplication : public CWinApp  //Schritt 2 
    { 
     public: 
     virtual BOOL InitInstance(); 
    }; 
    
    class CMyWindow : public CFrameWnd  //Schritt 3 
    { 
     public: 
     CMyWindow(); 
    };
    
    //-------------------------------------------------------------
    
    #include "EinfachesFenster.h"  //Schritt 4 
    CMyApplication MyApp;   //Schritt 5 
    
    CMyWindow::CMyWindow() //Schritt 6 
    { 
     Create ( NULL, _T("MFC-Anwendungsskelett") ); 
    } 
    
    BOOL CMyApplication::InitInstance() //Schritt 7 
    { 
     m_pMainWnd = new CMyWindow; 
     m_pMainWnd ->ShowWindow( m_nCmdShow ); 
     return TRUE; 
    }
    

    Schritt 1: Einbinden von <afxwin.h>
    Schritt 2: Abgeleitete Klasse von CWinApp erzeugen
    Schritt 3: Abgeleitete Klasse von CFrameWnd erzeugen
    Schritt 4: Die Header-Datei einbinden
    Schritt 5: Ein Objekt der abgeleiteten Anwendungsklasse erzeugen
    Schritt 6: Ein Objekt der abgeleiteten Fensterklasse im Konstruktor CMyWindow::CMyWindow() erzeugen
    Schritt 7: CWinApp::InitInstance() überschreiben

    Die in der Header-Datei enthaltenen Klassen CMyApplication und CMyWindow sind "Baupläne" für das Applikations- und Fensterobjekt.

    In Schritt 5 wird mit

    CMyApplication MyApp;
    

    das Applikationsobjekt erzeugt.

    In Schritt 7 wird mit

    m_pMainWnd = new CMyWindow;
    

    das Fensterobjekt auf dem Heap erstellt.

    Der Assistent erzeugt prinzipiell den gleichen Code, jedoch nicht so kompakt erkennbar. 😉

    [ Dieser Beitrag wurde am 29.06.2003 um 07:00 Uhr von Erhard Henkes editiert. ]



  • int main(int argc,char * argv[])

    Ich denke, man sollte Einsteiger mit solchen unwichtigen Details zunächst nicht behelligen. Ein schlichtes

    int main(){...; return 0;}
    

    reicht hier m.E. aus.



  • Hallo,
    das sieht alles irgendwie nicht sehr nach Standard-C++ aus.


Anmelden zum Antworten