控件的颜色如何设置?

norikos 2003-08-23 06:51:55
我想改变控件的颜色,但是同类控件的颜色总是同样的.
如何给同一类的几个控件分别设定不同的颜色?
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coold 2003-08-26
  • 打赏
  • 举报
回复
假如控件多的话重载控件类太繁了,不如重载OnCtlColor再根据ID来判断。

举个例子:
1、新建一基于对话框的工程Bbb,
2、给CBbbDlg加两个成员变量m_hbrush1,m_hbrush2,
HBRUSH m_hbrush1;
HBRUSH m_hbrush2;
3、在对话框中加2个LISTBOX,并根据class wizard加入两个Control类型成员变量 m_ctrlListBox1,m_ctrlListBox2
4、在OnInitDialog()中,加入以下代码
m_hbrush1=CreateSolidBrush(RGB(0,0,0));
m_hbrush2=CreateSolidBrush(RGB(255,0,0));
m_ctrlListBox1.AddString("listbox 1");
m_ctrlListBox2.AddString("listbox 2");
5、点击Class Wizard,给CBbbDlg加入WM_CTLCOLOR事件,然后把改函数的内容替换为如下代码:
HBRUSH CBbbDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(nCtlColor== CTLCOLOR_LISTBOX)
{
if(pWnd->GetDlgCtrlID()==IDC_LIST1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,0));

return m_hbrush1;
}
else if(pWnd->GetDlgCtrlID()==IDC_LIST2)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,255));

return m_hbrush2;
}
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

SeainBlue 2003-08-26
  • 打赏
  • 举报
回复
我觉得办法就是重载控件类了
可以给类传递颜色值的参数,让不同对象在建立的时候用不同的颜色
tonybaobao 2003-08-26
  • 打赏
  • 举报
回复
我也想知道啊,听人家说owner draw多么多么好看,可惜弄不来。。。
trt 2003-08-26
  • 打赏
  • 举报
回复
不好办哪。除非你在SetCtrlColor和OnEraseBk中switch控件的ID算了。
要么重载该控件类,加一个函数SetBkColor好了,不过是换汤不换药。
fyfsoft 2003-08-26
  • 打赏
  • 举报
回复


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

// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID() == IDC_STATICRED)
{
pDC->SetBkMode(TRANSPARENT);//让text的显示模式为透明
return m_redBrush;
}

if (pWnd->GetDlgCtrlID() == IDC_STATICGREEN)
{
pDC->SetBkMode(TRANSPARENT);//让text的显示模式为透明
return m_greenBrush;
}

if (pWnd->GetDlgCtrlID() == IDC_STATICBLUE)
{
pDC->SetBkMode(TRANSPARENT);//让text的显示模式为透明
return m_blueBrush;
}


// TODO: Return a different brush if the default is not desired
return hbr;
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