现在我只知道设置对话框的背景色是这样:
SetDialogBkColor(RGB(100,204,200), RGB(100, 100,100)); //背景色
别的都应该怎么来设置??
12 个解决方案
#1
你可以这样设置,假设你使用的EDit 控件 ,你只需要定义与Edit相关的
控制变量。如m_ctrledit.SetBkColor(RGB(100,204,200));
就可以设置背景色。
控制变量的定义:先打开ClassWizard...(类向导),接着选第二项
Member Variable,在这个页面可以定义控制变量;
控制变量。如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;
}
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
http://my.6to23.com/cigarette/q2.zip
#5
可以,不过,不对List Contrl有效
#6
OnCtlColor
#7
我是要在程序中动态的显示,也就是根据程序的变化来显示??
我主要用的是static控件??
我主要用的是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 ) );
当然,要先将设置透明的语句拿掉
只要把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说没定义,编译不过??
m_ctrledit.SetBkColor(RGB(100,204,200));中的SetBkColor说没定义,编译不过??
#1
你可以这样设置,假设你使用的EDit 控件 ,你只需要定义与Edit相关的
控制变量。如m_ctrledit.SetBkColor(RGB(100,204,200));
就可以设置背景色。
控制变量的定义:先打开ClassWizard...(类向导),接着选第二项
Member Variable,在这个页面可以定义控制变量;
控制变量。如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;
}
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
http://my.6to23.com/cigarette/q2.zip
#5
可以,不过,不对List Contrl有效
#6
OnCtlColor
#7
我是要在程序中动态的显示,也就是根据程序的变化来显示??
我主要用的是static控件??
我主要用的是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 ) );
当然,要先将设置透明的语句拿掉
只要把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说没定义,编译不过??
m_ctrledit.SetBkColor(RGB(100,204,200));中的SetBkColor说没定义,编译不过??