Chapter.1.1

IDataObjectの使い方2


2004/6/24
 ・サンプルソースで、構造体変数をNewで初期化しているものをNewしないように修正。

前回、コーディングを複雑にしないため、OLE仕様では必須の実装を飛ばして作ったんですが、 結局、これが原因でPDFファイルを表示できていないことが判明しました。 仕方ないので、CF_METAFILEPICT形式のデータを扱えるように、修正することにしましょう。

CF_METAFILEPICT形式のデータは、METAFILEPICT構造体がグローバルメモリ(HGLOBALって表現されるアレです)に格納された形式を取ります。 これをVB.NETからプラットフォーム呼び出しで取り出すのが、めんどくさかったので、割愛したんですが・・・。



VB.NETサンプルソース:chap1_1.vb.lzh(18KB未満 2004/06/24)

で、実際に作成して動かしてみた画面です・・・。

うぉい!コレだけかい!!(笑
せっかく作ったのに、悲しい結果です。ExcelがOLEサーバとして優れている理由を分かって頂けたでしょうか?

OLEの世界はこんな感じです。標準仕様に準拠しないとこんな目に遭います。 が、標準仕様に準拠してても、こんな目に遭うこともよくあります。 なぜなら世間一般のOLEサーバが、標準仕様に準拠していないことがよくあるからです。 多くのOLEサーバに対応したソフトを作ろうとするとサーバの種類ごとに多量のif文を書くはめになります。 今回の件は、標準仕様を普通に実装しただけの話なので、大した苦労ではないですね。



CF_BITMAP形式のデータを扱えるようにすれば、IDataObjectの標準仕様に準拠することになりますが、 それは読者への課題として残しておきましょう。(言い訳


前へ 次へ
OLE on .NET Frameworkへ
総合トップへ