質問

私はまだMFCのデータ収集プログラムに取り組んでおり、ドキュメント/ビューアーキテクチャと協力して動いています。基本的に、アプリケーションにいくつかのウィンドウがあることを望んでいます。 1つは、高速カメラから記録されたビデオを表示するために使用され、もう1つはDAQシステムからデータを表示するプロットがあり、もう1つはカメラとDAQなどを構成するためのコントロールがあります。

そのため、実際には、通常は異なるソースからのデータの一部を示すモデルのないウィンドウがたくさんあります。さて、アプリウィザードを通過して使用して、ドキュメント/ビューのものと混同されます。それはさておき、私はモードレスダイアログとフォームビューをすべて成功させないようにしようとしました。ほとんどの場合、新しいビューを開く方法を理解できません。ドキュメントはあまり役に立ちません。リボンボタンコマンドからモーダルプロットのダイアログを開くことができましたが、それを成功としてマークしましたが、正確に必要なものではありません。

そのため、私のアプリケーションをドキュメント/ビューアーキテクチャに適合させるか、別のアプリケーション内からモードレスダイアログまたはフォームビューを開くことについて、誰かが有益な洞察を持っていますか。 Microsoft Visual Studio 2010を使用しており、MFCとC ++を使用していると思います。

編集:

そのため、MDIを使用して、表示するすべてのデータを処理するドキュメントが1つあります。私が今立ち往生しているのは、私が望む複数のウィンドウを作成する方法です。 cformviewをドキュメントのグラフビューにするように想定しており、[メニュー]ボタンをクリックすると、そのウィンドウを作成しようとしています。私はこのようなモーダルダイアログでそれを行うことができました:

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

それはうまくいきましたが、私が望むものではなかったので、私はこれを試しましたが、まったくうまくいきませんでした:

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

}

これは、未解決の例外を引き起こすだけです。私は本当にブルートフォーフォーフォー・フォー・フォー・ズ・その時点で、ドキュメントコードのさまざまなほとんど役に立たないセクションを見つけて、それを私が必要と思うものに変更しました。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top