Questa nota descritti i problemi di creazione e proprietà per WinApps, DocTemplates, documenti, cornici e visualizzazioni. Si può trovare la maggior parte di queste informazioni e altri interessanti creazione e questioni di proprietà, nel manuale del programmatore di Visual C++.
WinApp
Vi è un oggetto CWinApp nel sistema.
Staticamente è costruito e inizializzato da implementazione interna del framework di WinMain. Deve derivare da CWinApp a fare qualcosa di utile (eccezione: le dll di estensione non devono avere un'istanza di CWinApp — l'inizializzazione viene eseguita in DllMain invece).
Un oggetto CWinApp possiede un elenco di modelli di documento ( CPtrList). Non esiste un modello di documento uno o più per ogni applicazione. DocTemplates di solito vengono caricati dal file di risorse (cioè, una matrice di stringhe) in :: InitInstance.
pTemplate = nuovo CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)
Un oggetto CWinApp possiede tutte le finestre con frame nell'applicazione. La finestra del frame principale per l'applicazione deve essere memorizzata in CWinApp::m_pMainWnd; di solito è impostare m_pMainWnd nell'implementazione InitInstance se non hanno lasciate AppWizard farlo per voi. Per single document interface (SDI), questo è un CFrameWnd che funge da finestra cornice principale dell'applicazione, nonché l'unica finestra Struttura documento. Per interfaccia a documenti multipli (MDI) questa è una cornice MDI (classe CMDIFrameWnd) che funge da finestra cornice principale dell'applicazione che contiene il bambino CFrameWnds. Ogni finestra figlio è della classe CMDIChildWnd (derivata da CFrameWnd) e serve come una delle finestre con frame potenzialmente molti documenti.
DocTemplates
Il CDocTemplate è il creatore e gestore di documenti. Esso possiede i documenti che crea. Se l'applicazione utilizza l'approccio descritto di seguito risorsa, esso non dovrà derivare da CDocTemplate.
Per un'applicazione SDI, la classe CSingleDocTemplate tiene traccia di aprire il documento. Per un'applicazione MDI, la classe CMultiDocTemplate conserva un elenco ( CPtrList) di tutti i documenti attualmente aperti creati da quel modello. CDocTemplate::AddDocument e CDocTemplate::RemoveDocument forniscono il membro virtual funzioni per l'aggiunta o la rimozione di un documento dal modello. CDocTemplate è un amico di CDocument , così possiamo impostare il protetto CDocument::m_pDocTemplate posteriore puntatore per indicare torna al modello doc che ha creato il documento.
CWinApp gestisce l'implementazione predefinita OnFileOpen , che a sua volta interrogherà tutti i modelli di doc. L'implementazione include alla ricerca di documenti già aperti e decidere quale formato per aprire nuovi documenti in.
CDocTemplate gestisce l'associazione UI per documenti e cornici.
CDocTemplate mantiene un conteggio del numero di documenti senza nome.
CDocument
Un CDocument è di proprietà di un CDocTemplate.
Documenti hanno un elenco di punti di vista attualmente aperti (derivato da CView) che sta visualizzando il documento ( CPtrList).
Documenti non creare/distruggono le opinioni, ma essi sono collegati gli uni agli altri volta create. Quando un documento viene chiusa (cioè, attraverso File/Chiudi), saranno chiuse tutte le viste allegate. Quando l'ultima vista su un documento viene chiuso (cioè, finestra/Close) il documento sarà chiusa.
La CDocument::AddView, RemoveView interfaccia viene utilizzato per mantenere l'elenco della vista. CDocument è un amico di CView in modo siamo in grado di impostare il puntatore posteriore CView::m_pDocument.
CFrameWnd
Un CFrameWnd (noto anche come un frame) svolge lo stesso ruolo come in MFC 1.0, ma ora la classe CFrameWnd è stata progettata per essere utilizzato in molti casi senza una nuova classe di derivazione. Le classi derivate CMDIFrameWnd e CMDIChildWnd sono anche migliorate in modo molti comandi standard sono già implementati.
Il CFrameWnd è responsabile della creazione di finestre nell'area client del telaio. Normalmente non c'è una finestra principale dell'area client del telaio di riempimento.
Per una finestra MDI-Frame, l'area client è riempito con il controllo MDICLIENT che a sua volta padre di tutte le finestre cornice figlio MDI. Per una finestra di SDI-Frame o una finestra cornice figlio MDI, l'area client di solito è piena di una CView-derivato oggetto window. Nel caso di CSplitterWnd, l'area client della vista è riempito oggetto window CSplitterWnd e la CView-oggetti window derivata (uno a riquadri) vengono creati come finestre figlio della CSplitterWnd.
&Note tecniche per numero |nbsp; Note tecniche per la categoria