掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
API実現と「タイプライブラリ」実現の違いとは? (ID:79950)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 内部的にはAPIを呼び出している事には変わり無いので K.J.K.さんの書かれたサンプルを、私が解説するというのは烏滸がましいので……自分の書いたコードを例にして解説してみます。 例えば、IEの履歴を処理するインターフェイスとして、IUrlHistoryStg2という物があります。 これには「履歴のクリア」を行う ClearHistoryメソッドという物が用意されています。 例えば、タイプライブラリを利用して呼び出す場合は、以下のように、わずか数行で済ますことができます。 http://groups.google.co.jp/groups?selm=0c1d01c341c8%2479685090%24a001280a%40phx.gbl&oe=UTF-8&output=gplain ところが、これをタイプライブラリ無しで(COM APIの直接呼び出しで)実現しようとすると、以下のように、非常に長い物となってしまいます。(^_^;) http://codeguru.earthweb.com/mfc/comments/45982.shtml 上記のサンプル2つを比べてみてください。 hr = CoCreateInstance(〜, lngPUrlHistoryStg2) の部分は、 Set UrlHist = New 〜 に相当します。 そしてその後の、 hr = DispCallFunc(lngPUrlHistoryStg2, vtblOffsetClearHistory, 〜) が、 UrlHist.ClearHistory に相当します。 そして最後の hr = DispCallFunc(lngPUrlHistoryStg2, vtblOffsetRelease, 〜) は、 Set UrlHist = Nothing となります。 ショートカット作成の場合は、上記 IUrlHistoryStg2.ClearHistory の場合と異なり、複数のインターフェイスを利用する必要がある(しかも、メソッドに幾つかの引数を指定しなければならない!)ので、さらにややこしいコードを書く事になりますが、原理はほぼ同じです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.