Lish : DoDragDrop

D&Dを作ろうとして、IDataObjectとIDropSourceを作って、DoDragDropを呼んだら、意味の分からないエラーで失敗して困っていた。
なんか、"CoInitialize has not been called"みたいな。
しかし、CoInitializeとか呼んでもエラーが解消しない。こんなテストで確認できる。

procedure TForm1.Button1Click(Sender: TObject);
var
 R: Integer;
 Res: HRESULT;
begin
 CoInitialize(nil);
 Res := DoDragDrop(nil, nil, 0, R);
 ShowMessage(IntToStr(Res));
 CoUninitialize();
end;

結局、CoInitializeではなく、OleInitializeをしなければならないということに気づく。