none
MFCと対照すべきものは.Net Frameworkのクラスライブラリー RRS feed

  • 全般的な情報交換

  • 外池と申します。他のスレッドでご迷惑をおかけした罪滅ぼしに、あくまで拙見ですが、要点を整理しておきます。皆様の技術的検討の一助になれば幸いです。

    • C++とC++/CLIの比較は、大いに結構。言語仕様の比較です。新たなメモリ管理方式の導入に伴う拡張が行われていることがC++/CLIの特徴(特に「^」マークの使い方)で、 逆に、それ以外は、ほとんど同じものと考えています。
    • MFCとCLRの比較は、私にはとてもナンセンスに感じられます。CLRは、C++/CLIや他の言語がコンパイルの結果吐き出すコードとその実行環境に関する概念であって、プログラミングで利用するクラスライブラリーとは縁遠いもののように思われます。
    • MFCと直接比較すべきは、.Net Frameworkで提供されているクラスライブラリーだと思います。私の場合、測定器から流れ込んでくるデータのグラフィカルな描画が主な応用分野なのですが、MFCに存在していたGUI用のクラスは、ほぼ相当するものが.Net Frameworkには存在しています。では、MFCのドキュメント/ビューアーキテクチャ(CDocumentやCViewなど)に相当するクラスが.Net Frameworkに存在するか? については私にはよくわかりません。2.0までは、ちょっと見当たらないように思われますが、3.0や3.5で提供されているWPF、WCF、WFは、非常に進化した形のものかな? と想像しています。

     

    2008年2月19日 0:34

すべての返信

  • > では、MFCのドキュメント/ビューアーキテクチャ(CDocumentやCViewなど)に相当するクラスが

    > .Net Frameworkに存在するか? については私にはよくわかりません。

     

    Document/Viewに代表されるObserverパターンについては言語が持つdelegate/eventでさっくり実現できちゃってるからわざわざクラスを起こさいでも、ってことじゃないかと思ってますです。

     

    2008年2月19日 1:15
  • こんにちは。私もその辺りで悩んでいるものです。MFCで作成されたアプリケーションを移植する場合にとても憂鬱なのです。エピステーメーさんの仰る事はCDocument::UpdateAllViews()などのメカニズムは簡単に出来ると言うことでしょうけど...

    要するに対応するようなフレームワークを作成すると言うことですかね。

     

    2008年2月19日 6:09
  • 要は

    コッチ側で Document::UpdateAllViews すれば
    アッチ側の View:SurprisenUpdate に火が付けばいいわけだから、

    MFC風に味付けすれば:

    Code Snippet

    interface IView {}


    delegate void Update(IView sender, int lHint, object rHint);

     

    class abstract Document {

      public event OnUpdate;

      public void UpdateAllViews(IView sender, int lHint, object rHint) {

        OnUpdate(sender,lHint,rHint);

      }

    }


    たったこれだけでキモは完成ですから。

    2008年2月19日 7:03
  • 返信ありがとうございます。

    エピステーメーさんの以前書かれた記事にその辺りの事は書かれていたので

    理解はしています。

    しかし、MFCで書かれたアプリケーション全体を移行させようとすると、

    CDocument,CVeiw,CDocTemplateなどで実装されていたpublic関数やvirtual関数などを

    備えた基底クラスを自分で用意する必要が出てくると思います。

    確かに、MFCが設計された当時の環境に比べると沢山の部品の山があって

    実装する作業は楽にはなっていると思うのですが、

    .Net FrameworkはまだMFCによって実現されていた多くの部分が欠けているため

    私にはその部分を作る必要があるように思います。

    マイクロソフトがその内やってくれると期待しているのですが、

    当面従来のMFCアプリケーションの資産はそのままMFCで継続させなさい。

    というメッセージを出しているように思えます。

    新しく出すならMFCを超えたものでなくてはならないし、それはもう少し時間が必要なのでしょう。

    とすると、Viewだけでも.Net Frameworkを使いたいと思うのですがね。

     

     

    2008年2月19日 20:52
  • > 当面従来のMFCアプリケーションの資産はそのままMFCで継続させなさい。

    > というメッセージを出しているように思えます。

     

    それはその通りじゃないかしら。
    VC++9のFeaturePackもその証左に思えます。

     

    > Viewだけでも.Net Frameworkを使いたいと思うのですがね。


    それは実現していると考えていいかと。
    現MFCではWindowsFormをそのままViewに貼り付けられますし。

    2008年2月19日 21:27
  • エピステーメーさん御丁寧な返信ありがとうございます。

     

    >現MFCではWindowsFormをそのままViewに貼り付けられますし。

    現在業爆中なのでちょっと直ちには調べられないのが残念です。

    VS2008ではVS2005とその辺りに違いがあるということですか?

    参考になるテキストがあれば御紹介いただけるとありがたいです。

     

    2008年2月20日 21:04
  • CWinFormsView クラスが追加されてます。


    http://msdn2.microsoft.com/ja-jp/library/6xfx8bsa.aspx

    2008年2月21日 4:31
  • 感謝!ビバVS2008

    昨年、VS2005を調査して移行を検討していたのですが、

    これでようやくVS6から足が洗えそうです。

     

    エピステーメーさん情報ありがとう。

     

     

    2008年2月21日 6:00