如题,谢谢

解决方案 »

  1.   

    可以捕获WM_CTLCOLOR这个消息,这个消息是每一个子对话框要显示之前,对其父窗口发送的一个消息,在这里可以调用SetTextColor函数设置字体颜色,按你的要求,首先要判断这个Edit控件的状态,如果被Disable了,才设置。
      

  2.   

    Solution 1:派生一个CYourEdit自己重绘Solution 2:不使该Edit disabled,而是每当该需要Disable的Edit获得焦点时,把焦点设到窗体的其它控件上去,这样它就永远得不到焦点,相当于是"disabled"了:)
      

  3.   

    不太好弄啊。..
    我就想实现便条那种效果,单击的时候没反应,双击后可以编辑,失去焦点之后又不能编辑.
    我用disabled 属性来实现,可是那样,不能编辑的时候,文字就是灰的,不好看,我也不知道怎么换颜色...大家能解决颜色问题也可以啊。..
      

  4.   

    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
       HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);   if ( pWnd->GetDlgCtrlID() == IDC_EDIT1 )
          if ( pWnd->IsWindowEnabled())
          {
             // Red brush for the background...
             pDC->SetBkColor(RGB(255,0,0));
             // m_pRedBrush is the CBrush object initialized with a red brush 
             // using CreateSolidBrush
             return(HBRUSH)m_pRedBrush->GetSafeHandle();
          }
          else
          {
             // Blue brush for the background...
             pDC->SetBkColor(RGB(0, 0, 255));
             // m_pBlueBrush is the CBrush object initialized with a blue 
             // brush using CreateSolidBrush
             return (HBRUSH)m_pBlueBrush->GetSafeHandle();
          }
       return hbr;
    }
    这是我刚做的,应该是可以你可以试一下。
      

  5.   

    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
       HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);   if ( pWnd->GetDlgCtrlID() == IDC_EDIT1 )
          if ( pWnd->IsWindowEnabled())       //判断当前Edit的状态
          {
                     pDC->SetTextColor(RGB(255,0,0));
          }
          else
          {
                     pDC->SetTextColor(RGB(0, 0, 255));
                  
          }
       return hbr;
    }
      

  6.   

    用SetWindowLong改变disable属性,颜色就不会变灰
      

  7.   

    要使Edit在disabled时还能有颜色,必须重绘
    若不想重绘,则必须不使该Edit disabled
    换一种思路,不让它disable,就可以设置颜色了,而想办法让它无法被点到,就相当于是"disabled"了
      

  8.   

    WM_CTLCOLORSTATIC: //edit控件disabled后被当作static处理
      

  9.   

    用Static双击后把edit移动过来edit失去焦点后拿走或者隐藏。