我在dialog中放置了一个ListBox,
使用函数EnableWindow(),虽然可以使ListBox禁用,但背景并不变灰,
我不想继承ListBox类,是不是可以直接通过ListBox类的sendMessage()就可以达到目的
如果可以的话,sendMessage中的参数该怎么填?望赐教

解决方案 »

  1.   

    HBRUSH CMyDaExDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if (CTLCOLOR_LISTBOX   ==nCtlColor)
    {
    LOGBRUSH logBrush;
    logBrush.lbStyle = BS_HATCHED;
    logBrush.lbColor = RGB(0, 192, 192);
    logBrush.lbHatch = HS_CROSS; return hbr = CreateBrushIndirect(&logBrush);
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  2.   

    to arvid_gs(west) :    由于我的dialog上有多个listbox,需要分别控制,按照你说得那样做的话,dialog上所有的listbox都变灰了,但我只需要其中一个变灰
      

  3.   

    把   if (nCtlColor == CTLCOLOR_LISTBOX)
    改为 if (pWnd->GetDlgCtrlID() == IDC_YOURLISTBOX)
    就可以指定是改变哪个ListBox的颜色了。
      

  4.   

    把   if (nCtlColor == CTLCOLOR_LISTBOX)
    改为 if (pWnd->GetDlgCtrlID() == IDC_YOURLISTBOX)
    就可以指定是改变哪个ListBox的颜色了,可以.