win32sdk编程如何改变一个static控件上文字的字体和颜色
关于对话框中要处理的控件的ID是IDC_MYSTATIC
// “关于”框的消息处理程序。
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static HFONT hfont_static; // 自定义字体的句柄
static HWND hwnd_static; // Static 控件的句柄
switch (message)
{
case WM_INITDIALOG:
// 建立自定义字体
LOGFONT lgf;
GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(lgf), &lgf);
lgf.lfWeight = FW_BOLD;
hfont_static = CreateFontIndirect(&lgf);
// 设置字体
hwnd_static = GetDlgItem(hDlg, IDC_MYSTATIC); //***
SendMessage(hwnd_static, WM_SETFONT, (WPARAM)hfont_static, (LPARAM)TRUE); //***
return TRUE;
case WM_CTLCOLORSTATIC:
// 改变文本颜色和背景颜色
if((HWND)lParam == hwnd_static)
{
SetTextColor((HDC)wParam, 0xff0000); //***
}
else
{
SetTextColor((HDC)wParam, GetSysColor(COLOR_WINDOWTEXT));
}
SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE));
SetWindowLong(hDlg, DWL_MSGRESULT, (LONG)TRUE);
return (LRESULT)GetSysColorBrush(COLOR_BTNFACE);
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
DeleteObject(hfont_static);
EndDialog(hDlg, LOWORD(wParam)); // 销毁自定义字体
return TRUE;
}
break;
}
return FALSE;
}
// “关于”框的消息处理程序。
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static HFONT hfont_static; // 自定义字体的句柄
static HWND hwnd_static; // Static 控件的句柄
switch (message)
{
case WM_INITDIALOG:
// 建立自定义字体
LOGFONT lgf;
GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(lgf), &lgf);
lgf.lfWeight = FW_BOLD;
hfont_static = CreateFontIndirect(&lgf);
// 设置字体
hwnd_static = GetDlgItem(hDlg, IDC_MYSTATIC); //***
SendMessage(hwnd_static, WM_SETFONT, (WPARAM)hfont_static, (LPARAM)TRUE); //***
return TRUE;
case WM_CTLCOLORSTATIC:
// 改变文本颜色和背景颜色
if((HWND)lParam == hwnd_static)
{
SetTextColor((HDC)wParam, 0xff0000); //***
}
else
{
SetTextColor((HDC)wParam, GetSysColor(COLOR_WINDOWTEXT));
}
SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE));
SetWindowLong(hDlg, DWL_MSGRESULT, (LONG)TRUE);
return (LRESULT)GetSysColorBrush(COLOR_BTNFACE);
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
DeleteObject(hfont_static);
EndDialog(hDlg, LOWORD(wParam)); // 销毁自定义字体
return TRUE;
}
break;
}
return FALSE;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)