Pregunta

Todavía estoy trabajando en un programa de adquisición de datos en MFC y me estoy atascando trabajando con la arquitectura del documento/vista. Básicamente, quiero que mi aplicación tenga un par de ventanas. Uno se usa para mostrar un video que se graba desde una cámara de alta velocidad, otro tiene un diagrama que muestra datos del sistema DAQ, y tal vez otro tiene controles para configurar la cámara y DAQ, etc.

Entonces, realmente tengo muchas ventanas sin modificación, cada una que muestra una parte de los datos, generalmente de una fuente diferente. Ahora, al pasar y usar el asistente de aplicaciones, me confundí con las cosas de doc/ver, y aunque puedo apagarlo, no está técnicamente apagado. Ahora que aparte, he intentado abrir diálogos modernos y Formviews sin éxito. Sobre todo no puedo entender cómo abrir la nueva vista, la documentación no es realmente útil. He podido abrir un diálogo de trazado modal desde un comando de botón de cinta y lo marca como un éxito, pero no exactamente lo que necesito.

Por lo tanto, ¿alguien tiene una visión útil de ajustar mi aplicación a la arquitectura DOC/View o abrir un diálogo o FormView modal de otra aplicación? Debo decir que estoy usando Microsoft Visual Studio 2010 y estoy usando MFC y C ++.

EDITAR:

Entonces, he ido con MDI y tendré un documento que maneja todos los datos que se mostrarán. En lo que estoy atrapado ahora es cómo crear las múltiples ventanas que quiero. SUBLECE CFORMVIEW para ser la vista gráfica del documento, y estoy tratando de crear esa ventana cuando hago clic en un botón de menú. Pude hacerlo con un diálogo modal, como este:

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

Eso funcionó, pero no lo que quiero, así que probé esto, y no funcionó en absoluto:

    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);

}

Esto solo causa una excepción no controlada. Realmente me abrí camino bruto hasta ese punto encontrando varias secciones en gran parte inútiles de código de documentación y modificándolo a lo que creo que necesito.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top