对话框设置位图背景并透明控件.doc_第1页
对话框设置位图背景并透明控件.doc_第2页
对话框设置位图背景并透明控件.doc_第3页
对话框设置位图背景并透明控件.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用OnEraseBkgnd函数实现对话框位图背景(CABoutDialog_WM_ERASEBKGN_MDI Child Frame)BOOL CDisplayBmpBackGroundDlg:OnEraseBkgnd(CDC *pDC)CRect rect;GetClientRect(&rect); CBitmap m_pBmp;BITMAP bm;CDC dcMem;m_pBmp.LoadBitmap(IDB_BITMAP1);m_pBmp.GetBitmap(&bm);/得到位图尺寸dcMem.CreateCompatibleDC(pDC);CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp);pDC-SetStretchBltMode(COLORONCOLOR);/这个模式不设置的话会导致图片严重失真pDC-StretchBlt(0,0,rect.Width() ,rect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);dcMem.SelectObject(pOldBitmap); return TRUE;到这里就可以实现位图了,但STATIC控件背景不透明,显得很难看。2、来我们让STATIC控件透明吧HBRUSH CDisplayBmpBackGroundDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) if(nCtlColor = CTLCOLOR_DLG | nCtlColor = CTLCOLOR_BTN | nCtlColor = CTLCOLOR_STATIC) pDC-SetBkMode(TRANSPARENT); return HBRUSH(GetStockObject(HOLLOW_BRUSH);到这里其实就可以了,BMP的图片背景实现了,文本框的透明也实现了。3、补充说明:如果程序运行过程中,需要设置文本框的字体的话,会出现显示字体重叠不刷新的问题4、这就要对该控件或者对话框处理了,要刷出新字体来。CWnd* pWnd = GetDlgItem(IDC_STATIC1);pWnd-SetWindowText();/需要修改的控件标题/这里可以刷整个对话框,但如果较频繁的话,很明显能看出来,就选择刷显示字体的那块区域就可以了pWnd -GetParent()-InvalidateRect(CRect(0,0,100,50),TRUE); Static控件背景透明时文字覆盖问题的解决方案HateMath引子: 我泡论坛的时间并不长,但印象中已经有好多次在VC区看到类似这样的问题,而且经常议之未果:请问static控件设置透明后,再更改文字时会与之前的文字覆盖,怎么解决 用pDC-SetBkMode(TRANSPARENT);设置透明后,要改变控件的文字就会发生文字重叠,如果不使用透明就不会,请问在透明状态下改变文字如何不发生重叠?起初不以为意,闲暇时自己试了一下,发现:文本确实有重叠。如下图(为了更好的说明问题,我特意设置了背景和前景色): 初步探究其原因,猜想应该是static控件的背景没有得到及时刷新。那就好办了,解决办法:强制刷新。方法1:GetDlgItem(IDC_STATIC)-UpdateWindow();无效.方法2:GetDlgItem(IDC_STATIC)- RedrawWindow();无效.方法3:GetDlgItem(IDC_STATIC)- Invalidate ();无效.方法4:还不行?来点小技巧SetDlgItemText(IDC_STATIC, );/多用几个空格,把原先的文本”冲”掉SetDlgItemText(IDC_STATIC, TEST);郁闷了.难道这么个小问题要用高级的方法搞?这个问题困扰了我好几天,终于在一次上WC时突然顿悟:static的背景已经是透明的了,那么残留的文本应该是画在static的父窗口上的。顿悟之后就是感叹:自己真笨啊。办法有了:在给static设置新的文本之后(不是之前!)刷新父窗口。void CTestStaticDlg:OnTimer(UINTnIDEvent)CStringstrTime;CTime time =CTime:GetCurrentTime();strTime =time.Format(%y年%m月%d日%H:%M:%S);GetDlgItem(IDC_STATIC)-SetWindowText(str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论