在静态控件中,为什么文本周围有一个紧密的矩形?

In a static control,why is there a tight rectangle surrounding the text?

我用静态控件写在window。通常,我将背景色保持为白色,在 WM_CTLCOLORSTATIC 消息中设置我的静态控件的颜色就足够了(黑色书写,背景白色)。 现在,为了提供更现代的视觉效果,我尝试将 DKGRAY 颜色用于 window 和静态控件,并用白色书写:

case WM_CTLCOLORSTATIC:
    HDC hdcStatic = (HDC)wParam;
    SetTextColor(hdcStatic, RGB(255, 255, 255));
    SetBkColor(hdcStatic, DKGRAY_BRUSH);
    return (INT_PTR)GetStockObject(DKGRAY_BRUSH);

它几乎可以正常工作: - 文字颜色为白色:好 - 静态控件的背景是深灰色:好 - 但是 文本写在一个黑色的紧矩形内:文本周围的这个紧矩形是什么????它从何而来 ?我怎样才能改变它的颜色?

作为参考,这里有一个在主 window 的 WM_CREATE 消息中创建静态控件的示例:

    hsStatic1 = CreateWindowEx(0, L"STATIC", L"Fichier :", WS_CHILD | WS_VISIBLE, 15, 5, 60, 20, hWnd, (HMENU)ID_STATIC1, (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), nullptr);

谢谢。

DKGRAY_BRUSHGetStockObject 的神奇值,它不是可以传递给 SetBkColor() 的 RGB 颜色。

您需要确定 DKGRAY_BRUSH 的 RGB 值并在调用 SetBkColor() 时使用它,或者选择要使用的特定 RGB 值并使用 [=15= 创建您自己的画笔].