RT,另,如何把edit设置成密码框那种样式

解决方案 »

  1.   

    1,在父窗口的 onctlcolor 函数里
    父窗口::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
            .....
    if(this->m_Text1.m_hWnd==pWnd->m_hWnd)
    {
    pDC->SetBkColor(RGB(255,0,0));
    }
    return hbr;
    }
    2,是指edit的样式,ES_PASSWORD
      

  2.   


    HBRUSH COutPutView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CView::OnCtlColor(pDC, pWnd, nCtlColor);

    if(nCtlColor == CTLCOLOR_EDIT) //将文本框的背景设置为透明
    {
    pDC->SetBkMode(TRANSPARENT); //设置背景透明,这样,输出字符的时候就
    //是所谓的空心字,而不是有白的底色
    // pDC->SetTextColor(RGB(255,0,0)); //改变字体的颜色
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));
    }
    return hbr;
    }
      

  3.   

    我不用mfc,我在父窗口中响应WM_CTLCOLOR,报错,可能因为WM_CTLCOLOR是mfc特有的消息
    于是我改成这样:
    case WM_CTLCOLOREDIT: hdc = GetWindowDC(hedit);//hdeit为edit控件句柄 SetBkColor(hdc,RGB(100,255,0)); ReleaseDC(hedit,hdc); return 0;
    还是没有效果
      

  4.   

    case WM_CTLCOLOREDIT:
    {
    static HBRUSH hb=0;
    if(InputInfo[CurrentInput].mode == 2)
    {
    hb=CreateSolidBrush(InputInfo[CurrentInput].fgcolor);
    // SetBkColor(HDC)wParam,InputInfo[CurrentInput].bgcolor)
    SetBkMode((HDC)wParam,TRANSPARENT);
    SetTextColor((HDC)wParam, InputInfo[CurrentInput].bgcolor);
    }
    else
    {
    hb=CreateSolidBrush(InputInfo[CurrentInput].bgcolor);
    // SetBkColor(HDC)wParam,InputInfo[CurrentInput].bgcolor)
    SetBkMode((HDC)wParam,TRANSPARENT);
    SetTextColor((HDC)wParam, InputInfo[CurrentInput].fgcolor); }
                return (LRESULT)hb;
    }
      

  5.   

    根据2楼的意见,我改成
    case WM_CTLCOLOREDIT: hdc = GetWindowDC(hedit); SetBkMode(hdc,TRANSPARENT); ReleaseDC(hedit,hdc); return (long)hBrush;//自建画刷句柄
    能写字的地方还是白条啊,别的地方倒是能变成背景色
      

  6.   

    lz的hdc错了,应该是hdc = (HDC)wParam;wParam参数保存的就是hdc
      

  7.   


    HBRUSH CXXX::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
      HBRUSH hbr;
      hbr = CXXX::OnCtlColor(pDC, pWnd, nCtlColor);
      if(pWnd->GetDlgCtrlID() == IDC_EDIT)
      {
        pDC->SetBkColor(RGB(X,X,X));
        pDC->SetTextColor(RGB(X,X,X));    return CreateSolidBrush(RGB(X,X,X));
      }  return hbr; 
    }