一个界面的小问题(对话框) 用mfc建立基于对话框的额 项目 在对话框的初始化中加载了 白色背景图。结果对话框上的 static text 控件都有阴影了(虽然设置了 控件透明属性)请问如何解决这个问题 使得控件没有阴影 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是不是static text 控件有白色矩形块背景?是的话在该类头文件中定义一个CBrush m_brush;在构造函数m_brush.CreateStockObject(HOLLOW_BRUSH);在HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { return m_brush;}不知道是不是你说的,是的话,试试吧 直接这样呢pDC->SetBkMode(TRANSPARENT);pDC->TextOut(75,33,str,lstrlen(str)); 和你遇到同样的问题,已经解决了:HBRUSH CXXXDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CXXXDLG::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID()) { pDC->SetBkMode(TRANSPARENT); //pDC->SetTextColor(RGB(128,128,255)); //pDC->SetBkColor(RGB(255,255,255)); return (HBRUSH)GetStockObject(HOLLOW_BRUSH); } // TODO: Return a different brush if the default is not desired return hbr; }呵呵。 那么麻烦做什么?直接在 工程的 CEasyComApp::InitInstance()下添加代码: //设置对话框背景和文本颜色(对所有控件生效)====== SetDialogBkColor(RGB(255,255,255), RGB(0,0,0)); //==========================搞定! 这是正常的,没有别的方法可以解决。。 你只能重写它 又或者不要用 Text 控件。 Picture Control 将它的 type 设置 Owner Draw 属性。使用方法跟 text 差不多 将static text控件的背景颜色全改成白色。 HBRUSH CXXXDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 里面修改你需要的类型颜色等 原因在于static控件的背景设置存在问题, 直接改成背景透明就可以了:HBRUSH CMyDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CMyDLG::OnCtlColor(pDC, pWnd, nCtlColor); //只对某一个static控件有效 //if (pWnd->GetDlgCtrlID() == IDC_STATIC_YOURS) //对所有static控件有效 if (nCtlColor == CTLCOLOR_STATIC) { //创建绿色背景画刷 HBRUSH m_brush = CreateSolidBrush(RGB(0, 255, 0); //设置背景透明 pDC->SetBkMode(TRANSPARENT); //返回背景画刷, 改变static背景颜色 return m_brush; } return hbr; } ATL中的正则表达式一函数Replace的实现问题 急!为什么将.ico文件中的图形粘贴到工具栏中后运行程序发现工具栏中的图片色彩失真??? 用CDC显示文字时,如何精确的取得所显示的文字长度(像素点长度)? ISAPI编程,客户端和服务器端实现文件(upload/download)传输,思路或源码, 求:Win32实现webbowser 生成随机数 问题比较长,请大家进来看一看,提供点思路,不胜感激:) 文档/视结构问题 問一个dll中关于VB和VC字符串的问题:急急急 鼠标移到按钮上时为什么不变色? SDI里,Frame 调用 View vc怎么调用pb写的COM组件dll
是的话
在该类头文件中定义一个CBrush m_brush;
在构造函数m_brush.CreateStockObject(HOLLOW_BRUSH);
在HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
return m_brush;
}不知道是不是你说的,是的话,试试吧
pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(75,33,str,lstrlen(str));
{
HBRUSH hbr = CXXXDLG::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID())
{
pDC->SetBkMode(TRANSPARENT);
//pDC->SetTextColor(RGB(128,128,255));
//pDC->SetBkColor(RGB(255,255,255));
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
呵呵。
SetDialogBkColor(RGB(255,255,255), RGB(0,0,0));
//==========================搞定!
Picture Control 将它的 type 设置 Owner Draw 属性。
使用方法跟 text 差不多
里面修改你需要的类型颜色等
HBRUSH CMyDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CMyDLG::OnCtlColor(pDC, pWnd, nCtlColor);
//只对某一个static控件有效
//if (pWnd->GetDlgCtrlID() == IDC_STATIC_YOURS)
//对所有static控件有效
if (nCtlColor == CTLCOLOR_STATIC)
{
//创建绿色背景画刷
HBRUSH m_brush = CreateSolidBrush(RGB(0, 255, 0);
//设置背景透明
pDC->SetBkMode(TRANSPARENT);
//返回背景画刷, 改变static背景颜色
return m_brush;
}
return hbr;
}