2002-06-13 84483 [長年日記]

DnD

DnDのフレームワークのWindows側は出来上がり。結局OLD DnDのAPIとJava DnDのAPIが混じったようなAPIになってしまったけれど、当面は問題なさそうなのでこのままで。

OLD DnDってIDataObjectをいちいち実装しなくてはいけないのが面倒。JavaならSerializableにするだけでいいのに。.Netでもそうかな?

ついでにちょっとメモ。OLD DnDするにはCoInitializeExではなくてOleInitializeを呼ばなくてはいけないようです。呼んでないとRegisterDropTargetするとエラーになります。DoDragDropはエラーにならないのに。しかもエラー番号が良くわからん番号なので、知らないとはまる可能性大かも。

CE側はDoDragDropとRegisterDropTarget、RevokeDropTargetを自前で処理(インプロセスのみだけど)して、IDropSourceとIDropTargetのイベントを使う代わりに、作ったAPIのイベントハンドラを直呼び出しにする感じで。

どうせなら

リストビューからシェルにDnDするとそのメールをエクスポート(逆も)みたいな機能も欲しいところ。って前にも書いた気がしますね。