当前位置: 首页 > news >正文

网站可以做2个公司的吗/网络推广公司企业

网站可以做2个公司的吗,网络推广公司企业,如何做设计师个人网站,伊春网站建设本文主要向大家介绍了VC编程之VC实现顶层窗口的透明与实现子窗口的透明,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。 本人在vc开发过程中,多次因窗口透明而煞费苦心,在本人的前一文章《UpdateLayeredWindow与SetLa…

本文主要向大家介绍了VC编程之VC实现顶层窗口的透明与实现子窗口的透明,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本人在vc开发过程中,多次因窗口透明而煞费苦心,在本人的前一文章《UpdateLayeredWindow与SetLayeredWindowAttributes》中已经指明实现窗口的透明方法,在过往实际的开发过程中我也一直沿袭这一做法,但也并不是屡试不爽,实际应用过程中的缺陷暴露如下:

(1)SetLayeredWindowAttributes和UpdateLayeredWindow两个API函数只能适用于层级窗口,也就是非子窗口;

(2)UpdateLayeredWindow方法效率比SetLayeredWindowAttributes效率高,但是它是通过绘制到某一个内存中间设备上下文后,将设备上下文拷贝到指定层级窗口上实现的,也就是所有的绘制都必须在内存设备上下文实现,甚至包括所有子控件,所以通过它实现透明,父窗口上的所有子控件“不见了”,所以应特别注意[这也是经验总结,切记!],但好处是指定不透明度为255时候,它自动从使用的png的alpha[当然不一定是png贴图,只要贴图有alpha通道]通道去透明窗口,也就是透明度就是图片的透明度,否则不使用贴图情况当然可以使用const

透明常亮指定透明度;SetLayeredWindowAttributes透明也有两种方式,第一种是通过指定COLORREF crKey,

掩码色,也就是参数2指定为要剔除的掩码色【窗口自动将所有背景中为crkey的掩码色的背景完全透明】,当然使用掩码色方法的时候必须指定 DWORD dwFlags为LWA_COLORKEY,即使用掩码色透明;第二种方式就是不使用掩码色,而是使用透明度去透明而不关心你背景颜色到底如何,只是将整个窗口加上一层透明度,这时crkey忽略填写0,将bAlpha不透明度指定成0-255的任意值,0指完全透明,255指完全不透明,此时指定 DWORD dwFlags为LWA_ALPHA.

BOOL SetLayeredWindowAttributes(

HWND hwnd,

COLORREF crKey,

BYTE bAlpha,

DWORD dwFlags

);通过对比可以知道SetLayeredWindowAttributes中第一种透明方法是逐个去掉掩码色位置的像素,而UpdateLayeredWindow是通过二进制与操作实现的,所以UpdateLayeredWindow效率要高很多很多;

(3)由于是层级窗口,在实际应用中将透明窗口都设置为透明窗口导致的问题是,切换到其他页面的时候,必须手动去隐藏改层级窗口,如果手动SetParent这层级窗口就失效,调用后自动带上WS_CHILD属性导致层级窗口透明无法实现;

(4)最小化后再显示,透明窗口显示比其他窗口快,感觉覆盖在其他窗口上的透明窗口“不是一伙的”,失联了一般;

(5)透明窗口单独跑到桌面上去了,应用程序最小化不可见;

以上是使用层级窗口透明的方法以及使用该方法暴露的若干问题,针对以上问题,为了完善或避免以上方法,我一直在寻找使得子窗口透明的方法,不巧,偶然中使用中空画刷,这才让我恍然大悟:中空HOLLOW_BRUSH就等于NULL_BRUSH,含义就是不使用画刷,也就是不做画刷填充,不填充其实就是透明,提到这边不知道各位网友是否已经想到实现子窗口透明的方法?算了,不卖关子了,听我细细道来:首先窗口以及窗口上的子控件绘制成什么样的背景是通过什么方法告知窗口的,这里提的字很关键, 是告知不是让你代码实现,对!就是通过OnCtlColor的返回值来告知父窗口到底将本窗口或本窗口子控件背景默认绘制成啥颜色,置于具体是返回本窗口还是本窗口子控件是通过OnCtlColor的参数UINT nCtlColor类型指定的,当为CTLCOLOR_DLG时就是指定窗口的背景色,当是CTLCOLOR_EDIT时告知编辑框的背景色,CTLCOLOR_BUTTON告知按钮默认的背景色...

通过以上指点分析,我们只要截获ON_WM_CTLCOLOR消息,然后在该处理函数不论是什么类型都返回空画刷也就是return (HBRUSH)GetStockObject(HOLLOW_BRUSH);即可,这时候该窗口就透明了【该窗口指定为其他窗口的子窗口后,则子窗口也透明】,如果还想再该透明子窗口上划线、画矩形等实现OnLbuttonDown、OnLbuttonup和OnMouseMove消息函数,在OnEraseBkGround处理函数中绘制即可!

 

http://www.jmfq.cn/news/5247793.html

相关文章:

  • 360极速浏览器网站开发缓存/百度人工客服在哪里找
  • 内部网站建设拓扑/站长工具源码
  • 所得税汇算是在12366网站做吗/长沙快速排名优化
  • 查看一个网站的备案人/信息流优化师没经验可以做吗
  • 注册500万公司每月交税/运营推广seo招聘
  • 网站做301打不开/产品网络营销策划方案
  • 望野拼音版注音/河南seo优化
  • 药品在网站上做标签有哪些分类/河南百度关键词优化排名软件
  • 青岛建网站多少钱/中文搜索引擎有哪些平台
  • 民政网站建设情况汇报/百度指数手机版
  • 网站代码怎么改/seo网站关键词优化软件
  • 帝国cms怎么做电影网站/企业网站类型有哪些
  • wordpress 手机浏览器/广州seo推广服务
  • 网站建设宣传/网络营销的专业知识
  • 阿克苏网站建设公司/网络推广协议合同范本
  • 做响应式网站最大宽度/中国纪检监察报
  • 云南做网站报价/百度教育会员
  • 肃宁县做网站价格/网络营销服务平台
  • 机房网络建设方案/如何优化seo
  • 林芝网站建设/哪里做网站便宜
  • 做理财网站 程序员 违法吗/新闻软文怎么写
  • 宜春建设网站公司/搜索引擎优化作业
  • 上海网站推广模板/手机优化专家
  • 做外贸都得有网站吗/北京seo网络优化师
  • 公司网站备案信息查询/武汉seo网站排名优化
  • 广西建设厅网站首页/如何能查到百度搜索排名
  • 网站做二级域名/免费做网站网站的软件
  • 做app好 还是讯网站好/二十条优化疫情措施
  • 宠物医生免费咨询/关键词seo教程
  • 苏州网站建设设计/网上的推广公司