Condividi tramite


Spiegazione del codice: Hello World: un'applicazione MFC multipiattaforma per Smart Device

Aggiornamento: novembre 2007

Indipendentemente dal fatto che si utilizzi Visual Studio C++ per la creazione di applicazioni destinate a dispositivi Windows CE (Mobile) e ad altri dispositivi mobili oppure eMbedded Visual C++ per lo sviluppo di applicazioni per dispositivi, la procedura guidata di creazione di applicazioni MFC per Smart Device multipiattaforma in C++ consente di semplificare la maggior parte delle attività pratiche necessarie per la generazione dei file di progetto. Tra questi sono inclusi i file di risorse e i file di configurazione per progetti multipiattaforma. Poiché la creazione guidata introduce anche il codice iniziale, è possibile concentrarsi sullo sviluppo delle funzioni fondamentali per le applicazioni aziendali.

Le informazioni fornite in questa procedura dettagliata consentono di acquisire familiarità con il codice generato automaticamente mediante la procedura guidata di creazione di applicazioni MFC per Smart Device multipiattaforma, in modo che sia possibile estendere e modificare in modo semplice l'applicazione in base alle proprie esigenze.

Per ulteriori informazioni, vedere Procedura dettagliata: creazione di un'applicazione MFC multipiattaforma per Smart Device, Riferimento MFC per dispositivi e MFC Reference.

Listato di codice per un'applicazione MFC multipiattaforma per Smart Device in C++

Nel codice generato dalla procedura guidata sono inclusi i seguenti elementi:

  • Sezione include.

    #include "stdafx.h"
    
  • stdafx.h. Per ulteriori informazioni, vedere File di intestazione precompilati.

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

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    IMPLEMENT_DYNCREATE(CMFCHello1View, CView)
    
  • Mappe dei messaggi MFC e più specificamente BEGIN_MESSAGE_MAP.

  • IMPLEMENT_DYNCREATE. Per ulteriori informazioni, vedere IMPLEMENT_DYNCREATE.

    BEGIN_MESSAGE_MAP(CMFCHello1View, CView)
    END_MESSAGE_MAP()
    
    
  • Codice di costruzione. Per ulteriori informazioni, vedere Progettazione di costruttori. Per informazioni sulla gestione delle eccezioni, vedere Exceptions: Exceptions in Constructors.

    // 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);
    }
    
  • Tenere presente che il disegno su schermo viene eseguito mediante il metodo CView::OnDraw. In questo metodo è possibile assumere il controllo dell'interfaccia GDI (Graphical Device Interface) nel codice (CDC* pDC) fornita sotto forma di parametro. Non dimenticare di rimuovere il commento. È ad esempio possibile utilizzare tutte le potenzialità dell'interfaccia GDI all'interno dell'applicazione, dal testo alla grafica per giochi animati. In questo esempio relativo all'interfaccia GDI il metodo CDC::DrawText viene quindi utilizzato per tracciare il testo "Hello World" nel rettangolo definito da CWnd::GetClientRect.

  • 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 e altri metodi correlati. Per ulteriori informazioni, vedere 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
    
    

Informazioni disponibili nel file Readme creato dalla procedura guidata

Questa applicazione MFCHello1 è stata creata automaticamente dalla procedura guidata e non si limita a illustrare l'utilizzo di base delle classi MFC (Microsoft Foundation Class), ma costituisce anche un punto di partenza per la scrittura di un'applicazione.

Di seguito sono elencati i file generati, insieme a da una breve descrizione del relativo contenuto. L'insieme di questi file costituisce un punto di avvio per lo sviluppo dell'applicazione MFC.

Nell'esempio viene utilizzato il nome HelloMFC. Se lo si desidera, è possibile utilizzare un nome di progetto personalizzato.

HelloMFC.vcproj

File di progetto principale per progetti Visual C++ generati mediante una creazione guidata applicazione. Contiene informazioni sulla versione di Visual C++ che ha generato il file e sulle piattaforme, le configurazioni e le funzionalità del progetto selezionate con la Creazione guidata applicazione.

