Я искал в сети, ища способ установить цвет фона диалогового элемента управления.
Мне удалось сделать это с помощью этого кода:
case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(255,255,255));
SetBkColor(hdcStatic, RGB(0,0,0));
if (hbrBkgnd == NULL)
{
hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
}
return (INT_PTR)hbrBkgnd;
}
Однако то, что я на самом деле ищу, это раскрасить только определенный статический элемент управления, а не все статические элементы управления, которые есть в моем диалоговом окне. Есть какой-либо способ сделать это? Возможно, установить hdc на что-то, используя GetDlgItem (hdlg, "IDC_MYCONTROL")?
- ОБНОВЛЕНИЕ
После предложений я закончил с этим:
case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) lParam;
HWND hWnd = (HWND)lParam;
HWND dlg =GetDlgItem(hDlg, IDC_STATIC2);
if (hWnd == dlg)
{
SetTextColor(hdcStatic, RGB(255,255,255));
SetBkColor(hdcStatic, RGB(0,0,0));
}
if (hbrBkgnd == NULL)
{
hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
}
return (INT_PTR)hbrBkgnd;
}
И кажется, что даже если SetBkColor запущен, в диалоговом окне ничего не изменится, что приведет к странной проблеме, описанной ниже.