////////// SkinTestDlg.h : header file
public:
   CBrush m_MeaningBrush; //背景颜色画刷////////// SkinTestDlg.cpp : implementation file
CSkinTestDlg::CSkinTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSkinTestDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

//创建为白色背景
m_MeaningBrush.CreateSolidBrush(RGB(255,255,255));
}BEGIN_MESSAGE_MAP(CSkinTestDlg, CDialog)
//{{AFX_MSG_MAP(CSkinTestDlg)
ON_WM_CTLCOLOR() //添加事件
//}}AFX_MSG_MAP
END_MESSAGE_MAP()//修改文本框背景颜色
HBRUSH CSkinTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 //判断控件ID
 if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
 {
   //设置背景色和字体颜色
   pDC->SetBkColor(RGB(255,255,255));
   pDC->SetTextColor(RGB(0,0,0)); //编辑框类的字体设置为黑色;
   //pDC->SetBkMode(TRANSPARENT); //设置为透明不影响字体颜色   //设置边框颜色
   CDC* dc = GetDC();   //获取画布对象
   CRect rect;
   GetClientRect(rect); //获取客户区域
   rect.InflateRect(1,1,1,1);    //将客户区域增大一个象素
   CBrush brush(RGB(255,255,0)); //创建画刷
   dc->FrameRect(rect,&brush);   //绘制边框 

   return (HBRUSH)m_MeaningBrush.GetSafeHandle();
   }

  return hbr;
}

解决方案 »

  1.   

    感觉下面几行代码没起作用:
      //设置边框颜色
       CDC* dc = GetDC();   //获取画布对象
       CRect rect;
       GetClientRect(rect); //获取客户区域
       rect.InflateRect(1,1,1,1);    //将客户区域增大一个象素
       CBrush brush(RGB(255,255,0)); //创建画刷
       dc->FrameRect(rect,&brush);   //绘制边框 
      

  2.   

    看前两天的贴
    http://topic.csdn.net/u/20101025/14/bc70430c-1ef1-4303-ba0e-e35949b29122.html
      

  3.   


    http://topic.csdn.net/u/20101025/14/bc70430c-1ef1-4303-ba0e-e35949b29122.html
      

  4.   

    下面的代码只能修改窗体边框的颜色,
    如何修改Edit文本框的边界颜色呢?HBRUSH CSkinTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
     HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        
     //判断控件ID
     if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
     {
    //修改窗体边框的颜色
    CDC *pDC = GetWindowDC();
    CRect rcWnd;
    GetWindowRect(rcWnd);
    ScreenToClient(rcWnd);
    int nWidht = rcWnd.Width();
    int nHeight = rcWnd.Height();
    rcWnd.left = 1;
    rcWnd.top = 1;
    rcWnd.bottom = rcWnd.top+nHeight-1;
    rcWnd.right = rcWnd.left + nWidht-1;
    CPen pen(PS_SOLID, 1, RGB(255, 0, 128));
    HPEN Oldpen = (HPEN)pDC->SelectObject(pen);
    pDC->Rectangle(rcWnd);
    pDC->SelectObject(Oldpen);
    ReleaseDC(pDC);
      

  5.   

    你要操作的时候Edit,因此窗口指针应该是编辑框的指针  HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

      // TODO: Change any attributes of the DC here
      if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
      {
        //修改窗体边框的颜色
        CDC *pDC = pWnd->GetWindowDC();
        CRect rcWnd;
        pWnd->GetWindowRect(rcWnd);
        pWnd->ScreenToClient(rcWnd);
        int nWidht = rcWnd.Width();
        int nHeight = rcWnd.Height();
        rcWnd.left = 1;
        rcWnd.top = 1;
        rcWnd.bottom = rcWnd.top+nHeight-1;
        rcWnd.right = rcWnd.left + nWidht-1;
        CPen pen(PS_SOLID, 1, RGB(255, 0, 128));
        HPEN Oldpen = (HPEN)pDC->SelectObject(pen);
        pDC->Rectangle(rcWnd);
        pDC->SelectObject(Oldpen);
        pWnd->ReleaseDC(pDC);
      }
      

  6.   


    在这里修改指针位置么?
    //修改窗体边框的颜色
    CDC *pDC = pWnd->GetWindowDC();
      

  7.   

    修改文本框边界颜色,该用WM_DRAWITEM事件,还是OnCtlColor事件呢?
      

  8.   

    用下面的代码,运行时有错误//修改文本框背景颜色
    HBRUSH CSkinTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
         HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

        //修改编辑框
        if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
        {
            pDC->SetTextColor(RGB(0,0,0)); //编辑框类的字体设置为黑色;
            pDC->SetBkMode(TRANSPARENT);   //设置为透明不影响字体颜色 //修改Edit文本框的边框颜色
    //CDC *pDC = pWnd->GetWindowDC();
    CRect rcWnd;
    pWnd->GetWindowRect(rcWnd);
    pWnd->ScreenToClient(rcWnd);
    int nWidht = rcWnd.Width();
    int nHeight = rcWnd.Height();
    rcWnd.left = 1;
    rcWnd.top = 1;
    rcWnd.bottom = rcWnd.top+nHeight-1;
    rcWnd.right = rcWnd.left + nWidht-1;
    CPen pen(PS_SOLID, 1, RGB(0, 255, 128));
    HPEN Oldpen = (HPEN)pDC->SelectObject(pen);
    pDC->Rectangle(rcWnd);
    pDC->SelectObject(Oldpen);
            pWnd->ReleaseDC(pDC); 

            return (HBRUSH)m_MeaningBrush.GetSafeHandle();
        }
      

  9.   

    void CNewEdit::OnNcPaint()  
    {
    // TODO: Add your message handler code here// Do not call CEdit::OnNcPaint() for painting messages
    CDC *pDC = GetWindowDC();CRect rcWnd;
    GetWindowRect(rcWnd);
    ScreenToClient(rcWnd);
    int nWidht = rcWnd.Width();
    int nHeight = rcWnd.Height();
    rcWnd.left = 1;
    rcWnd.top = 1;
    rcWnd.bottom = rcWnd.top+nHeight-1;
    rcWnd.right = rcWnd.left + nWidht-1;
    CPen pen(PS_SOLID, 1, RGB(255, 0, 128));
    HPEN Oldpen = (HPEN)pDC->SelectObject(pen);pDC->Rectangle(rcWnd);pDC->SelectObject(Oldpen);
    ReleaseDC(pDC);
    }
      

  10.   

    12楼的版主能不能把OnNcPaint在说一说。有改变list control控件边框颜色的方法吗,希望大家帮一下