HelloMFC.h

File di intestazione principale per l'applicazione. Sono incluse altre intestazioni specifiche del progetto e viene dichiarata la classe di applicazione CMFCHello1App.

HelloMFC.cpp

File di origine principale dell'applicazione che contiene la definizione relativa alla classe di applicazione CMFCHello1App.

HelloMFCppc.rc

File di risorse principale del progetto in cui sono elencate tutte le risorse di Microsoft Windows utilizzate dal progetto durante la compilazione per la piattaforma Pocket PC o una piattaforma che supporta lo stesso modello di interfaccia utente. In questo file sono incluse le icone, le bitmap e i cursori presenti nella sottodirectory RES. Il file può essere modificato direttamente in Microsoft Visual C++. Le risorse del progetto sono codificate in base all'ID 1033. Quando il file RC viene mantenuto, le istruzioni define nella sezione data vengono mantenute come versione esadecimale del valore numerico per il quale sono definite anziché come nome descrittivo.

res\HelloMFCppc.rc2

File contenente le risorse che non vengono modificate da Microsoft Visual C++. Inserire in questo file tutte le risorse che non possono essere modificate dall'editor risorse.

HelloMFCsp.rc

File di risorse principale del progetto in cui sono elencate tutte le risorse di Microsoft Windows utilizzate dal progetto durante la compilazione per la piattaforma Smartphone o una piattaforma che supporta lo stesso modello di interfaccia utente. In questo file sono incluse le icone, le bitmap e i cursori presenti nella sottodirectory RES. Il file può essere modificato direttamente in Microsoft Visual C++. Le risorse del progetto sono codificate in base all'ID 1033. Quando il file RC viene mantenuto, le istruzioni define nella sezione data vengono mantenute come versione esadecimale del valore numerico per il quale sono definite anziché come nome descrittivo.

res\HelloMFCsp.rc2

File contenente le risorse che non vengono modificate da Microsoft Visual C++. Inserire in questo file tutte le risorse che non possono essere modificate dall'editor risorse.

res\HelloMFC.ico

File utilizzato come icona dell'applicazione. Questa icona è inclusa nel file di risorse principale.

MainFrm.h, MainFrm.cpp

File contenenti la classe CMainFrame, derivata da CFrameWnd e che controlla tutte le funzionalità delle cornici SDI.

Vengono inoltre creati automaticamente un tipo di documento MFC e una visualizzazione MFC:

  • HelloMFCDoc.h, HelloMFCDoc.cpp

    File contenenti la classe HelloMFCDoc. Modificare questi file per aggiungere i dati specifici dei propri documenti e implementare le funzionalità di salvataggio e caricamento dei file, utilizzando CMFCHello1Doc::Serialize.

  • HelloMFCView.h, HelloMFCView.cpp

    File contenenti la classe HelloMFCView. Gli oggetti HelloMFCView vengono utilizzati per visualizzare gli oggetti HelloMFCDoc.

StdAfx.h, StdAfx.cpp

File utilizzati per compilare un'intestazione precompilata denominata HelloMFC.pch e un file di tipi precompilato denominato StdAfx.obj.

Resourceppc.h e Resourcesp.h

File di intestazione standard che definisce i nuovi ID di risorsa. Questo file viene letto e aggiornato da Microsoft Visual C++.

Nella Creazione guidata applicazione viene utilizzato TODO: per indicare le parti del codice sorgente in cui è possibile effettuare aggiunte o che è possibile personalizzare.

Se l'applicazione utilizza MFC in una DLL condivisa, ed è in una lingua diversa da quella corrente del sistema operativo, è opportuno copiare il file MFC80XXX.DLL della risorsa localizzata corrispondente nella directory dell'applicazione. In questo nome "XXX" rappresenta l'abbreviazione della lingua. MFC80DEU.DLL, ad esempio, contiene risorse tradotte in tedesco. Se non si effettua questa operazione, alcuni elementi dell'interfaccia utente dell'applicazione rimarranno nella lingua del sistema operativo.

Vedere anche

Concetti

Esempi relativi ai dispositivi Smart Device