文本背景透明与窗口全屏的相互影响

来源:互联网 发布:intouch9.5软件下载 编辑:程序博客网 时间:2024/05/22 06:43

以前的项目也用到了文本背景透明的功能,实现方法就是从网上找的,在对话框的OnCtlColor消息中添加代码:

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

 // TODO:  在此更改 DC 的任何属性

 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
 switch(pWnd->GetDlgCtrlID())
 {
 case IDC_STATIC_APPNAME:
  pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(255,255,255));

  return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
 default:
  break;
 }
 return hbr;
}

可是今天做的项目用这些代码就怎么也不灵了,对比以前的项目,翻来复去的查了一上午,最后发现今天的项目和以前的项目不同的地方就是今天的项目窗口打开是满屏的,实现方法是在OnInitDialog中加了一句代码:

SetWindowPos(&wndTop,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),SWP_SHOWWINDOW);

当我把这句代码去掉后,文本透明背景就能正常显示了。这句话就是罪魁祸首。但去掉这一句窗口就不能全屏了,怎样才能让文本背景透明又能让窗口全屏显示呢?

把上面这句换成下面这句就行了:

::SetWindowPos(this->m_hWnd,HWND_BOTTOM,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),SWP_NOZORDER);

别问我为什么,我也不明白,我还是那句话:折磨死人不偿命的VC!!!!


0 0
原创粉丝点击