Win32 SDK Gui编程系列之--标准控件

改变按钮和复选框等控件的文字颜色、背景颜色等吧。

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
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值