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するとそのメールをエクスポート(逆も)みたいな機能も欲しいところ。って前にも書いた気がしますね。