Freigeben über


Exemplarische Vorgehensweise für Code: Hello World: Eine MFC-Anwendung für intelligente Geräte und mehrere Plattformen

Aktualisiert: November 2007

Ob Sie Visual C++ für Geräte mit Windows CE (Mobile) und andere mobile Geräte oder eMbedded Visual C++ zum Entwickeln von Geräteanwendungen verwenden: Der Assistent für C++-MFC-Anwendungen für intelligente Geräte und mehrere Plattformen nimmt Ihnen die meisten routinemäßigen Aufgaben bei der Generierung von Projektdateien ab, z. B. der Ressourcendateien und der Projektkonfigurationsdateien für mehrere Plattformen. Da der Assistent zusätzlich Code für den schnellen Einstieg bietet, können Sie sich auf das Entwickeln der Kernfunktionen der Geschäftsanwendung konzentrieren.

Da in dieser exemplarischen Vorgehensweise der vom Assistenten für MFC-Anwendungen für intelligente Geräte und mehrere Plattformen automatisch generierte Code erläutert wird, können Sie die Anwendung Ihren Anforderungen entsprechend schnell erweitern und bearbeiten.

Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen einer MFC-Anwendung für intelligente Geräte und mehrere Plattformen, MFC-Referenz für Geräte und MFC Reference.

Codeauflistung für eine MFC-Anwendung für intelligente Geräte und mehrere Plattformen in C++

Der vom Assistenten generierte Code enthält folgende Elemente:

  • include-Abschnitt.

    #include "stdafx.h"
    
  • stdafx.h. Weitere Informationen finden Sie unter Vorkompilierte Headerdateien.

    #include "MFCHello1.h"
    #include "MFCHello1Doc.h"
    #include "MFCHello1View.h"
    
  • // Debug configuration.

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    IMPLEMENT_DYNCREATE(CMFCHello1View, CView)
    
  • MFC-Meldungszuordnungen und spezifischer BEGIN_MESSAGE_MAP.

  • IMPLEMENT_DYNCREATE, siehe IMPLEMENT_DYNCREATE.

    BEGIN_MESSAGE_MAP(CMFCHello1View, CView)
    END_MESSAGE_MAP()
    
    
  • Konstruktionscode. Weitere Informationen finden Sie unter Konstruktorentwurf und unter Exceptions: Exceptions in Constructors zur Ausnahmebehandlung.

    // CMFCHello1View construction/destruction
    CMFCHello1View::CMFCHello1View()
    {
            // TODO: add construction code here.
    }
    CMFCHello1View::~CMFCHello1View()
    {
    }
    
  • MFC PreCreateWindow.

    
    BOOL CMFCHello1View::PreCreateWindow(CREATESTRUCT& cs)
    {
            // TODO: Modify the Window class or styles here by modifying
            //  the CREATESTRUCT cs.
    
            return CView::PreCreateWindow(cs);
    }
    
  • Beachten Sie, dass die Zeichnung auf dem Bildschirm (Bildschirmzeichnung) in der CView::OnDraw-Methode ausgeführt wird. In dieser Methode übernehmen Sie die Steuerung der grafischen Geräteschnittstelle (GDI – Graphical Device Interface), und zwar im Code (CDC* pDC), der Ihnen als Parameter bereitgestellt wird. Vergessen Sie nicht, die Auskommentierung aufzuheben. So können Sie z. B. in der Anwendung die volle Leistungsfähigkeit der GDI für alle Einsatzbereiche nutzen, angefangen bei Text bis hin zu Grafiken für animierte Spiele. In diesem GDI-Beispiel wird anschließend mithilfe der CDC::DrawText-Methode der Text "Hello World" innerhalb des durch CWnd::GetClientRect definierten Rechtecks gezeichnet.

  • BEGIN_MESSAGE_MAP.

  • CDC Class.

  • CWnd::GetClientRect.

    // CMFCHello1View drawing
    void CMFCHello1View::OnDraw(CDC* pDC)
    {
            CMFCHello1Doc* pDoc = GetDocument();
            ASSERT_VALID(pDoc);
    
            // TODO: add draw code for native data here.
            CRect rect;
          GetClientRect(&rect);
         // Length and string to draw are hard coded for simplicity of 
         // example.
    
  • DrawText und andere verwandte Methoden. Weitere Informationen finden Sie unter CDC Class.

            pDC->DrawTextW(_T("Hello World"),11, &rect,1);
            // nCount ( set to 11) can be a –1, then 
            //lpszString is assumed to be
            // a long pointer to a null-terminated string 
            // and DrawText method automatically 
            // computes the character count.
    }
    // CMFCHello1View diagnostics
    #ifdef _DEBUG
    void CMFCHello1View::AssertValid() const
    {
            CView::AssertValid();
    }
    #ifndef _WIN32_WCE
    void CMFCHello1View::Dump(CDumpContext& dc) const
    {
            CView::Dump(dc);
    }
    #endif // !_WIN32_WCE
    CMFCHello1Doc* CMFCHello1View::GetDocument() const 
    // non-debug version is inline
    {
            ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCHello1Doc)));
            return (CMFCHello1Doc*)m_pDocument;
    }
    #endif //_DEBUG
    // CMFCHello1View message handlers
    
    

In der vom Assistenten erstellten Infodatei verfügbare Informationen

Der Anwendungs-Assistent hat diese MFCHello1-Anwendung für Sie erstellt. Diese Anwendung veranschaulicht nicht nur die Grundlagen der Verwendung der Microsoft Foundation-Klassen, sondern dient auch als Einstiegspunkt zum Schreiben der Anwendung.

