背景颜色 在VC中如何设置对话框的背景颜色? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载WM_ERASEBKGND消息函数,然后利用它的参数pDC进行设置即可。 比较常用的三种方法1在对话框调用DOModal()函数前调用SetDialogBkColor()这个函数的原型是void SetDialogBkColor(COLORREF clrCtlBk=RGB(192,192,192),COLORREF clrCtlText=RGB(0,0,0),他只有两个参数:只要设置参数cltCtlBk旧可以改变背景色了2重载OnCtlColor(CDC* pDC,CWnd* pWnd,UNIT nCtlColor)函数,即对WM_CTLCOLOR消息的处理此函数回返回一个画刷句柄,所以只要返回一个其他颜色的画刷句柄就可以改变对话矿的颜色了3重载OnPaint()即对WN_PAINT 消息的处理 一.设置对话背景:如果你想用1位图作为对话背景,提供下面方法:重载 OnPaint 函数,对话框的 OnPaint 默认有两个处理,在第二个中加入这些代码: if (IsIconic()) { ... ... } else { // 开始画背景 CPaintDC dc( this ); CDC back; CBitmap bmp; bmp.LoadBitmap( IDB_BITMAP1 ); // 建立背景图片 back.CreateCompatibleDC( &dc ); // 建立一个图形缓冲并载入背景图 back.SelectObject( &bmp ); dc.BitBlt( 0, 0, 100, 100, &back, 0, 0, SRCCOPY ); // 画在对话框中,可以把 100, 100 改成具体的对话框大小 bmp.DeleteObject(); CDialog::OnPaint(); } 二:设置控件背景:1 设置CStatic控件背景:(1).从CStatic派生一个类CMyStatic;(2).添加成员变量CBrush m_Brush;(3).CMyStatic::CMyStatic(){ m_Brush.CreateSolidBrush(RGB(197,200,208));}(4)响应=WM_CTLCOLOR消息:HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor) { // TODO: Change any attributes of the DC here pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT); // TODO: Return a non-NULL brush if the parent's handler should not be called return (HBRUSH)m_Brush;}其它控件和它类似。 高分寻找一本的PDF!!!!!! CListBox c程序如何调用C++写的dll 请教程序的错误问题 MFC程序如何安全地完全地退出? 关于Edit框的滚动条问题 急急,大送分,出现如下错误:[0x5f4112864]指令引用的[0x000000020]内存,该内存不能为read 世界七大奇迹选举 (中国人必看) 24点问题? 关于抓屏的问题。 重绘函数Invalidate()怎么用?? 谁能解释一下 AdjustTokenPrivileges 函数的用法??
1
在对话框调用DOModal()函数前调用SetDialogBkColor()
这个函数的原型是void SetDialogBkColor(COLORREF clrCtlBk=RGB(192,192,192),COLORREF clrCtlText=RGB(0,0,0),他只有两个参数:
只要设置参数cltCtlBk旧可以改变背景色了2重载OnCtlColor(CDC* pDC,CWnd* pWnd,UNIT nCtlColor)函数,即对WM_CTLCOLOR消息的处理此函数回返回一个画刷句柄,所以只要返回一个其他颜色的画刷句柄就可以改变对话矿的颜色了3重载OnPaint()即对WN_PAINT 消息的处理
如果你想用1位图作为对话背景,提供下面方法:
重载 OnPaint 函数,对话框的 OnPaint 默认有两个处理,在第二个中加入这些代码:
if (IsIconic())
{
...
...
}
else
{
// 开始画背景
CPaintDC dc( this );
CDC back;
CBitmap bmp; bmp.LoadBitmap( IDB_BITMAP1 ); // 建立背景图片
back.CreateCompatibleDC( &dc ); // 建立一个图形缓冲并载入背景图
back.SelectObject( &bmp ); dc.BitBlt( 0, 0, 100, 100, &back, 0, 0, SRCCOPY ); // 画在对话框中,可以把 100, 100 改成具体的对话框大小 bmp.DeleteObject();
CDialog::OnPaint();
} 二:设置控件背景:
1 设置CStatic控件背景:
(1).从CStatic派生一个类CMyStatic;
(2).添加成员变量CBrush m_Brush;
(3).
CMyStatic::CMyStatic()
{
m_Brush.CreateSolidBrush(RGB(197,200,208));
}
(4)响应=WM_CTLCOLOR消息:
HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT); // TODO: Return a non-NULL brush if the parent's handler should not be called
return (HBRUSH)m_Brush;
}
其它控件和它类似。