SDK编程,编辑框控件(ES_MUTILINE型)上的背景色大部分都能改变,除了第一行是空白以外

振翅高飞 2011-12-18 11:14:00
实现的目标是:把指定ID 的编辑框背景色变为绿色,字体颜色为红色。
编辑框控件(ES_MUTILINE型)上的背景色大部分都能改变,除了第一行是空白以外,其余都是渲染的绿色(我的目标是整个编辑框都变成绿色背景,红色字体。),当我往里面填入数据时,如果填到第二行,原来的绿色背景也变成了白色,字体是始终都是黑色没有变成红色,谁能解释一下,为什么,如何修改实现???

case WM_CTLCOLOREDIT:
{
int nID;
hdc1=GetDC(hWnd);
HWND HC=GetWindow(hWnd,GW_CHILD);
nID=GetDlgCtrlID(HC);
while(HC)
{
HC=GetWindow(HC,GW_HWNDNEXT);
nID=GetDlgCtrlID(HC);
if (nID==ID_RECORD)
{
SetTextColor(hdc1,RGB(255,0,0));
SetBkColor(hdc1,RGB(0,255,0));
SetBkMode(hdc1,OPAQUE);
brush=CreateSolidBrush(RGB(0,255,0));
SelectObject(hdc1,brush);
break;
}
}
ReleaseDC(hWnd,hdc1);
}
return (LRESULT)brush;
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2011-12-29
  • 打赏
  • 举报
回复
所有的Edit都一个样吗?
更简单
if(hEdit == (HWND)lParam) // 把if语句的判断去掉即可
{
HDC hDC = (HDC)wParam;
SetTextColor(hDC, RGB(255, 0, 0));
SetBkColor(hDC, RGB(0, 0, 255));
return (long)hbr;
}
振翅高飞 2011-12-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
C/C++ code
case WM_CREATE:
{
hEdit = CreateWindow(_T("Edit"), _T("Edit"),
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | ES_WANTRETURN | ES_AUTOHSCROLL | ES……
[/Quote]
兄弟,你的代码我用了一下,管用,但是我还想问一下,怎么给指定编辑控件渲染,不是所有的编辑控件
就以你的这个代码为例,如果还有其他不同ID的编辑控件,怎么办?所有的编辑控件已经在WinMain函数中创建了。

case WM_CREATE:
{
brush=CreateSolidBrush(RGB(0,255,0));
}
break;
case WM_CTLCOLOREDIT:
{
int nID;
HWND HC=GetWindow(hWnd,GW_CHILD);
nID=GetDlgCtrlID(HC);
while(HC)
{
HC=GetWindow(HC,GW_HWNDNEXT);
nID=GetDlgCtrlID(HC);
if (nID==ID_RECORD)
{
hdc1=(HDC)wParam;
SetTextColor(hdc1, RGB(255,0,0));
SetBkColor(hdc1, RGB(0,255,0));
return (long)brush;
}
}
}
break;
Eleven 2011-12-28
  • 打赏
  • 举报
回复
case WM_CREATE:
{
hEdit = CreateWindow(_T("Edit"), _T("Edit"),
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | ES_WANTRETURN | ES_AUTOHSCROLL | ES_AUTOVSCROLL
| WS_VSCROLL | WS_HSCROLL,
10, 10, 200, 100, hWnd, (HMENU)0x11, hInst, NULL);

hbr = CreateSolidBrush(RGB(0, 0, 255));
}
break;
case WM_CTLCOLOREDIT:
{
if(hEdit == (HWND)lParam)
{
HDC hDC = (HDC)wParam;
SetTextColor(hDC, RGB(255, 0, 0));
SetBkColor(hDC, RGB(0, 0, 255));
return (long)hbr;
}
}
break;
振翅高飞 2011-12-28
  • 打赏
  • 举报
回复
这么多天了,居然没有人回答。压抑。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