ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
■ このスレッドは過去ログ倉庫に格納されています
0222201
NGNGどうもありがとうです。参考にして試してみたら、
キャレット位置に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;
■ このスレッドは過去ログ倉庫に格納されています