2

我正在编写我的文本框控件,我尝试进行选择,所选文本将以浅蓝色背景显示,然后我注意到背景有时会超过其他字母,所以我检查了它,正如您将在下面的例子,我发现该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);

这段代码写字母,一个白色背景,一个浅蓝色背景,依此类推。

在此处输入图像描述

正如您在输出图像中看到的,第二个字母的背景,被第三个字母的背景覆盖。
有没有办法防止添加背景?

4

0 回答 0