Dialog的背景色怎样改?(希望不同的Dialog有不同的背景色怎样做?)
热门软件下载:
dialog的背景色怎样改?(希望不同的dialog有不同的背景色怎样做?)
推荐阅读
比较常用的三种方法
1
在对话框调用domodal()函数前调用setdialogbkcolor
这个函数的原型是void setdialogbkcolor,colorref clrctltext=rgb,他只有两个参数:
只要设置参数cltctlbk旧可以改变背景色了
2
重载onctlcolor(cdc* pdc,cwnd* pwnd,unit nctlcolor)函数,即对wm_ctlcolor消息的处理
此函数回返回一个画刷句柄,所以只要返回一个其他颜色的画刷句柄就可以改变对话矿的颜色了
3
重载onpaint即对wn_paint 消息的处理
来晚一步,都让楼上的给说完了
我补充一点,如果自已画的话要取得客户区的dc句柄才行,否则就是画整个窗口了
cclientdc dc(this)
crect rect;
getclientrect(rect)
dc.fillsolidrect(0,0,rect.right,rect.bottom)
一.设置对话背景:
如果你想用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 parents handler should not be called
return (hbrush)m_brush;
}
其它控件和它类似。
相关评论