vc2010如何让tab控件上的静态文本的背景和tab一样啊?求大神帮忙~~~ 我在对话框上设置了一个tab控件,tab控件上添加了一些静态文本。由于tab控件有默认的背景色,和对话框的不一样,静态文本的背景色貌似和对话框一样,所以看起来特别怪,我想要静态文本的背景色和tab一样。如何实现啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 晕死了,不会添加图片,给个链接,麻烦大家看一下把~~~~http://hi.csdn.net/space-7841403-do-album-picid-1060665-goto-down.html tab控件设成透明在属性里设或程序里设 继承CStatic派生一个新的static类,例如CMyStatic,只需要在CMyStatic类中加上HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)就行了:HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor){ // TODO: 在此更改 DC 的任何属性 // TODO: 如果不应调用父级的处理程序,则返回非 null 画笔 pDC-> SetBkMode(TRANSPARENT); return HBRUSH(GetStockObject(HOLLOW_BRUSH));}使用CMyStatic,背景是透明的 自绘,把原来被遮住的地方给贴上去当然,如果你只是单纯的静态使用tab控件。不如用cbutton代替它,原理是一样的 我要是把tab设成透明的话,上面的所有控件就看不见了~~~~~,鼠标滑过的时候编辑框就会闪出来,其他的还是看不见~~~~~~~ 我想确认一下啊,我是应该改静态文本的,还是tab控件的啊? cbutton的控件外面还有一个线框,那个可以去掉么? 可以的,甚至你可以在主窗口的OnPaint中自己画一个TAB,当然,如果你可以使用CMFCButton类的话按钮的边框就更容易去掉了 我用了CMFCButton类的话按钮,去掉边框后颜色又和对话框颜色一样了,我哭了~~~ ?你要完全透明吗那么,CMFCButton类里面有一个变量,可以将其设置为true使得按钮透明当然,也可以派生CMFCButton类,重载其onPaint。然后。 谢谢各位出的注意,大家很热心,但都比较麻烦下面给出我的方法:在对话框的类中,利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)HBRUSH CDlgRef::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 if(nCtlColor==CTLCOLOR_STATIC) { HBRUSH hBrush=(HBRUSH)::GetStockObject(NULL_BRUSH); pDC->SetBkMode(TRANSPARENT); return hBrush; } // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr;}这种方法的优势在于改动较小,也比较容易,适合初学的我。不过就是需要在有tab控件的每个对话框,都得写一遍。没有tab控件的,不需要写。希望对大家有用把! 4楼 hideforever的回答是对的,对于很多对话框都有tab控件的时候很适用。我的项目中用到的不多,按照我的方法比较简单些。再此,谢谢各位的热情了。把分全给了 hideforever了 vc++中clistctrl控件显示SQL server中数据,内存不足! 求教,MFC中doc类的serialize函数是怎样与view的工具条上“保存”关联的? 高手告诉我这个小程序的运行结果 如何控制CListCtrl控件前面的复选框 怎样把一副位图的位图数据读取出来 微软宣布Smart Card是'.NET'的重要技术 编译动态连接库的时候居然出现个对话框! 大家知道侏罗纪软件公司吗? 高手请注意:我用hook捕捉键盘按键消息,但捕获的汉字有点问题,附源代码... 问一个2000 的问题 怎么将CTreeCtrl控件滚动条置顶 vs2010编译错误,qedit.h
http://hi.csdn.net/space-7841403-do-album-picid-1060665-goto-down.html
CMyStatic类中加上HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)就行了:
HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何属性 // TODO: 如果不应调用父级的处理程序,则返回非 null 画笔
pDC-> SetBkMode(TRANSPARENT);
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
使用CMyStatic,背景是透明的
当然,如果你只是单纯的静态使用tab控件。不如用cbutton代替它,原理是一样的
我想确认一下啊,我是应该改静态文本的,还是tab控件的啊?
那么,CMFCButton类里面有一个变量,可以将其设置为true使得按钮透明
当然,也可以派生CMFCButton类,重载其onPaint。然后。
在对话框的类中,利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)HBRUSH CDlgRef::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性
if(nCtlColor==CTLCOLOR_STATIC)
{
HBRUSH hBrush=(HBRUSH)::GetStockObject(NULL_BRUSH);
pDC->SetBkMode(TRANSPARENT);
return hBrush;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}这种方法的优势在于改动较小,也比较容易,适合初学的我。不过就是需要在有tab控件的每个对话框,都得写一遍。没有tab控件的,不需要写。希望对大家有用把!
4楼
hideforever的回答是对的,对于很多对话框都有tab控件的时候很适用。
我的项目中用到的不多,按照我的方法比较简单些。再此,谢谢各位的热情了。把分全给了 hideforever了