对话框添加消息OnCtlColor
添加代码:
switch(pWnd->GetDlgCtrlID())
{
case IDC_RADIO1:
case IDC_RADIO2:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break; default:
break;
}
添加代码:
switch(pWnd->GetDlgCtrlID())
{
case IDC_RADIO1:
case IDC_RADIO2:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break; default:
break;
}
解决方案 »
- 字符串如何去掉前面两位
- !!!!!问题的问题!!!!!!!!!!!!:http://topic.csdn.net/t/20050602/10/4053387.html
- 如何传递参数给控件?
- 一个关于窗口句炳的问题。
- 如何在Win32程序中绘图
- 为什么调用了CStatic类里的GetDC()->SetBKMode(TRANSPARANT)后,画出来的位图的背景色还是不透明呢?
- vc 学习网站收集,源码网站收集
- 我想用一组数据做一条曲线, 且使该条曲线成为一个对象,可以激活和编辑,如何做?
- 怎么搞积分?
- 请问如何得到一个对话框的句柄?
- 线程生产者与消费者//换成if逻辑怎么不对???
- readfile数据读取转化代码报错
BEGIN_MESSAGE_MAP(CDlgTTTDlg, CDialog)
//{{AFX_MSG_MAP(CDlgTTTDlg)
...
//ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
HBRUSH CTestDlg::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:
if (pDC) pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break;
default:
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
这个属性是false的。没设置。我知道上面的方法能改变其他控件的背景,现在其他控件文字后面都没有其他颜色的,感觉就像是写在DLG上的。但是就只有这个checkbox控件不得行啊
这个是改变static控件的背景,没办法改变checkbox的。要不上个图来给我看看吧!
我做的界面太丑了·····
照着你写的
HBRUSH CSHA256Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
if(pDC)
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
break;
default:
break;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
结果是这样
并且,如果我返回的是一个WHITE_BRUSH 复选框的背景会变为白色的。但是就是不会变为你那样的
你那个checkbox是M$的标准控件吗?重写了没?
你的运行环境了?你自己另外弄个dialog的工程试试ok不,暂时别用CSHA256Dlg,看看效果不行email给我,代码不复杂的话
那个aero效果貌似不错
另外就只能参考gdi+了
还是不行··新建个工程都不行。
我是visual 08 win7···还有··ls,那样子确实丑得没那么多了··
HBRUSH CSHA256Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
break;
}
return hbr;
}
把NULL_BRUSH改成HOLLOW_BRUSH
想知道在VS2008+Win7下是否真有异常?
这个帖子好多天啦~有人试么,求个结论~
不过倒是可以把编辑框后面的背景图截下来,然后弄成编辑框的背景,只是这样一来,有多少个编辑框,就得弄多少个画刷了。并且,我可以给编辑框弄背景色什么的,就是不能弄成透明,弄成透明,必然有错,网上我能找的方法都试过了。
这叫个啥问题啊?让我们开发者怎么过啊?
都是 MFC 类重载 增加了些处理
区别说来话长,你可以GOOGLE一下吧。简单说就是宽字符和多字节的区别。