给段代码你看看,希望对你有帮助。HBRUSH CSoftDogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); static HBRUSH hbrNULL = (HBRUSH)GetStockObject(NULL_BRUSH); // TODO: Change any attributes of the DC here switch (pWnd->GetDlgCtrlID()) { case IDC_INFO:
hbrNULL = (HBRUSH)GetStockObject(NULL_BRUSH); pDC->SetTextColor(RGB(0xff,0x00,0x66)); pDC->SetBkColor(RGB(156, 209, 241)); hbr = hbrNULL; break ; } // TODO: Return a different brush if the default is not desired return hbr; }
---------------------------------------------------------
报什么错。
HBRUSH CDlgFlash::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDD_LISTBOXID) //IDD_LISTBOXID改为listcontrol的ID
{
B = CreateSolidBrush(RGB(255,0,0)); //红色
return (HBRUSH) B;
} // TODO: Return a different brush if the default is not desired
return hbr;
}
要什么背景都可以
WM_DRAWITEM.....
背景用BITMAP都行
m_ColorHJName=RGB(0,0,0);
m_list.SetBkColor(m_ColorHJName);
程序运行后就会弹出一个错误对话框,上面写着
Debug Assertion Failed!
Program:F\Display\Debug\DIsplay.exe
File:afxcmn.inl
Line:126
......
我觉的这是系统错误信息,一般如果数据传递有问题就会出现这样的错误对话框,上面几位给我的建议我都试过了,弹出的都是这个错误,我知道用setbkcolor()这个函数可以改变颜色,但是具体用法不知道,如果有那位高手用过请快来帮帮我,谢谢
那个错误对话框是没有了,可是颜色还是没有变,因为m_list.GetSafeHwnd()这个值是空,加了这个判断后就不执行m_list.SetBkColor(m_ColorHJName);这条语句了,如果还是想要执行这条语句就还是我上面说的那个错误,所以我认为还是这个函数用的不对,这个问题真的很难吗?
我想抱错的原因应该是你listctrl属性设置有问题
你检查一下Owner Draw Fixed为假时才可以应用SetBkColor
DDX_Control(pDX, IDC_LIST, m_list);
之类的。另外,看看SetBkColor的返回值。
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
static HBRUSH hbrNULL = (HBRUSH)GetStockObject(NULL_BRUSH); // TODO: Change any attributes of the DC here
switch (pWnd->GetDlgCtrlID())
{
case IDC_INFO:
hbrNULL = (HBRUSH)GetStockObject(NULL_BRUSH);
pDC->SetTextColor(RGB(0xff,0x00,0x66));
pDC->SetBkColor(RGB(156, 209, 241));
hbr = hbrNULL;
break ;
} // TODO: Return a different brush if the default is not desired
return hbr;
}
改listctrl的背景色我做过,
我想很多人也都做过,
就是这样的方法。
你检查一下listctrl的设置,
看看存不存在Mackz(在相互)所说的问题。
实在不行你把工程发我邮箱,
我给你看看
[email protected]
检查下有没有这些代码COLORREF m_color;CListCtrl m_Infolist; DDX_Control(pDX, IDC_INFOLIST, m_Infolist);m_color = RGB(0,0,0);m_Infolist.SetBkColor(m_color); 有这几句,背景色一定可以改变的
如果你正处在进程当中,信息有可能丢失。
关于次错误的其它信息,请单击此处。我就是把下面几段代码写在了InitDialog()函数里了,然后在这个Dialog的头文件里定义的COLORREF m_color;CListCtrl m_Infolist;开始程序不认pDX这个变量,我查了一下msdn,然后又在头文件里定义了这个pDX,然后编译没错,运行就弹出上面的对话框,请大家看看吧DDX_Control(pDX, IDC_INFOLIST, m_Infolist);m_color = RGB(0,0,0);m_Infolist.SetBkColor(m_color);
这句话是加载DoDataExchange里的