私はテキストボックスコントロールを書いていて、選択したテキストが水色の背景で表示されるように選択しようとしましたが、背景が他の文字の上を時々通過することに気付きました。次の例では、TextOut
関数が背景にマージンを追加することがわかりました。
これはサンプルコードです:
グローバル変数:
int WritePosition = 0;
bool color;
そしてコード:
case WM_CHAR:
hdc = GetDC(hWnd);
SetMapMode(hdc, MM_HIMETRIC);
wchar_t wch;
wch = (wchar_t)wParam;
SIZE size;
GetTextExtentPoint32(hdc, &wch, 1, &size);
if(color)
SetBkColor(hdc, RGB(190, 210, 236));
color = !color;
TextOut(hdc, WritePosition, 0, &wch, 1);
WritePosition += size.cx;
ReleaseDC(hWnd, hdc);
このコードは文字を書き込みます。1 つは白い背景、もう 1 つは水色の背景などです。
出力画像でわかるように、2 番目の文字の背景は 3 番目の文字の背景に覆われています。
背景の追加を防ぐ方法はありますか?