Die generierten Dateien werden hier zusammen mit einer Zusammenfassung des Inhalts der einzelnen Dateien aufgeführt. Diese Dateien bilden zusammen den Einstiegspunkt für die Entwicklung der MFC-Anwendung.

Der Name HelloMFC wird als Beispiel verwendet. Sie können auch einen eigenen Projektnamen verwenden.

HelloMFC.vcproj

Die Hauptprojektdatei für Visual C++-Projekte, die mit einem Anwendungs-Assistenten erstellt wurden. Sie enthält Informationen zur Visual C++-Version, mit der die Datei generiert wurde, sowie Informationen zu Plattformen, Konfigurationen und Projektfeatures, die mit dem Anwendungs-Assistenten ausgewählt wurden.

HelloMFC.h

Die Hauptheaderdatei für die Anwendung. Diese enthält andere projektspezifische Header und deklariert die CMFCHello1App-Anwendungsklasse.

HelloMFC.cpp

Die zentrale Quellcodedatei der Anwendung, die die Klassendefinition für die Anwendungsklasse CMFCHello1App enthält.

HelloMFCppc.rc

Die Hauptressourcendatei des Projekts, die alle Microsoft Windows-Ressourcen aufführt, die das Projekt beim Kompilieren für die Pocket PC-Plattform oder eine Plattform, die das gleiche Benutzeroberflächenmodell unterstützt, verwendet. Sie umfasst die Symbole, Bitmaps und Cursor, die im RES-Unterverzeichnis gespeichert sind. Diese Datei kann direkt in Microsoft Visual C++ bearbeitet werden. Die Projektressourcen befinden sich in 1033. Wenn die RC-Datei beibehalten wird, werden die Definitionen im Datenabschnitt als die Hexadezimalversion des numerischen Werts, auf den sie festgelegt sind, und nicht als Anzeigenamen der Definition beibehalten.

res\HelloMFCppc.rc 2

Eine Datei, die Ressourcen enthält, die nicht mit Microsoft Visual C++ bearbeitet wurden. Fügen Sie alle Ressourcen in diese Datei ein, die nicht mit dem Ressourcen-Editor bearbeitet werden können.

HelloMFCsp.rc

Die Hauptressourcendatei des Projekts, die alle Microsoft Windows-Ressourcen aufführt, die das Projekt beim Kompilieren für die Smartphone-Plattform oder eine Plattform, die das gleiche Benutzeroberflächenmodell unterstützt, verwendet. Sie umfasst die Symbole, Bitmaps und Cursor, die im RES-Unterverzeichnis gespeichert sind. Diese Datei kann direkt in Microsoft Visual C++ bearbeitet werden. Die Projektressourcen befinden sich in 1033. Wenn die RC-Datei beibehalten wird, werden die Definitionen im Datenabschnitt als die Hexadezimalversion des numerischen Werts, auf den sie festgelegt sind, und nicht als Anzeigenamen der Definition beibehalten.

res\HelloMFCsp.rc 2

Eine Datei, die Ressourcen enthält, die nicht mit Microsoft Visual C++ bearbeitet wurden. Fügen Sie alle Ressourcen in diese Datei ein, die nicht mit dem Ressourcen-Editor bearbeitet werden können.

res\HelloMFC.ico

Eine als Symbol der Anwendung verwendete Symboldatei. Dieses Symbol ist in der Hauptressourcendatei enthalten.

MainFrm.h, MainFrm.cpp

Dateien, die die Rahmenklasse CMainFrame enthalten, die von CFrameWnd abgeleitet wird und alle SDI-Rahmenfeatures steuert.

Der Anwendungs-Assistent erstellt auch einen MFC-Dokumenttyp und eine MFC-Ansicht:

  • HelloMFCDoc.h, HelloMFCDoc.cpp

    Dateien, die die HelloMFCDoc-Klasse enthalten. Bearbeiten Sie diese Dateien, um spezielle Dokumentdaten hinzuzufügen und das Speichern und Laden der Dateien zu implementieren (mit CMFCHello1Doc::Serialize).

  • HelloMFCView.h, HelloMFCView.cpp

    Dateien, die die HelloMFCView-Klasse enthalten. HelloMFCView-Objekte werden verwendet, um HelloMFCDoc-Objekte anzuzeigen.

StdAfx.h, StdAfx.cpp

Dateien, die zum Erstellen einer vorkompilierten Headerdatei (PCH) mit dem Namen HelloMFC.pch und einer vorkompilierten Typendatei mit dem Namen StdAfx.obj verwendet werden.

Resourceppc.h und Resourcesp.h

Die Standardheaderdatei, die neue Ressourcen-IDs definiert. Microsoft Visual C++ liest und aktualisiert diese Datei.

Der Anwendungs-Assistent verwendet TODO:, um Teile des Quellcodes anzugeben, denen hinzugefügt werden kann bzw. die angepasst werden können.

Wenn in der Anwendung MFC in einer gemeinsam genutzten DLL verwendet wird und die Anwendung in einer anderen als der aktuellen Sprache des Betriebssystem erstellt wurde, ist es möglicherweise sinnvoll, die entsprechende Datei MFC80XXX.DLL der lokalisierten Ressource in das Anwendungsverzeichnis zu kopieren. In diesem Namen steht "XXX" für die Abkürzung der Sprache. Zum Beispiel enthält MFC80DEU.DLL ins Deutsche übersetzte Ressourcen. Andernfalls werden einige der Benutzeroberflächenelemente weiterhin in der Sprache des Betriebssystems angezeigt.

Siehe auch

Konzepte

Beispielprojekte für intelligente Geräte