响应对话框的WM_CTLCOLOR消息  
  HBRUSH   CxxxDlg::OnCtlColor(...)  
  {  
  ...  
  if(nCtlColor==目标控件ID)  
  {  
  pDC->SetBkMode(TRANSPARENT);  
  return   (HBRUSH)GetStockObject(NULL_BRUSH);  
  }  
  ...  
  }Top

4 楼allenhiman(9Ft)回复于 2006-04-28 14:45:04 得分 0

楼上的方法可行吗?  
  我感觉没那么简单?  
  有人测试没?Top

5 楼tfq2002(天涯闲游)回复于 2006-04-28 15:57:27 得分 0

to:   fisker0303(天塌了,地陷了,小花狗不见了.)    
   
  这种方法是可以解决改变CEdit框的背景色,让CEdit框的底色不再是白色  
  但不能实现楼主所说的透明效果Top

6 楼zoulie(落伍者)回复于 2006-04-28 21:09:20 得分 0

试试SetLayeredWindowAttributes(HWND   hwnd,COLORREF   crKey,BYTE   bAlpha,DWORD   dwFlags)  
  使窗体拥有半透明效果,Window2000以上才支持.Top

7 楼chib(天宇)回复于 2006-04-29 15:37:12 得分 0

OnCtlColor(...)   添加  
  if       (nCtlColor       ==       CTLCOLOR_STATIC)      
  {      
  pDC->SetBkMode(TRANSPARENT);      
  return       (HBRUSH)::GetStockObject(NULL_BRUSH);      
  }  
   
  所有的static透明Top

8 楼Snow_Ice11111(雪上加冰)回复于 2006-04-29 16:11:19 得分 0

对话框的WM_CTLCOLOR消息中用大家给的方法只能让Static、ListBox(包括ComboBox的下拉框)、TreeCtrl等控件透明显示,Edit不能用这种方法,只能自己用窗口背景图片的相应部分图案自绘它了。Top

9 楼tomtom123(abc)回复于 2006-04-30 00:37:20 得分 0

MARKTop

10 楼MLiang(俺想有栋房)回复于 2006-04-30 09:09:37 得分 0

Edit控件可以用这种方法,很奇怪的是Edit控件属于CTLCOLOR_STATICTop

11 楼zh2817()回复于 2006-04-30 10:18:28 得分 0

http://www.vckbase.com/document/viewdoc/?id=182Top

posted on 2008-11-05 21:36  最简单的  阅读(700)  评论(0)    收藏  举报