首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 设立控件透明背景色

2012-10-20 
MFC 设置控件透明背景色我在网上了搜了下:// 1. 在对话框的头文件中加入afx_msg HBRUSH OnCtlColor(CDC* p

MFC 设置控件透明背景色
我在网上了搜了下:
// 1. 在对话框的头文件中加入
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);

// 2. 在对话框的cpp文件中加入
BEGIN_MESSAGE_MAP(CtransparentDlg, CDialog)
  ON_WM_CTLCOLOR()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

HBRUSH CtransparentDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  HBRUSH hBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);  

  if(nCtlColor == CTLCOLOR_STATIC)
  {
  pDC->SetBkMode(TRANSPARENT);  
  return (HBRUSH)::GetStockObject(NULL_BRUSH);  
  }
  return hBrush;
}

很多的做法都是这样的,但为什么我做不到透明的效果。求指点。。

[解决办法]
我试了一下,没问题啊
if(nCtlColor == CTLCOLOR_STATIC) 
这是对Static控件进行透明处理的
你想透明的是static么?
[解决办法]
int nID = pWnd->GetDlgItemID();
if(nID == "你的控件ID")
{
...
}
这样是否能解决?
[解决办法]
不是在头文件中加入那些东西,而是重载主窗口对话框的WM_CTLCOLOR消息

热点排行