IMEの文字列入力時のカーソル位置の表示(C言語)

キーワード:

GetDC, GetClientRect, FillRect, ImmGetContext, ImmGetCompositionString, TextOut, ImmReleaseContext, ReleaseDC

サンプルコード:

void DispCompCursorPos(hDispWnd, hTargetWnd)
HWND hDispWnd; /* 情報を表示するウィンドウ */
HWND hTargetWnd; /* 情報を取得するウィンドウ */
{
	HIMC hImc;
	char InfoMsg[BUFMAX];
	LONG CursorPos;
	HDC hDC;
	RECT r;

	/* 表示領域の初期化 */
	hDC = GetDC(hDispWnd);
	GetClientRect(hDispWnd, &r);
	FillRect(hDC, &r, (HBRUSH)GetStockObject(DKGRAY_BRUSH));

	/* 入力コンテキストの取得 */
	hImc = ImmGetContext(hTargetWnd);

	/* カーソル位置取得 */
	CursorPos = ImmGetCompositionString(hImc, GCS_CURSORPOS, NULL, 0);

	/* カーソル位置表示 */	
	wsprintf(InfoMsg, "    カーソル位置: %d", CursorPos);
	TextOut(hDC, 0, 0, InfoMsg, lstrlen(InfoMsg));

	/* 入力コンテキストの解放 */
	ImmReleaseContext(hTargetWnd, hImc);

	/* 後処理 */
	ReleaseDC(hDispWnd, hDC);
}
(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。