当前位置:开发平台->Windows ->Windows零基础入门:4.3 获取窗口类背景画刷句柄和使用窗口类背景画刷句柄

原创版权标志Windows零基础入门:4.3 获取窗口类背景画刷句柄和使用窗口类背景画刷句柄

作者:codexia  发表时间:2015-10-19  阅读:
[摘要] 本节课介绍了如何获取窗口类背景画刷句柄,然后介绍如何使用窗口,并实现了单击窗口切换窗口的背景颜色。还用两个窗口进行对比验证由一个窗口类信息创建的多个窗口共享一个窗口类信息,修改后可以相互影响。
   上节课我在《Windows零基础入门:4.2 获取窗口类信息之查询窗口类名称ID》一节中,详细介绍了窗口类ID的获取,也介绍了窗口类ID和窗口类名称的关系。讲解很详细,相信你应该看懂了吧。如果没有,请多看几遍,还不懂,留言!
    这节课我来讲一下获取窗口类的背景画刷句柄。我们使用的还是函数GetClassLong。使用下面的代码即可获得窗口类背景画刷:
HBRUSH hBrush = (HBRUSH)GetClassLong(hwnd, GCL_HBRBACKGROUND);
    你需要用一个HBRUSH画刷类型的变量来接收得到的画刷。因为GetClassLong函数返回的是LONG类型的值,与HBRUSH类型不一样,所以要强制转换。在《Windows零基础入门:4.1 获取窗口类信息之查询窗口类函数详细介绍》,你应该知道了GCL_HBRBACKGROUND索引的意义,就是用来获取窗口类的背景画刷句柄的。
    对于画刷是什么东西,我们在后面画图部分详细介绍,前面也有所提及。你只需要知道,画刷是用来画图用的,一般都是大面积的画,所以才叫画画的刷子即画刷。
    我们只要有这个画刷,就可以画图。当然,我们这里就已经知道了获取画刷的方法。代码也有了,也解释了。那是不是就讲完了呢?
    当然不是。我们在讲窗口类的部分,就要将学到的知识在这里尽可能多的使用,这样会学的更加深刻。当你学的很深刻了,用的很灵活了,那就学的差不多了。
    获取画刷倒是不难咯。这里我们需要了解背景技术知识,这是我们的核心。这也会是菜鸟学习和大神学习的区别,大神学习方法是抓住核心,而不是学习简单使用。只有抓住核心,使用才会灵活。
    窗口类的作用会影响所有由窗口类创建的窗口,这个在前面的课程讲过了。窗口类的信息对于这些窗口来讲,是全局性质的。所以,多个窗口相当于公用这个窗口类的信息。那么你在一个窗口中修改了窗口类的信息,那么在其他窗口中就可以得到改变后的信息。所以,我们这里不仅要对一个窗口的窗口类做改变验证,还要对两个窗口公用窗口类做验证,这样你会理解更加深入。当然,编写代码和思考问题的能力也会大大提升,所以,前提是,你一定要动手做,动脑想。
    我们先创建两个窗口,一个主窗口一个窗口2,他们用同一个窗口类创建,所以共用窗口类。在他们创建窗口时,都存储一下当前的窗口背景画刷句柄。用来做画刷切换使用的。默认的是白色的画刷,所以窗口默认是白色的背景。存储原始背景画刷代码如下:
case WM_CREATE:// - 窗口创建时
 static HBRUSH hBgOld;
 hBgOld = (HBRUSH)GetClassLong(hwnd, GCL_HBRBACKGROUND);
    这里说一下,这个窗口过程函数,是不停的执行的,每一次都是从头开始执行,所以,窗口过程函数里的变量如果是局部的,下次又重新定...【登录后阅读更多内容】
微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。


  • 145742784    2015/10/19 17:19:13回复
    不错,我正需要这样的文章,等会好好钻研下

  • war001    2015/10/25 20:05:41回复

  • wuyuan2011woaini    2016/3/18 15:03:17回复
    2016-03-18 wuyuan2011woaini

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)