我在对话框中加入了一个ListBox控件,背景是白色的,为了把
背景色设成黑色,重载了DrawItem函数,在DrawItem中加入了
如下代码:CBrush b(RGB(0,0,0));
CRect r;
CDC *pDC;
GetClientRect(&r);
pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillRect(&r,&b);(1)运行程序时背景还是白色,需用鼠标点击一下ListBox才能使背景变黑。怎样
才能使程序运行后立即变背景为黑色?
(2)为了把函数AddString()加入的字串显示出来,DrawItem中应怎样写?

解决方案 »

  1.   

    1)重载OnEraseBkgnd,OnPaint,在OnEraseBkgnd中,画黑色,在onpaint 中简单调用Defaultproc(wm_paint,,),但要判断如果一条没有的话,调用OnEraseBkgnd(&dc);
    2) int index = lpDrawItemStruct->itemID;
    DWORD bClick = GetItemData(index); CString text;
    GetText(index,text); pDC->DrawText(text,&lpDrawItemStruct->rcItem),DT_CENTER|DT_SINGLELINE|DT_VCENTER);
      

  2.   

    请问wwwllg,上面代码的bClick有何用处?后面并没有用到bClick啊。
      

  3.   

    没有,那只是我拷贝错了,这是我以前做的一个SAMPLE。你的问题很好解决。那个bClick是记录我是否已点击过。
      

  4.   

    当 ListBox 获得焦点的时候,才能改变颜色,所以,你可以把焦点设置为 ListBox 就ok了~~
      

  5.   

    为什么把ListBox的属性设置中的水平滚动条选取后,在程序运行时ListBox也
    没有水平滚动条??
      

  6.   

    只有在选中Multi-column选项时,你的水平滚动设置才会有效的,一般没什么用的,不然就用list ctrl了吗?!