Question

Je travaille toujours sur un programme d'acquisition de données dans MFC et je suis coincé à travailler avec l'architecture document / vue. Fondamentalement, je veux que mon application ait quelques fenêtres. L'un est utilisé pour afficher une vidéo enregistrée à partir d'une caméra à grande vitesse, une autre a un tracé affichant des données du système DAQ, et peut-être qu'un autre a des contrôles pour configurer l'appareil photo et DAQ, etc.

Donc, j'ai vraiment beaucoup de fenêtres sans modes montrant chacune une partie des données, généralement à partir d'une source différente. Maintenant, en passant par l'assistant d'application, je suis confondu avec les trucs Doc / View, et même si je peux l'éteindre, ce n'est pas techniquement éteint. Maintenant qu'à part, j'ai essayé d'ouvrir des dialogues et des formes sans succès sans succès. La plupart du temps, je ne peux pas comprendre comment ouvrir la nouvelle vue, la documentation n'est pas vraiment utile. J'ai pu ouvrir une boîte de dialogue de tracé modale à partir d'une commande de bouton de ruban et je marque cela comme un succès, mais pas exactement ce dont j'ai besoin.

Ainsi, quelqu'un a-t-il un aperçu utile de l'ajustement de mon application à l'architecture DOC / View ou d'ouvrir une boîte de dialogue ou uneVie sans moche à partir d'une autre application. Je devrais dire que j'utilise Microsoft Visual Studio 2010 et j'utilise MFC et C ++.

ÉDITER:

Donc, je suis allé avec MDI et j'aurai un document qui gère toutes les données à afficher. Ce sur quoi je suis coincé maintenant, c'est comment créer les multiples fenêtres que je veux. J'ai sulcassaté CFormView pour être la vue du graphique du document, et j'essaie de créer cette fenêtre lorsque je clique sur un bouton de menu. J'ai pu le faire avec une boîte de dialogue modale, comme ceci:

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

Cela a fonctionné, mais pas ce que je veux, alors j'ai essayé cela, et cela n'a pas fonctionné du tout:

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

}

Cela ne fait que provoquer une exception non perdue. Je me fraye vraiment un chemin vers ce point pour trouver diverses sections largement inutiles de code de documentation et la modifier à ce dont j'ai besoin.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top