• ベストアンサー

COMについて

VisualC++.netでCOMを作成する場合 基本的にMFCかATLベースになるわけですよね? 両者、違いがあるとするとなんでしょうか? 新規にCOMを作成するならMFCよりATLでしょうか? COMについて全く知識がありません。。 何故COMにするのか、COMにするメリット、デメリットはなんなのか等 メリットとして色々な言語から呼び出せる。 デメリットとしてレジストリに登録する必要がある。 といったところでしょうか? 宜しくお願い致します。 またCOMについてお勧めの書籍やサイトがあったら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

ATLとMFCの両方に存在する機能を使う場合、ATLを使うほうが生成されるCOMコンポーネントのサイズが小さくなります。これがMFCに対するATLのメリットです。 しかしMFCの機能がすべてATLにも存在するわけではありませんので、ATLを使っていて「あーここでMFCが使いたい!」ということもあり得ます。例えば、VC++.NETになる前(VC++6まで)はMFCのみでCStringクラスが使用できたので、ATLでCStringを使いたくなっても(なりますよね?(笑))、MFCを使わないという選択をしている限りCStringは使えませんでした。MFCとATLを共用することは可能ですが、そうすると「COMコンポーネントのサイズが小さくなる」というメリットはなくなってしまいます。 COMそのもののメリットは・・・あまりに幅広すぎて私の能力では説明が難しいので、他の方にお譲りします。

furyfox
質問者

お礼

いつも的確な回答有り難うございます。 とりわけATLの方が良いという事は無いようですね。 まだちょっと勉強しただけなのですが Comの存在理由(メリット)が少しは分かったと思います。 >ATLでCStringを使いたくなっても(なりますよね?(笑))、 私の場合MFCを避ける傾向があって むしろstd::basic_string<TCHAR>を使ってしまいます。 最近は好き嫌いをいっていられないのですが・・・(泣)

関連するQ&A