如何改变对话框的背景色

yashi 2003-12-12 10:24:42
用mfc做一个基于对话框的程序,现在想改变该对话框的背景色,该怎么做?
...全文
243 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
checkyvc6 2003-12-12
首先定义和创建用来填充对话框背景色的画刷
在头文件中定义画刷对象
CBrush m_bkBrush;
在对话框的初始化函数中创建画刷
m_bkBrush.CreateSolidBrush(RGB(0,128,255));
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch(nCtlColor) {
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_EDIT:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_DLG:
return static_cast<HBRUSH>(m_bkBrush.GetSafeHandle());
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

这种方法可以具体控制那个控件显示什么样的北京色和字体的颜色通过在前面加上
if(pWnd->GetDlgCtrlId() ==IDC_EDIT1)
{
//改变Pdc的属性
}
  • 打赏
  • 举报
回复
yashi 2003-12-12
哦,我用的是vc.net刚查了msdn,里面关于CWinApp::SetDialogBkColor只有一句话:
This function is obsolete.

看来在vc7.0里面只能用第二个方法了。
  • 打赏
  • 举报
回复
vcforever 2003-12-12
void SetDialogBkColor(
COLORREF clrCtlBk = RGB(192, 192, 192),//对话框的背景色
COLORREF clrCtlText = RGB(0, 0, 0) //显示文本的背景色
);
  • 打赏
  • 举报
回复
yashi 2003-12-12
1、在CXXApp.cpp文件中的InitInstance()函数中用
SetDialogBkColor();来设置程序中所有对话框的背景色

我用此方法,无效,是不是还有其它注意的地方。

2。在要改变背景色的对话框中重载WM_CTLCOLOR消息,在消息处理函数中如下处理
首先定义和创建用来填充对话框背景色的画刷

是有效的,但是会发生运行错误。什么原因呢?
  • 打赏
  • 举报
回复
modena 2003-12-12
OnEraseBkgnd中开始增加:


CRect rtClient;
GetClientRect(&rtClient);

pDC->PatBlt(0,0,rtClient.Width(),rtClient.Height(), WHITENESS);

return TRUE;

  • 打赏
  • 举报
回复
vcforever 2003-12-12
1、在CXXApp.cpp文件中的InitInstance()函数中用
SetDialogBkColor();来设置程序中所有对话框的背景色

2、在要改变背景色的对话框中重载WM_CTLCOLOR消息,在消息处理函数中如下处理
首先定义和创建用来填充对话框背景色的画刷
在头文件中定义画刷对象
CBrush m_bkBrush;
在对话框的初始化函数中创建画刷
m_bkBrush.CreateSolidBrush(RGB(0,128,255));
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch(nCtlColor) {
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_EDIT:
pDC->SetBkMode(TRANSPARENT);
case CTLCOLOR_DLG:
return static_cast<HBRUSH>(m_bkBrush.GetSafeHandle());
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
  • 打赏
  • 举报
回复
sinhighly 2003-12-12
OnPaint
里画背景
  • 打赏
  • 举报
回复
zyleon 2003-12-12
调用CWinApp : : SetDialogBkColor可以改变所有应用程序的背景颜色。第一个参数指定了背景颜色,第二个参数指定了文本颜色。下例将应用程序对话设置为蓝色背景和黄色文本。
BOOL CSampleApp : : InitInstance ( )
{

//use blue dialog with yellow text .
SetDialogBkColor (RGB (0, 0, 255 ), RGB ( 255 , 255 , 0 ) ) ;

}
  • 打赏
  • 举报
回复
Developerljm 2003-12-12
BOOL CApp1View::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;

cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), HBRUSH(RGB(0x2,0x0,0x0)+1), NULL);//

return TRUE;
}
  • 打赏
  • 举报
回复
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
社区管理员
  • 界面
申请成为版主
帖子事件
创建了帖子
2003-12-12 10:24
社区公告
暂无公告