Domanda

Sto ancora lavorando a un programma di acquisizione di dati in MFC e sto bloccato lavorando con l'architettura documento/visualizzazione. Fondamentalmente, voglio che la mia applicazione abbia un paio di finestre. Uno viene utilizzato per mostrare un video registrato da una fotocamera ad alta velocità, un altro ha un diagramma che mostra i dati dal sistema DAQ e forse un altro ha controlli per la configurazione della fotocamera e DAQ, ecc.

Quindi, davvero ho molte finestre moderate che mostrano ciascuna una parte dei dati, di solito da una fonte diversa. Ora, passando e usando la procedura guidata dell'app mi confongo con le cose Doc/View, e anche se posso spegnerlo, non è tecnicamente spento. Ora a parte, ho provato a aprire dialoghi e forme senza successo. Principalmente non riesco a capire come aprire la nuova vista, la documentazione non è davvero utile. Sono stato in grado di aprire una finestra di dialogo di tracciamento modale da un comando pulsante a nastro e lo segnerò come un successo, ma non esattamente quello di cui ho bisogno.

Pertanto, qualcuno ha una visione utile del adattamento della mia applicazione all'architettura DOC/Visualizza o all'apertura di una finestra di dialogo o di FormView Modeless Entro un'altra applicazione. Dovrei dire che sto usando Microsoft Visual Studio 2010 e sto usando MFC e C ++.

MODIFICARE:

Quindi, sono andato con MDI e avrò un documento che gestisce tutti i dati da mostrare. Quello su cui sono bloccato ora è come creare le finestre multiple che desidero. Ho sublcassato CformView per essere la vista grafica del documento e sto provando a creare quella finestra quando faccio clic su un pulsante di menu. Sono stato in grado di farlo con un dialogo modale, come questo:

void CDAQUniversalApp::OnScopebtn()
{
    // TODO: Add your command handler code here
    CScopeDlg dlg = new CScopeDlg(); //CScopeDlg is Subclass of CDialog
    dlg.DoModal();
}

Funzionava, ma non quello che voglio, quindi ho provato questo e non ha funzionato affatto:

    m_pScopeTemplate = new CMultiDocTemplate(
        IDD_SCOPEFORMVIEW,
        RUNTIME_CLASS(CDAQUniversalDoc),
        RUNTIME_CLASS(CMDIChildWnd),
        RUNTIME_CLASS(CScopeFormView)); //Subclass of CFormView
    if (!m_pScopeTemplate)
        return FALSE;

void CDAQUniversalApp::OnScopebtn()
{
    // TODO: Add your command handler code here
    CMDIChildWnd* pFrame = NULL;
    pFrame = DYNAMIC_DOWNCAST(CMDIChildWnd, CWnd::GetActiveWindow());
    CMDIChildWnd *pScopeFrame = (CMDIChildWnd*)m_pScopeTemplate->CreateNewFrame(pFrame->GetActiveDocument(), NULL);
    if (pScopeFrame == NULL)
        return;
    m_pScopeTemplate->InitialUpdateFrame(pScopeFrame, pFrame->GetActiveDocument(), TRUE);

}

Questo provoca solo un'eccezione non gestita. Mi sono davvero fatto strada a quel punto trovando varie sezioni in gran parte inutili del codice di documentazione e modificandolo in ciò di cui penso di aver bisogno.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top