TN025: Documento, visualizzazione e creazione di frame
[!NOTA]
La seguente nota tecnica non è stata aggiornata dalla prima volta che viene inclusa nella documentazione online.Di conseguenza, alcune procedure e argomenti potrebbero non essere aggiornati o errati.Per le informazioni più recenti, è consigliabile cercare l'argomento di interesseindice della documentazione online.
Questa nota descritti i problemi di proprietà e di creazione per WinApps, DocTemplates, documenti, le pagine e le visualizzazioni.
WinApp
È presente un oggetto di CWinApp nel sistema.
In viene creato e inizializzato dall'implementazione interna del framework di WinMain.È necessario derivare da CWinApp per eseguire alcuna operazione utile (eccezione: le DLL di estensione non devono contenere un'istanza di CWinApp — inizializzazione viene eseguita in DllMain anziché).
Il singolo oggetto di CWinApp possiede un elenco di modelli di documento ( CPtrList).C'è uno o più modelli di documento per applicazioni.DocTemplates in genere viene caricato dal file di risorse (ovvero una matrice di stringhe) in CWinApp::InitInstance.
pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);
Il singolo oggetto di CWinApp appartengono tutte le applicazioni utilizzano nell'applicazione.La finestra cornice principale per l'applicazione deve essere archiviata in CWinApp::m_pMainWnd; in genere m_pMainWnd impostato nell'implementazione di InitInstance se non è stato lasciato AppWizard si creano automaticamente.Per l'interfaccia SDI (SDI) questo è un CFrameWnd che funge dalla finestra cornice principale dell'applicazione nonché sola finestra cornice di documento.Perinterfaccia (MDI) a documenti multipli questo è un MDI-Frame (classe CMDIFrameWnd) che funge dalla finestra cornice principale dell'applicazione contenente qualsiasi CFrameWndfiglio S.Ogni finestra figlio è di classe CMDIChildWnd (derivato da CFrameWnd) e funge da uno potenzialmente di molti vengono illustrate le applicazioni utilizzano.
DocTemplates
CDocTemplate è l'autore e gestione dei documenti.Possiede i documenti creati.Se l'applicazione utilizza l'approccio basato sulle risorse descritto di seguito, non dovrà derivare da CDocTemplate.
Per un'applicazione SDI, la classe CSingleDocTemplate tiene traccia di un documento aperto.Per un'applicazione MDI, la classe CMultiDocTemplate è attualmente un elenco ( CPtrList) di tutti i documenti aperti creati da tale modello.CDocTemplate::AddDocument e CDocTemplate::RemoveDocument forniscono funzioni membro virtuali per l'aggiunta o la rimozione del documento dal modello.CDocTemplate è friend di CDocument pertanto è possibile impostare il puntatore protetto della parte finale di CDocument::m_pDocTemplate per puntare al modello del documento che ha creato il documento.
CWinApp gestisce l'implementazione predefinita di OnFileOpen , che a sua volta eseguire una query tutti i modelli doc.L'implementazione include il recupero già dei documenti aperti e la decisione di formato per aprire nuovi documenti.
CDocTemplate gestisce l'interfaccia utente che associa per i documenti e frame.
CDocTemplate mantiene un conteggio del numero di documenti senza nome.
CDocument
CDocument appartiene da CDocTemplate.
I documenti presentano un elenco delle visualizzazioni attualmente aperti (derivate da CView) che visualizzano il documento ( CPtrList).
I documenti non creano/elimina le visualizzazioni, ma sono collegati l'un l'altro una volta creati.Quando un documento viene chiuso (ovvero con il file/Chiudi), tutte le visualizzazioni associate verranno chiuse.Quando l'ultima visualizzazione in un documento viene chiusa ovvero finestra/Chiudi) il documento verrà chiuso.
CDocument::AddView, interfaccia di RemoveView viene utilizzato per gestire l'elenco di visualizzazione.CDocument è friend di CView pertanto è possibile impostare il puntatore della parte finale di CView::m_pDocument .
CFrameWnd
CFrameWnd (anche noto come un frame) riproduce lo stesso ruolo di in MFC 1,0, ma ora la classe di CFrameWnd è progettato per essere utilizzato in molti casi senza derivare una nuova classe.Le classi derivate CMDIFrameWnd e CMDIChildWnd sono anche avanzate consentire a diversi controlli standard già distribuite.
CFrameWnd è responsabile della creazione di finestre area client del frame.In genere c " è una finestra principale che riempie l'area client del frame.
Per una finestra di MDI-Frame, l'area client viene soddisfatta di controllo di MDICLIENT che è a sua volta il 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 viene riempita con CViewoggetto derivato dalla finestra.Nel caso di CSplitterWnd, l'area client di visualizzazione viene soddisfatta di oggetto finestra di CSplitterWnd e di CView- gli oggetti derivati della finestra (uno per il riquadro diviso) vengono creati come finestre figlio di CSplitterWnd.