让所有的静态文本都透明好显示背景色

转载 2012年03月22日 11:27:43

让所有的静态文本都透明好显示背景色

一、CStatic从文件夹加载位图

HBITMAP hbitmap; 
//获得指向静态控件的指针 
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP); 
//获得位图句柄 
HBITMAP Bitmap; 
//设置静态控件的样式,使其可以使用位图,并试位标显示使居中 
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); 
//设置静态控件显示位图 
pStatic->SetBitmap(hBitmap);

二、设置对话框背景(小图可以漫延填充)

1、把你的图包含到程序的“Bitmap资源里,提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 

2定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码 
else 

//CDialog::OnPaint();//
要禁止这个调用 
CPaintDC dc(this); 
CRect rect; 
GetClientRect(&rect); 
CDC dcMem; 
dcMem.CreateCompatibleDC(&dc); 
CBitmap bmpBackground; 
bmpBackground.LoadBitmap(IDB_BITMAP); 
//IDB_BITMAP
是你自己的图对应的ID 
BITMAP bitmap; 
bmpBackground.GetBitmap(&bitmap); 
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); 
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, 
        bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); 
}

三、CStatic控件透明

可以这样作的: 
HBRUSH CShutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

//让所有的静态文本都透明好显示背景色
if(nCtlColor   ==   CTLCOLOR_DLG)   
{   
        //返回对话框的颜色   
   hbr=(HBRUSH)::CreateSolidBrush(RGB(146,161,202));     
}   
if(nCtlColor==CTLCOLOR_STATIC)   
{   
   //让静态文本框透明   
   pDC->SetBkMode(TRANSPARENT);   
   //pDC->SetTextColor(RGB(255,255,255));   //设置字体颜色白色   
   hbr=(HBRUSH)::GetStockObject(NULL_BRUSH);   
}   
if (nCtlColor==CTLCOLOR_EDIT)//设置EDIT控件的颜色
{
   HBRUSH hbr1 = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   hbr1=(HBRUSH)::CreateSolidBrush(RGB(0,0,0)); //背景黑色
   pDC->SetTextColor(RGB(255,255,255)); //文字白色
   pDC->SetBkMode(TRANSPARENT);   
   return hbr1;
}
return hbr;
}

四、CStatic背景透明后文本覆盖的问题

http://blog.vckbase.com/hatemath/archive/2005/08/04/10485.aspx

相关文章推荐

去除静态文本框的背景色和设置颜色

//缺省的静态文本框有一个灰色的背景色,确实很讨厌,字体颜色也很单调,不过我们可以设置 case WM_CTLCOLORSTATIC://设置静态文本框字体颜色   {    if (GetDl...

如何设置MFC静态文本背景为透明色?

//添加 WM_CTRLCOLOR 消息处理函数,是静态文本背景透明    并增加如下代码: HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC,...

对话框中设置 静态文本 背景为透明

添加对 WM_CTLCOLOR 消息的相应 函数 OnCtlColor。 代码如下: HBRUSH CTemplate::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT...

MFC 基本操作 --修改对话框、静态文本背景颜色

具体步骤: 1,为所要改变颜色的对话框类添加WM_CTLCOLOR消息函数。 2,把你原来添加消息函数的代码改成如下:   HBRUSH   CEX06aDialog::OnCtlColor(C...

VC 设置静态文本框的背景色(转)

http://hi.baidu.com/bluebirdye/item/7e016f71259a6446ef1e538b 填充静态文本框的颜色: 1、在对话框中添加一个静态文本框,...

MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件

MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效。 注:可以设置透明背景,但还不能做到透明度设置(如50%透明度)         如果设置了背景色,就不保留透明背景        ...

重拾MFC小细节之设置静态文本前、背景色

在大一时,学过MFC,不过那时刚接触编程,C/C++学完不久,跟重要的是没动手编程,后来又做ACM去了。现在大三了,各种实验课设老师都要求用VC可视化,于是借着机会学了点MFC皮毛,在此总结一些常用技...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让所有的静态文本都透明好显示背景色
举报原因:
原因补充:

(最多只允许输入30个字)