+ -
当前位置:首页 → 问答吧 → SDK编程,编辑框控件(ES_MUTILINE型)上的背景色大部分都能改变,除了第一行是空白以外

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

时间:2011-12-18

来源:互联网

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

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;

作者: sunyongliang118   发布时间: 2011-12-18

这么多天了,居然没有人回答。压抑。

作者: sunyongliang118   发布时间: 2011-12-28

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_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;

作者: VisualEleven   发布时间: 2011-12-28

引用 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……

兄弟,你的代码我用了一下,管用,但是我还想问一下,怎么给指定编辑控件渲染,不是所有的编辑控件
就以你的这个代码为例,如果还有其他不同ID的编辑控件,怎么办?所有的编辑控件已经在WinMain函数中创建了。
C/C++ code

        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;

作者: sunyongliang118   发布时间: 2011-12-28