画像ファイルをドロップすればRichTextBoxに画像を挿入することができますが、ダブルクリックしても編集することができません。編集可能なbmpオブジェクトを挿入するためにはどうすればいいのでしょうか?

参照の追加でMicrosoft.VisualStudio.OLE.Interop.dllを追加しておく必要があります。また

をいれておきましょう。

IRichEditOleインターフェイスを取得する
IRichEditOle.InsertObjectメソッドを実行

これで可能ですが、そのためにはInsertObjectメソッドに渡すREOBJECTのメンバーをセットする必要があります。

IRichEditOleを取得する方法

まずIRichEditOleインターフェイスを取得する必要があります。

このなかにGETOBJECTOPTIONSとかGETCLIPBOARDDATAFLAGSがあります。そこで

も必要です。

またAPI関数も使うので以下を記述します。

まず、IRichEditOleを取得するには

これで取得できます。

IOleClientSiteを取得する方法

IRichEditOleが取得できたらIOleClientSiteを取得します。

とやればIOleClientSiteも取得できます。

IStorageを取得する方法

またIStorageは

IOleObjectを取得する方法

IOleObjectはIOleClientSiteとIStorageを利用して

で取得できます。

ClassIDを取得する方法

ClassIDはIOleObjectを利用して

仕上げ

あとはこれらをREOBJECTにセットします。

そしてInsertObjectを実行します。

終わったら後片付け。

よく使うかもしれないのでライブラリ化してもいいかも