000
16.01.2003, 20:33 Uhr
Uwe
C/C++ Master (Administrator)
|
Um die auf dieser Seite gezeigten Beispiele nachvollziehen zu können ist zu empfehlen mit dem Anwendungsassistenten von VC++ 6.0 die Projekte mit MFC Unterstützung anzulegen. Ich habe dies im folgenden mit dem Projekt "test" getan und erhalte die Datei "test.cpp" mit folgendem Aussehen:
C++: |
// test.cpp: Definiert den Einsprungpunkt für die Konsolenanwendung. // #include "stdafx.h" #include "test.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // Das einzige Anwendungsobjekt CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetcode = 0; // MFC initialisieren, Ausgabe und Fehlermeldung bei Fehlern if (!AfxWinInit(::GetModuleHandle(NULL),NULL, ::GetCommandLine(), 0)) { // ZU ERLEDIGEN: Fehlercode gemäß Ihren Anforderungen ändern cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // ZU ERLEDIGEN: Anwendungsverhalten hier festlegen. CString strHello; strHello.LoadString(IDS_HELLO); cout << (const TCHAR*)strHello << endl; } return nRetCode; }
|
Einige Anmerkungen dazu. Die Includeanweisung
ist notwendig für die Verwaltung vorkompillierter Header, was bedeutet wir brauchen uns um Includes wie <iostream>, <afx.h> nicht weiter zu kümmern, was ein Blick in die "stdafx.h" Datei uns belegt.
C++: |
// stdafx.h: Include-Datei für Standard-System-Include-Dateien, // oder projektspezifische Include-Dateien, die häufig benutzt, aber // in unregelmäßigen Abständen geändert werden. //
#if !defined(AFX_STDAFX_H__56FA92AE_B8B7_4F99_84E5_EE58AFFB2C58__INCLUDED_) #define AFX_STDAFX_H__56FA92AE_B8B7_4F99_84E5_EE58AFFB2C58__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Selten benutzte Teile der Windows-Header nicht einbinden
#include <afx.h> #include <afxwin.h> // Kern- und Standardkomponenten von MFC #include <afxext.h> // MFC-Erweiterungen #include <afxdtctl.h> // MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4
#ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC-Unterstützung für allgemeine Steuerelemente von Windows #endif // _AFX_NO_AFXCMN_SUPPORT
#include <iostream>
// ZU ERLEDIGEN: Verweisen Sie hier auf zusätzliche Header-Dateien, die Ihr Programm benötigt
//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt zusätzliche Deklarationen unmittelbar vor der vorherigen Zeile ein.
#endif // !defined(AFX_STDAFX_H__56FA92AE_B8B7_4F99_84E5_EE58AFFB2C58__INCLUDED_)
|
Hier werden alle benötigten Header korrekt eingebunden. Nichtbenötigte Header für die eigene Anwendung können hier auch mit
deaktiviert werden. Die restlichen Anweisungen dienen unter anderem dazu, zu verhindern, dass der gleiche Header mehrfach eingebunden wird. Also dort nichts verändern! Jetzt hat VC++6.0 eigenmächtig eine "Hallo Welt!" Anwendung erstellt. Um unsere Anwendungen zu schreiben entfernen wir folgende Zeilen in "test.cpp":
C++: |
CString strHello; strHello.LoadString(IDS_HELLO); cout << (const TCHAR*)strHello << endl;
|
und können an dieser Stelle mit unserer eigentlichen Arbeit beginnen. Falls nicht ausdrücklich darauf hingewiesen wird (MFC-Anwendung), lassen sich nachfolgende Beispiele mit diese Konstruktion testen. -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe |