Einfache MFC anwendung will nicht klappen



  • Hallo

    ich habe folgendes Problem mit MFC in C++ Visual Studio 2003.

    wenn ich eine ganz normale Konsolenanwendung Programmiere funktioniert es meist tadellos. Sobald ich aber ein MFC Projekt anlege und dies dan Kompiliere bringt der Kompiler mir zich Fehlermeldungen. Das Projekt habe ich wie gewöhnlich mit dem Assistenten erstellt.

    Ich habe keine einzige zeile Code geschrieben ich habe lediglich das Projekt nach dem erstellen debuggen wollen. Da sollte er mir doch normalerweise keine Fehler bringen oder ?

    Ich vermute mal ganz stark das meine Projekt Einstellungen nicht stimmen bzw. mir eine Pallete an header dateien fehlen nur weiss ich nicht welche header dateien er benötigt gibts dafür vielleicht irgend ein tutorial wie man ein MFC Projekt anlegt? auf der MSDN seite ist nur eine allgemeine beschreibung drin und mit der gehts bei mir nicht.

    Meine MFC Anwendung ist eine einfaches dialogfeld mit den buttons "ok" und "Abbrechen" das ist alles.

    hier mal ein auszug aus meiner Fehlerliste:

    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include atltrace.h(372): error C2059: Syntaxfehler: ')'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(37): warning C4518: 'extern ': Unerwartete(r) Speicherklassen- oder Typspezifizierer; wird ignoriert
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(37): error C2059: Syntaxfehler: 'Zeichenfolge'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(63): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(63): error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil?
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(68): error C2501: 'EXCEPTION_DISPOSITION': Fehlende Speicherklasse oder Typspezifizierer
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(83): error C2143: Syntaxfehler: Es fehlt ';' vor '__cdecl'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(83): error C2501: 'EXCEPTION_DISPOSITION': Fehlende Speicherklasse oder Typspezifizierer
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(83): error C2086: 'int EXCEPTION_DISPOSITION': Neudefinition
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(153): error C2059: Syntaxfehler: '}'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(153): error C2143: Syntaxfehler: Es fehlt ';' vor '}'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\excpt.h(153): error C2059: Syntaxfehler: '}'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdarg.h(36): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdarg.h(36): error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil?
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\Guiddef.h(199): error C2088: '==': Ungültig für struct
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinBase.h(3886): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinBase.h(3898): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinUser.h(211): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinUser.h(218): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(324): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(325): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(326): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(327): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(328): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(369): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(370): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(371): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(373): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(376): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h(378): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stddef.h(135): error C2143: Syntaxfehler: Es fehlt ';' vor '__cdecl'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atldebugapi.h(54): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atldebugapi.h(56): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(120): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(125): error C2061: Syntaxfehler: Bezeichner 'va_list'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(353): error C2065: 'va_list': nichtdeklarierter Bezeichner
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(353): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ptr'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(353): error C2065: 'ptr': nichtdeklarierter Bezeichner
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(354): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(354): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(355): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(356): error C2143: Syntaxfehler: Es fehlt ')' vor 'constant'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(356): error C2059: Syntaxfehler: ')'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(361): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ptr'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(361): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(361): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(362): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(362): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(363): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(364): error C2143: Syntaxfehler: Es fehlt ')' vor 'constant'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(364): error C2059: Syntaxfehler: ')'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(369): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ptr'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(369): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(369): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(370): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(370): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(371): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(372): error C2143: Syntaxfehler: Es fehlt ')' vor 'constant'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(377): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ptr'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(377): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(377): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(378): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(378): error C3861: 'va_list': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(379): error C3861: 'ptr': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(380): error C2143: Syntaxfehler: Es fehlt ')' vor 'constant'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltrace.h(380): error C2059: Syntaxfehler: ')'
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afx.h(335): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.

    Vielen Dank für eure Hilfen im voraus


  • Mod

    Wie wäre es wenn Du uns ein wenig Code zeigen würdest.
    Besonders all das was Du includest.

    Wird afxwin.h als erstes inludiert?



  • also afxwin.h habe ich überhaupt nicht eingebunden wie gesagt hab nur das projekt erstellt ohne was einzubinden . Die headerdateien sind alle vom Asisstenten eingefügt worden.

    Das blöde ist das ich überhaupt keine anwendung zum laufen bekomme sogar demos aus fertigen projekten laufen nicht. 😕

    Es muss irgendwie ein ganz fataler fehler sein 🙄

    hier ist mal der Code

    // BenutzerDlg.cpp : Implementierungsdatei
    //
    
    #include "stdafx.h"
    #include "Benutzer.h"
    #include "BenutzerDlg.h"
    #include ".\benutzerdlg.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    // CAboutDlg-Dialogfeld für Anwendungsbefehl 'Info'
    
    class CAboutDlg : public CDialog
    {
    public:
    	CAboutDlg();
    
    // Dialogfelddaten
    	enum { IDD = IDD_ABOUTBOX };
    
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    
    // Implementierung
    protected:
    	DECLARE_MESSAGE_MAP()
    };
    
    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    }
    
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    }
    
    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    END_MESSAGE_MAP()
    
    // CBenutzerDlg Dialogfeld
    
    CBenutzerDlg::CBenutzerDlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CBenutzerDlg::IDD, pParent)
    {
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CBenutzerDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    }
    
    BEGIN_MESSAGE_MAP(CBenutzerDlg, CDialog)
    	ON_WM_SYSCOMMAND()
    	ON_WM_DESTROY()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	//}}AFX_MSG_MAP
    	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
    	ON_BN_CLICKED(IDOK, OnBnClickedOk)
    END_MESSAGE_MAP()
    
    // CBenutzerDlg Meldungshandler
    
    BOOL CBenutzerDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
    
    	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
    	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
    
    	// TODO: Hier zusätzliche Initialisierung einfügen
    
    	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }
    
    void CBenutzerDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    	{
    		CAboutDlg dlgAbout;
    		dlgAbout.DoModal();
    	}
    	else
    	{
    		CDialog::OnSysCommand(nID, lParam);
    	}
    }
    
    void CBenutzerDlg::OnDestroy()
    {
    	WinHelp(0L, HELP_QUIT);
    	CDialog::OnDestroy();
    }
    
    // Wenn Sie dem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie 
    //  den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das 
    //  Dokument/Ansicht-Modell verwenden, wird dies automatisch ausgeführt.
    
    void CBenutzerDlg::OnPaint() 
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // Gerätekontext zum Zeichnen
    
    		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    
    		// Symbol in Clientrechteck zentrieren
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Symbol zeichnen
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CDialog::OnPaint();
    	}
    }
    
    // Die System ruft diese Funktion auf, um den Cursor abzufragen, der angezeigt wird, während der Benutzer
    //  das minimierte Fenster mit der Maus zieht.
    HCURSOR CBenutzerDlg::OnQueryDragIcon()
    {
    	return static_cast<HCURSOR>(m_hIcon);
    }
    
    void CBenutzerDlg::OnBnClickedButton1()
    {
    
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    }
    
    void CBenutzerDlg::OnBnClickedOk()
    {
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    	OnOK();
    
    }
    

Log in to reply