出自http://my.oschina.net/ypimgt/blog/60951

优点:
    1.Dialog 窗体完全透明。 
    2. 窗体上的控件不透明、 DC 绘制的图形不透明。 
    3. 拖动窗体上用 DC 绘制的图形可以移动窗体。 
缺点: 
    1. 窗体设置透明使用是掩码颜色,所以在窗体上用 DC 绘图的过程当中如果采用了和透明掩码颜色相同的颜色将不会显示出来。 
    2. 如果将 Border 属性设置成了 NONE ,那么想通过响应 WM_NCHITEST 消息来实现窗体拖动就无法完成了。只能通过在窗体中增加 DC 绘图的方式来完成。

3.DC绘图时虽然支持半透明绘图,但是透明绘图区域不透明。

1.在OnInitDialog()或OnPaint()中加入:

1
2
3
4
5
<b>COLORREF maskColor = RGB(255,255,255);   //掩码颜色
SetWindowLong(this->GetSafeHwnd(),
              GWL_EXSTYLE,
              GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)| 0x80000);  //设定窗体使用扩展模式
SetLayeredWindowAttributes(maskColor,255,1);  </b>

2.在重载的消息WM_CTLCOLOR中加入:(其中包括Static背景透明方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<b>HBRUSH CTimeRemainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
 
    // TODO:  在此更改 DC 的任何特性
    //
    if(nCtlColor == CTLCOLOR_DLG)   //此处设置为窗体透明,CTLCOLOR_DLG表示对话框
    {
        CBrush *brush;
        brush = new CBrush(RGB(255,255,255));
        return (HBRUSH)(brush->m_hObject);
    }
    switch(pWnd->GetDlgCtrlID())   //此处为设置Static Text文本透明。
    {
    case IDC_LEFTTOP:
        pDC->SetBkMode(TRANSPARENT);
        pDC->SetTextColor(RGB(125,0,0));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    default: break;
    }
    // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    return hbr;
}</b>

VC窗体透明而控件不透明以及Static文本背景透明方法的更多相关文章

  1. 窗体透明,但窗体上的控件不透明(简单好用)good

    1.在Delphi中,设置窗体的AlphaBlend := true;AlphaBlendValue := 0-255; AlphaBlendValue越小窗体的透明度就越高.这种方法将会使窗体和窗体 ...

  2. VC 透明滑动控件Slider Control

    操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为滑动控件设置背景透明 经常在编写有背景的程序时,滑动控件Slider Control看起来与背景十分不合,我们可 ...

  3. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  4. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  5. WinForm中新开一个线程操作 窗体上的控件(跨线程操作控件)

    最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录窗体的显示,开了一个线程去加载数据远程的数据,会报一个错误"线程间操作无效: 从不是 ...

  6. [译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)

     排列窗体上的控件(Laying Out Widgets on a Form) 中英文对照:form(窗体),layout(布局或者排列,意思是进行窗体上控件的排列的过程,如大小位置等) absolu ...

  7. VC中动态添加控件

    VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...

  8. 【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?

    做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景.我们曾经是这样走来的: 第一版: 好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉 ...

  9. VC中添加web控件的方法

    在VC中使用WebBrowser控件的两方法 黄森堂(vcmfc)著 ClassWizard方式: 1.创建包装类:View->ClassWizard->Add Class->For ...

随机推荐

  1. Windows服务调试状态下用Console启动

    最近一直在用服务,发现服务也没有那么难调试. Windows服务调试状态下用Console启动:步骤分两步 第一步改Program,启动代码 static class Program { /// &l ...

  2. du和df

    du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.(-s:summarize 仅显示总计,只列出最后加总的值) df,disk ...

  3. Java 异常基本结构

    异常的定义:阻止当前方法或作用域继续执行的情况,即程序无法正常执行下去称之为异常. 异常的基本结构: 所有不正常的类都继承与Throwable类,包括Error类和Exception类 Error一般 ...

  4. MySQL基本命令脚本

    一.基本命令 1.启动服务 说明:以管理员身份运行cmd 格式:net start 服务名称 示例:net start mysql57 2.停止服务 说明:以管理员身份运行cmd 格式:net sto ...

  5. redis笔记_源码_跳表skiplist

    参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/dat ...

  6. 配置文件一web.xml

    前言 web.xml中标签的加载顺序:<context-param> > <listener> (spring的相关工作) > filter >servlet ...

  7. Bootstrap FileInput.js + springmvc uploadFile

    下载FileInput.js          http://plugins.krajee.com/file-input/demo     https://github.com/kartik-v/bo ...

  8. kmp变形,带通配符的kmp——华科校赛E 好题

    https://blog.csdn.net/a302549450/article/details/80948741?tdsourcetag=s_pctim_aiomsg 上面是题解的链接.., 其实和 ...

  9. go网络库cellent实现socket聊天功能

    一 .介绍 cellnet是一个组件化.高扩展性.高性能的开源服务器网络库 git地址:https://github.com/davyxu/cellnet 主要使用领域: 游戏服务器 方便定制私有协议 ...

  10. layui点击按钮自动刷新页面问题

    问题 <button class="layui-btn layui-btn-primary" onclick="findData()">查询< ...