HBRUSH CDemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
// TODO: Change any attributes of the DC here
if(nCtlColor == IDC_EDIT1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
} if(nCtlColor == IDC_BUTTON1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
} if(nCtlColor == IDC_PROGRESS2)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}这是我的代码。
通过vc6.0 add window message handler添加OnCtlColor 函数
但是背景没有改变,
哪里出错了??
求大神指点 控件IDC背景VC
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
// TODO: Change any attributes of the DC here
if(nCtlColor == IDC_EDIT1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
} if(nCtlColor == IDC_BUTTON1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
} if(nCtlColor == IDC_PROGRESS2)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(TRANSPARENT);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}这是我的代码。
通过vc6.0 add window message handler添加OnCtlColor 函数
但是背景没有改变,
哪里出错了??
求大神指点 控件IDC背景VC
解决方案 »
- 通常这样的需求怎么设计?
- 为什么WritePrivateProfileString不执行
- 请问如何显示变化的edit control?
- 紧急求助:用vc时下你的fft2,怎么和用matlab中的fft2函数得出的结果不一样呢??
- 求助:状态栏显示工具栏按钮名,鼠标移动到工具栏时出错??
- 窗口的按钮被BitBlt函数覆盖后,如何重新显示按钮?
- 关于树控件的拖拉问题?
- 再问BLOB问题?(vc连oracle)最好哪位大虾有原码.
- MFC应用程序的图标是怎么生成的,我怎么改成别的(没有mfc那个图标了)?
- Winsock ::send 发送太快 接收时被合并问题
- 如何在html里面,让图片充满表格。
- 有使用Opencascade 的 高手吗
pDC->SetBkColor(TRANSPARENT);//这句是设置DC里文本背景颜色,参数不应该是TRANSPARENT
最关键的是,你必须返回一个空画刷,而不是CDialog::OnCtlColor返回的那个.
正确方法:return (HBRUSH)GetStockObject(NULL_BRUSH);//返回一个空画刷
参考:标签背景透明以及文字重叠问题解决方法
http://bbs.csdn.net/topics/390401008
单纯是标签的话,可以参考上面地址的解决方法.
按钮、编辑框或其他控件,最好是在控件本身的消息里绘制.
参考:
自绘实现半透明水晶按钮
http://bbs.csdn.net/topics/390336507