主题:WM_CTLCOLORSTATIC 消息 怎么用?
请问WM_CTLCOLORSTATIC消息怎么用,这里的lParam和wParam 参数分别是什么? lParam参数是不是窗口控制项的代号,wParam参数又是什么 ?
WM_CTLCOLORSTATIC 消息 怎么用?
我有建立了3个静态控制项hwndLabel[0],hwndLabel[1],hwndLabel[3],我想更改这三个标签的文字分别的红,绿,蓝 和背景色。 以下是我的代码片断:
static HWND hwndLabel[3];
HINSTANCE hInstance;
HBRUSH hBrushStatic;
switch(message)
{
case WM_CREATE:
hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
//下面是建立三个标签控制项,代号0,1,2
for(i=0;i<3;i++)
{
hwndLabel[i] = CreateWindow(
TEXT("static"),
szColorLabel[i],
WS_CHILD | WS_VISIBLE | SS_CENTER,
0,0,0,0,
hwnd,
(HMENU)i,
hInstance,
NULL);
}
.......
hBrushStatic = CreateSolidBrush(
GetSysColor(COLOR_BTNHIGHLIGHT));
return 0;
........
case WM_CTLCOLORSTATIC:
i= GetWindowLong((HWND)lParam,GWL_ID); //获取窗口控制项ID
//根据所获取的id依次更改文字颜色
switch(i)
{
case 0:
SetTextColor((HDC)wParam,RGB(255,0,0));
break;
case 1:
SetTextColor((HDC)wParam,RGB(0,255,0));
break;
case 2:
SetTextColor((HDC)wParam,RGB(0,0,255));
}
SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNHIGHLIGHT));
return (LRESULT)hBrushStatic;
....
}
上述代码的运行时各标签的文字颜色并没有更改,而只更了背景色。不知道错在哪里了?
WM_CTLCOLORSTATIC 消息 怎么用?
我有建立了3个静态控制项hwndLabel[0],hwndLabel[1],hwndLabel[3],我想更改这三个标签的文字分别的红,绿,蓝 和背景色。 以下是我的代码片断:
static HWND hwndLabel[3];
HINSTANCE hInstance;
HBRUSH hBrushStatic;
switch(message)
{
case WM_CREATE:
hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
//下面是建立三个标签控制项,代号0,1,2
for(i=0;i<3;i++)
{
hwndLabel[i] = CreateWindow(
TEXT("static"),
szColorLabel[i],
WS_CHILD | WS_VISIBLE | SS_CENTER,
0,0,0,0,
hwnd,
(HMENU)i,
hInstance,
NULL);
}
.......
hBrushStatic = CreateSolidBrush(
GetSysColor(COLOR_BTNHIGHLIGHT));
return 0;
........
case WM_CTLCOLORSTATIC:
i= GetWindowLong((HWND)lParam,GWL_ID); //获取窗口控制项ID
//根据所获取的id依次更改文字颜色
switch(i)
{
case 0:
SetTextColor((HDC)wParam,RGB(255,0,0));
break;
case 1:
SetTextColor((HDC)wParam,RGB(0,255,0));
break;
case 2:
SetTextColor((HDC)wParam,RGB(0,0,255));
}
SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNHIGHLIGHT));
return (LRESULT)hBrushStatic;
....
}
上述代码的运行时各标签的文字颜色并没有更改,而只更了背景色。不知道错在哪里了?