如何作出下面颜色的界面?

laomashitu 2011-11-08 08:32:03

简单说如何改变对话框、控件的颜色?
...全文
129 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laomashitu 2011-11-08
  • 打赏
  • 举报
回复

上面的图片是这张啦
laomashitu 2011-11-08
  • 打赏
  • 举报
回复
为什么按钮还是原来的颜色?没有成功改变呀?

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

// TODO: Change any attributes of the DC here
//下面代码是修改静态文本框的背景是黑色,文字颜色是红色
switch ( nCtlColor )
{
case CTLCOLOR_STATIC:
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(BLACK_BRUSH);

case CTLCOLOR_DLG:
pDC->SetTextColor(RGB(0,255,0));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(WHITE_BRUSH);

case CTLCOLOR_BTN:
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(BLACK_BRUSH);

return hbr;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
出现下面
http://hi.csdn.net/attachment/201111/8/9901518_1320720807X5U6.jpg

为什么按钮还是原来的颜色?没有成功改变呀?
奥雷连诺 2011-11-08
  • 打赏
  • 举报
回复
贴图。。。随你怎么贴,动态数字最好封装到CWnd或CStatic里,方便你Invalidate(FALSE)刷新。
allen_lanyuhai 2011-11-08
  • 打赏
  • 举报
回复
修改对话框颜色:
直接OnPaint()函数中添加:
CPaintDC dc(this);
CRect rcClient;
GetClientRect(rcClient);
dc.FillSolidRecet(rcClient,RGB(...)); //RGB(...)自定义背景色
添加WM_CTLCOLOR消息..在主对话框类中添加HBRUSH hBrush //这个是用来修改背景的颜色,要修改多个控件的不同背景色的话,可以添加多几个CBrush类的变量
在构造函数中添加:hBrush=CreateSolidBrush(m_hWnd,背景颜色);
HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch(pWnd->GetDlgCtrID())
{
case 控件ID:
pDC->SetBkMode(TRANSPARENT); //背景透明
pDC->SetTextColor(自定义颜色); //修改文本颜色
return (HBRUSH)hBrush; //修改背景颜色
break;
case 控件ID:
...........
...........
要修改几个控件的颜色,就添加几个case,看你自己,方法是一样的;
}
return hbr;
}



gameslq 2011-11-08
  • 打赏
  • 举报
回复
在消息WM_CTLCOLOR 进行处理

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

// TODO: Change any attributes of the DC here
//下面代码是修改静态文本框的背景是黑色,文字颜色是红色
switch ( nCtlColor )
{
case CTLCOLOR_STATIC:
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(BLACK_BRUSH);
return hbr;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}

详细请参考msdn对WM_CTLCOLOR消息的介绍
黑泡泡选手 2011-11-08
  • 打赏
  • 举报
回复
改变一下对话框背景,使用Static静态控件可以完成文字的显示,有专门的数字显示控件···
Kaile 2011-11-08
  • 打赏
  • 举报
回复
静态的全用图片,动态的数字也全用图片
xhb296 2011-11-08
  • 打赏
  • 举报
回复
首先必须在MESSAGE_MAP中添加ON_WM_CTLCOLOR,对话框类中添加WM_CTLCOLOR的消息函数OnColor(),同时给在类C**Dlg中添加OnColor()函数的声明,然后OnColor()函数添加你的想要得到结果响应的代码即可。
如:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor==CTLCOLOR_EDIT)
{
//CTLCOLOR_EDIT指所有文本控件,当然你也可以用pWnd->GetDlgCtrlID()==IDC_XX 对控件进行修改。IDC_XX是控件的ID
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0)); //文字颜色
pDC->SetBkColor(RGB( 204,232,207)); //背景颜色

}
振翅高飞 2011-11-08
  • 打赏
  • 举报
回复
另外,你看一下,英文版的windows程序设计 作者: 佩佐尔, 人民邮电出版社出版,那里面从sdk 的角度详细说明了关于按钮改变背景色及字体的特殊性,大概是在第九章。
shen_wei 2011-11-08
  • 打赏
  • 举报
回复
自己多看看MSDN OnCtlColor函数的介绍。。
振翅高飞 2011-11-08
  • 打赏
  • 举报
回复
对于应用OnCtlColor消息方法来说,按钮例外,除非重写类,或者自绘按钮。
buyong 2011-11-08
  • 打赏
  • 举报
回复
case后面没有break

15,979

社区成员

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

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