当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,Windows 会使用该画刷来绘制控件背景(子窗口背景)。
也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC 消息。WM_CTLCOLORSTATIC 消息就是用来设置背景画刷的。
改变 static 控件的背景颜色:
也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC 消息。WM_CTLCOLORSTATIC 消息就是用来设置背景画刷的。
改变 static 控件的背景颜色:
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
- PAINTSTRUCT ps;
- HDC hdcWnd;
- static HFONT hFont; //逻辑字体
- static HWND hStatic; //静态文本框控件
- static HBRUSH hBrush; //画刷
- switch (message){
- case WM_CREATE:
- //创建画刷
- hBrush = CreateSolidBrush( RGB(0x41, 0x96, 0x4F) ); //翠绿色
- //创建逻辑字体
- hFont = CreateFont(-14/*高*/, -7/*宽*/, 0, 0, 400 /*400表示正常字体*/,
- FALSE/*斜体?*/, FALSE/*下划线?*/, FALSE/*删除线?*/,DEFAULT_CHARSET,
- OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
- FF_DONTCARE, TEXT("微软雅黑")
- );
- //创建静态文本框控件
- hStatic = CreateWindow(TEXT("static"), TEXT("欢迎来到C语言中文网!"),
- WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_CENTER,
- 20 /*x坐标*/, <