>>219
どうもありがとうです。参考にして試してみたら、
キャレット位置にIMEウィンドウを表示することが出来ました。

uses IMM;

...
TForm1 = class ...
...
public
 procedure IMEStart(var AMessage: TMessage); message WM_IME_STARTCOMPOSITION;
end;

procedure TForm1.IMEStart(var AMessage:TMessage);
var
 CompForm: TComPositionForm;
 CaretPos: TPoint;
 LF: LogFont;
 ImmContext:HIMC;
begin
 ImmContext := ImmGetContext( Handle );

 //キャンバスのフォントと同じに設定する
 GetObject( Canvas.Font.Handle, sizeof(LogFont),@LF);
 ImmSetCompositionFont( ImmContext, @LF);

 //キャレットのポジションに設定する
 ImmGetCompositionWindow( ImmContext, @CompForm );
 CompForm.dwStyle := CFS_POINT;

 //キャレット位置を取得
 GetCaretPos( CaretPos );
 CompForm.ptCurrentPos := CaretPos;
 ImmSetCompositionWindow( ImmContext, @CompForm);
 ImmReleaseContext( Handle, ImmContext);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 //キャレットの位置を設定
 CreateCaret( Handle, 0, 2, 16 );
 ShowCaret( Handle );
 SetCaretPos( 10, 20 );
end;