作者lovecold (小猪头)
看板GameDesign
标题[问题] 如何改变edit control背景颜色及文字颜色
时间Sat Jun 12 02:48:37 2010
※ [本文转录自 C_and_CPP 看板 #1C4d_sTd ]
作者: lovecold (小猪头) 看板: C_and_CPP
标题: [问题] 如何改变edit control背景颜色及文字颜色
时间: Sat Jun 12 02:26:59 2010
( *[1m *[m 为色码,可以按 Ctrl+V 预览会显示的颜色 )
( 未必需要依照此格式,文章条理清楚即可 )
遇到的问题: (题意请描述清楚)
想改变edit control的背景颜色及文字颜色,但不使用WM_CTLCOLOREDIT这个讯息
希望得到的正确结果:
希望能改变颜色
程式跑出来的错误结果:
无法改变颜色
开发平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
vc++ windows
有问题的code: (请善用置底文标色功能)
HWND hEdit;
HDC hdc;
HBRUSH hBrushEdit;
hEdit = CreateWindow ("edit", "", WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL
, 0,0, 100, 200, hWnd, NULL,
g_pApplication->GetAppInstance(), NULL);
hBrushEdit = CreateSolidBrush(RGB(100, 100, 100));
hdc = GetDC(hEdit);
SetBkColor(hdc, RGB(100, 100, 100));
补充说明:
我有试过在WM_CTLCOLOREDIT里用
case WM_CTLCOLOREDIT:
{
if(((HWND)lParam == hEdit)
{
SetBkColor ((HDC)wParam, RGB (100, 100, 100));
return (LRESULT)hBrushEdit;
}
}
这样就可以改变颜色。
case WM_CTLCOLOREDIT:
{
if(((HWND)lParam == hEdit)
{
HDC hdc = GetDC(hEdit);
SetBkColor (hdc, RGB (100, 100, 100));
return (LRESULT)hBrushEdit;
}
}
但这样做就没办法改变颜色。
我有找过一些资料,我发现
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint( hWnd , &ps );
(这个hdc的位置跟 WM_CTLCOLOREDIT 里的(HDC)wParam 会是一样的)
EndPaint( hWnd , &ps );
return 0;
想请教一下,如何不处理WM_CTLCOLOREDIT就能达到修改edit control的颜色
还有要如何在WM_PAINT之外抓无效区域的hdc呢??
(书上说 PAINTSTRUCT 里的hdc就是指无效区域)
麻烦各位了^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.3.221
※ 编辑: lovecold 来自: 114.33.3.221 (06/12 02:34)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.3.221