WinAPI 工具栏文本颜色

WinAPI ToolBar Text Color

我目前正在编写一个程序,该程序利用 WinAPI 工具栏在 Window 的顶部显示一个菜单。使用 DarkMode_Explorer 风格

SetWindowTheme(Script, L"DarkMode_Explorer", nullptr);

我正在使工具栏的背景为深色模式变为灰色。但是,工具栏按钮文本仍然是黑色的。如何将其颜色更改为红色、绿色或白色?

如你所见,全是黑色。我希望文本是不同的颜色(红色、绿色、白色、紫色,应该都是可能的)。我根本找不到办法做到这一点,阅读文档,什么都没有。

我明白了。你应该可以在WM_NOTIFY->NM_CUSTOMDRAW中处理它。将 LPNMTBCUSTOMDRAW clrText(文本颜色)设置为所需的颜色。您也可以在那里指定字体。

case WM_NOTIFY:
{
    switch (lpnm->code)
    {
        case NM_CUSTOMDRAW:
        {
            LPNMTBCUSTOMDRAW data_ptr = (LPNMTBCUSTOMDRAW)lParam;
            if (data_ptr->nmcd.hdr.hwndFrom == ToolBar) {
                switch (data_ptr->nmcd.dwDrawStage)
                {
                    case CDDS_ITEMPREPAINT: {
                        SelectObject(data_ptr->nmcd.hdc, GetFont(L"Microsoft Sans Serif", 15));
                        FillRect(data_ptr->nmcd.hdc, &data_ptr->nmcd.rc, CreateSolidBrush(RGB(44, 44, 44)));
                        data_ptr->clrText = RGB(228, 228, 228);
                        return CDRF_NEWFONT;
                    }
                    case CDDS_PREPAINT:
                    {
                        return CDRF_NOTIFYITEMDRAW;
                    }
                }
            }
        }
    }
}

确保将您的工具栏主题设置为删除视觉样式,否则它将不起作用。

SetWindowTheme(ToolBar, L"", L"");