- 締切済み
複数のドキュメントテンプレートを作成してから....
MFCプログラミングにおいてMDIアプリケーションを作っています このアプリケーションではbmpやjpegなど、複数の画像のビューワーの役割をさせようと思っています CMainAppの派生クラスC**AppのIintInstance関数内で CMultiDocTemplate* pDocTemplate; を削除し C**Appのパブリックメンバ変数として CMultiDocTemplate* m_ptTemplate1; //bmp用 CMultiDocTemplate* m_ptTemplate2; //jpeg用 として定義しなおし 最後に AddSocTemplate(m_ptTemplate1); AddSocTemplate(m_ptTemplate2); を行いました ここまではなんとか出来たのですが、この次の段階で困っています アプリケーションを立ち上げてから [開く]で画像ファイル(bmpかjpeg)を開いた場合、 その動作を順に見て見ると CWinApp::onFileNew関数内 m_pDocManager->OnFileNew(); ↓ CDocManager::OnFileNew関数内 CDocTemplate* pTemplate= (CDocTemplate*)m_templateList.GetHead(); となっていました これだとbmpを選んでもjpegを選んでも GetHead関数によって、ドキュメントテンプレートは m_ptTemplate2になってしまいます これを避けるためにはやはり、 [開く]からbmpを選んだ場合とjpegを選んだ場合とで メッセージを変えて、 bmpならOnFileBmpNew関数へ jpegならOnFileJpegNew関数へ飛ぶように C**Appで独自のメンバ関数を作るべきでしょうか? またどのようにしてm_pDocManagerのどの位置にm_ptTemplate1とm_pTemplate2が格納されているか特定することができるのでしょうか? ここまでの疑問はbmp、jpegについてドキュメントテンプレートを分けて、 そのテンプレートをリスト管理するドキュメントマネージャーは同じものを使っていましたが、 もしかして、bmp、jpegについてのドキュメントマネージャーも分ける必要があるのでしょうか? ご教授よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
お礼
コメントありがとうございます。 記述に間違いがあって、混乱させてしまって申し訳ないです; CMultiViewSingleDocTemplateのコンストラクタの引数の意味を考えたことがなかったので、もう一度調べ直してみます。ご指摘ありがとうございます。MFCを使っての開発ははじめてなので色々とまどいもありますが、ドキュメント/ビュー構造はとても面白いと思ってまして、日々精進したいと思います。