加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何使CStatic控件(MFC)透明?

发布时间:2020-12-14 02:51:47 所属栏目:Windows 来源:网络整理
导读:我的应用程序有一个启动对话框,其中包含一个填充整个对话框的图像.另外还有一个CStatic控件,它为用户显示一些可变信息.我使用以下代码使CStatic控件透明: HBRUSH CStartbildDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor){ if(pWnd-GetDlgCtrlID() =
我的应用程序有一个启动对话框,其中包含一个填充整个对话框的图像.另外还有一个CStatic控件,它为用户显示一些可变信息.我使用以下代码使CStatic控件透明:

HBRUSH CStartbildDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
{
    if(pWnd->GetDlgCtrlID() == IDC_STATIC_INFO)
    {
        pDC->SetBkMode(TRANSPARENT);
        return reinterpret_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
    }
    else
        return CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}

当我使用GetDlgItem(IDC_STATIC_INFO) – > SetWindowText更改静态控件的文本时,新文本与旧文本重叠(旧文本不会被删除).我试图用GetDlgItem(IDC_STATIC_BILD) – > Invalidate()调用SetWindowText图像重绘背景,但是没有显示信息文本(既不是旧的也不是新的).

你知道我如何使静态控件透明,所以我也可以用新文本覆盖它吗?

谢谢你的帮助!

解:
来自Sanja的codeproject-link的方法2(改编)为我工作.

GetDlgItem(IDC_STATIC_INFO)->SetWindowText(tmp);
CRect rect;
GetDlgItem(IDC_STATIC_INFO)->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect);
UpdateWindow();

解决方法

您好,你可以找到透明静态样品 here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读