改变按钮和复选框等控件的文字颜色、背景颜色等吧。
1. 静态控件的文字字体、文字颜色、背景颜色的设置
字体可以通过向控件发送WM_SETFONT消息来设置。
SendMessage(hCtrl, WM_SETFONT, (WPARAM)hFontSmall, 0);
文字字体、文字颜色、背景颜色的设置方法基本上在所有控件中都是共通的,所以这里以静态控件为例进行说明。
下面显示程序和执行结果。 字体和颜色的设置,接收WM_CTLCOLORSTATIC信息进行。 这个程序生成并显示两个静态控件(ID是1和2)。 第一个静态是文字颜色为红色,背景是默认的WHITE_BRUSH。 另一个静态变更了字体,背景是浅灰色。 在这种情况下,将背景模式设置为透明。 背景颜色也可以用SetBkColor函数来设置。
Static02.c
#include <windows.h>
HFONT hFont;
BOOL onCtlColor(WPARAM wP, LPARAM lP) {
int i = GetWindowLong((HWND)lP, GWL_ID);
if (i == 1) {
SetTextColor((HDC)wP, 0xff);
return (BOOL)((HBRUSH)GetStockObject(WHITE_BRUSH));
} else if (i == 2) {
SetBkMode((HDC)wP, TRANSPARENT); // 设置背景透明
SelectObject((HDC)wP, hFont);
return (BOOL)((HBRUSH)GetStockObject(LTGRAY_BRUSH)); //浅灰色
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_CTLCOLORSTATIC:
return onCtlColor(wParam, lParam);
case WM_DESTROY:
DeleteObject(hFont);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) {
HWND hWnd, hWnd1, hWnd2;
MSG msg;
char *text = "在长句子中,右端的折返会自动进行。但是,没有滚动功能";
LOGFONT lf = { 16 }; // lfHeight
HCURSOR hCursor = LoadCursor(NULL, IDC_ARROW);
HBRUSH hBrush = (HBRUSH)(COLOR_WINDOW+1);
WNDCLASS wcl = { 0, WindowProc, 0, 0, hInst, NULL