在静态控件中,为什么文本周围有一个紧密的矩形?
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_BRUSH
是 GetStockObject
的神奇值,它不是可以传递给 SetBkColor()
的 RGB 颜色。
您需要确定 DKGRAY_BRUSH
的 RGB 值并在调用 SetBkColor()
时使用它,或者选择要使用的特定 RGB 值并使用 [=15= 创建您自己的画笔].
我用静态控件写在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_BRUSH
是 GetStockObject
的神奇值,它不是可以传递给 SetBkColor()
的 RGB 颜色。
您需要确定 DKGRAY_BRUSH
的 RGB 值并在调用 SetBkColor()
时使用它,或者选择要使用的特定 RGB 值并使用 [=15= 创建您自己的画笔].