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"");
我目前正在编写一个程序,该程序利用 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"");