我用了个edit,想用api,而不是mfc来改便字体颜色,用了SetTextColor这个函数,可是只有当使用TextOut时字体才会有反映,但是用SetWindowText就不行,请问各位大侠用什么方法才能让SetWindowText产生的文字颜色改变.
我听人说换掉它的窗口过程,处理WM_CTRLCOLOR消息,可是想问一下编辑框的窗口过程的源代码在那里可以看到?不会要把代码自己全重写吧,那用编辑框就没意义了,请各位帮忙,谢谢!!!!!!

解决方案 »

  1.   

    编辑框是Windows的一个标准控件,除非你有Windows的源代码,不然怎么能看到它的实现?
    你替换它的窗口过程后,在不是你自己处理的情况下使用CallWindowProc调用默认的窗口过程函数即可。如果你用的是MFC,调用基类的窗口函数也可以。
      

  2.   

    从载OnCtlColor这个函数, 定义CBrush m_brush;HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    pDC->SetBkMode( TRANSPARENT );
    pDC->SetTextColor( RGB( 0, 128, 128) ); // TODO: Return a different brush if the default is not desired
    if( nCtlColor == CTLCOLOR_DLG )
    return (HBRUSH) m_brush.GetSafeHandle( );
    if( nCtlColor == CTLCOLOR_STATIC )
    return (HBRUSH) m_brush.GetSafeHandle( ); return hbr;
    }
      

  3.   

    我换掉它的窗口过程,处理了
    case WM_CTLCOLOREDIT:
     hdc = GetDC (hwndReceiveEdit) ;
     SetTextColor(hdc111,RGB(0,255,0));
     return 0;
    可使用SetWindowText时还是不行,而且连textout也没反映了,请问是不是处理错了还是SetTextColor只能作用于textout函数,请问有没有别的解决办法?(只用api不用mfc解决)
    谢谢!