怎么设置对话框窗口是控件的背景色?

时间:2022-07-09 14:54:21
例如:static,edit,工具栏等。。。
现在我只知道设置对话框的背景色是这样:
SetDialogBkColor(RGB(100,204,200), RGB(100, 100,100)); //背景色

别的都应该怎么来设置??

12 个解决方案

#1


你可以这样设置,假设你使用的EDit 控件 ,你只需要定义与Edit相关的
控制变量。如m_ctrledit.SetBkColor(RGB(100,204,200));
就可以设置背景色。
控制变量的定义:先打开ClassWizard...(类向导),接着选第二项
Member Variable,在这个页面可以定义控制变量;

#2


static,edit简单,响应wm_ctlcolor即可,比如:
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
static HBRUSH hBrush = CreateSolidBrush(RGB(255, 192, 100));
pDC->SetBkColor(RGB(255, 192, 100));
return hBrush;
}

#3


楼上,我有不明白,什么事件会产生wm_ctlcolor消息了

#4


看例子
http://my.6to23.com/cigarette/q2.zip

#5


可以,不过,不对List Contrl有效

#6


OnCtlColor

#7


我是要在程序中动态的显示,也就是根据程序的变化来显示??
我主要用的是static控件??

#8


我是要动太的去改变static的背景色,当程序运行到一个指定的地方时改变不同的色??
应该怎么做,也就是不在初始化中改变??

#9


按我的方法做,是可以达到效果的,不需要更改太多
代码,只要点击就行了

#10


楼主想要的是static控件的背景与对话框颜色一致吧?
只要把static设为透明就行了,
打开class wizard ,
为对话框添加WM_CTRLCOLOR消息,
编写对应的OnCtrlColor() 函数
HBRUSH CMydilog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    int nID = pWnd->GetDlgCtrlID();
pDC->SetBkMode(OPAQUE); 
if( nID == IDC_STATIC1) //此处为你的static的ID
        pDC->SetTextColor( RGB(  0,128,0 ) );//设字体颜色
         pDC->SetBkMode(TRANSPARENT);   //设置透明     
    
    return hbr;
}
如果你想设置背景,只要加上:pDC->SetBkColor( RGB(  0,128,0 ) );
当然,要先将设置透明的语句拿掉

#11


我的对话框中有一个static型的控件IDC_CHANNELSTAT1,我是用来显示我的程序运行状态的,我的程序是用来完成通信的,我想当程序开始建立通信时IDC_CHANNELSTAT1换一个颜色,我应该怎么做??因为我的程序什么时候会通信我也不知道,我只是想在通信上来时就换一下颜色,现在我的IDC_CHANNELSTAT1全是灰色的,不知道应该怎么去触发赤设置??

#12


TO:小黑
m_ctrledit.SetBkColor(RGB(100,204,200));中的SetBkColor说没定义,编译不过??


#1


你可以这样设置,假设你使用的EDit 控件 ,你只需要定义与Edit相关的
控制变量。如m_ctrledit.SetBkColor(RGB(100,204,200));
就可以设置背景色。
控制变量的定义:先打开ClassWizard...(类向导),接着选第二项
Member Variable,在这个页面可以定义控制变量;

#2


static,edit简单,响应wm_ctlcolor即可,比如:
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
static HBRUSH hBrush = CreateSolidBrush(RGB(255, 192, 100));
pDC->SetBkColor(RGB(255, 192, 100));
return hBrush;
}

#3


楼上,我有不明白,什么事件会产生wm_ctlcolor消息了

#4


看例子
http://my.6to23.com/cigarette/q2.zip

#5


可以,不过,不对List Contrl有效

#6


OnCtlColor

#7


我是要在程序中动态的显示,也就是根据程序的变化来显示??
我主要用的是static控件??

#8


我是要动太的去改变static的背景色,当程序运行到一个指定的地方时改变不同的色??
应该怎么做,也就是不在初始化中改变??

#9


按我的方法做,是可以达到效果的,不需要更改太多
代码,只要点击就行了

#10


楼主想要的是static控件的背景与对话框颜色一致吧?
只要把static设为透明就行了,
打开class wizard ,
为对话框添加WM_CTRLCOLOR消息,
编写对应的OnCtrlColor() 函数
HBRUSH CMydilog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    int nID = pWnd->GetDlgCtrlID();
pDC->SetBkMode(OPAQUE); 
if( nID == IDC_STATIC1) //此处为你的static的ID
        pDC->SetTextColor( RGB(  0,128,0 ) );//设字体颜色
         pDC->SetBkMode(TRANSPARENT);   //设置透明     
    
    return hbr;
}
如果你想设置背景,只要加上:pDC->SetBkColor( RGB(  0,128,0 ) );
当然,要先将设置透明的语句拿掉

#11


我的对话框中有一个static型的控件IDC_CHANNELSTAT1,我是用来显示我的程序运行状态的,我的程序是用来完成通信的,我想当程序开始建立通信时IDC_CHANNELSTAT1换一个颜色,我应该怎么做??因为我的程序什么时候会通信我也不知道,我只是想在通信上来时就换一下颜色,现在我的IDC_CHANNELSTAT1全是灰色的,不知道应该怎么去触发赤设置??

#12


TO:小黑
m_ctrledit.SetBkColor(RGB(100,204,200));中的SetBkColor说没定义,编译不过??