一定需要自绘, 哪位仁兄给点代码瞧瞧!

解决方案 »

  1.   

    设置LBS_OWNERDRAWFIXED风格,响应WM_DRAWITEM消息,根据DRAWITEMSTRUCT结构给出的信息来输出文字。
      

  2.   

    //---------------------------------------------------------------------   
      void   __fastcall   TFormMain::DrawItem(TWinControl   *Control,   
                  int   Index,   TRect   &Rect,   TOwnerDrawState   State)   
      {   
      ListBox1->Canvas->FillRect(Rect);   
              ListBox1->Canvas->Font->Name   =ListBox1->Items->Strings[Index].c_str();   
              ListBox1->Canvas->Font->Size   =   0;   
              ListBox1->Canvas->TextOut(Rect.Left+1,   Rect.Top+1,   ListBox1->Items->Strings[Index].c_str());   
      }   
      //---------------------------------------------------------------------   
      void   __fastcall   TFormMain::ListBox1MeasureItem(TWinControl   *Control,   
                  int   Index,   int   &Height)   
      {   
            ListBox1->Canvas->Font->Name   =ListBox1->Items->Strings[Index].c_str();   
            ListBox1->Canvas->Font->Size   =   0;   
            Height   =   ListBox1->Canvas->TextHeight("Wg")   +2;   
      }这段代码看了半天都没看明白...
      

  3.   


    我要动态设置各项STRING的颜色, 难道是调用Drawitem吗?
    怎么看都不可能调用Drawitem来设置吧
      

  4.   

    你上面贴的是VC.NET的代码,而且其中并没有改变颜色。
    WM_DRAWITEM消息是控件发给其父窗口的,可以在父窗口的OnDrawItem函数中响应,如果不在父窗口响应,也可以在控件类本身的DrawItem函数中响应反射回来的消息。在显示文字之前调用SetTextColor设置颜色。
      

  5.   

    去codeproject上搜一搜可以找到类似的代码工程
      

  6.   

    codeproject上太多了
    http://www.codeproject.com/KB/list/#Custom%20Draw