- - PR -
EXEに埋め込んだアイコンリソースをstdole.IPictureDispに変換する方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-14 22:03
いつもお世話になっています。こんです。
C#のアイコンリソース(System.Drawing.Icon)を stdole.IPictureDisp型に変換する方法について教えてください。 なぜこのような質問をしたかと言いますと ある地図開発キットをお試し版で使用しているのですが その地図上にアイコンを登録するAPIが公開されていて その引数がIPictureDisp型でした。 なのでIconをIPictureDispに変換したいと思っています。 自分なりに色々調べて、下記のサイトまでたどりついたのですが http://forum.shelek.com/index.php?topic=6987.0 ここのソースを実行しますとIconConverterのコンストラクタで 「ArgumentNull_String」というエラーが発生し落ちてしまいます。 コンストラクタのbase(null)で落ちるようです。 このエラーを回避するにはどうすればいいのか? そもそももっと別な方法があるのか確認したいと思ってます。 申し訳ないのですが何かヒントを頂けないでしょうか? ちなみにActiveXなどの知識は全くありません。。。(すみません。。。) // 呼び出し側はこんな感じです。 IconConvert convert = new IconConvert(); サイトではIconConvertクラスがシングルトンを想定してるのか コンストラクタがprivateになっていましたがとりあえずpublic宣言に変更 して試してみました。 よろしくお願いいたします。 | ||||
|
投稿日時: 2006-02-14 22:07
自己レスです。
// ↓ すいません。下記は気にしないでください。 // シングルトンとか意味もなく書いてしまいました。。。 サイトではIconConvertクラスがシングルトンを想定してるのか コンストラクタがprivateになっていましたがとりあえずpublic宣言に変更 して試してみました。 | ||||
|
投稿日時: 2006-02-14 22:48
すいません。またまた自己レスです ^^;
解決しました。 サイトに記述されてるメソッドはstatic宣言だったので 呼び出し方を以下のようにすれば上手くいきました。 IconConverter.GetIconByName() というかサイトには呼び出し側のコードも書いてあって この通りにしなかったのが悪かったのかもしれませんけど。。。 なぜstaticにしないとダメなのかはわからないのですが 今の所上手く地図にもアイコンが表示されるようになったのでOKです! (System.Windows.Forms.AxHostを継承してるからこれが関係してるのかな。。。) というわけでご迷惑おかけしました。 | ||||
|
投稿日時: 2006-02-15 01:42
例のサイトの実装は、コンストラクタを隠蔽化したいだけのように見えますね。 インスタンス化する場合は、CLSID "59EE46BA-677D-4d20-BF10-8D8067CB8B33" 渡すのかな? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-16 18:41
じゃんぬさん、こんばんは!
ありがとうございます。 CLSIDの件、了解しました。 折を見て調べたいと思います。 いつもすみません。 ありがとうございました! |
1