zoukankan      html  css  js  c++  java
  • 注册窗口类

    在WNDCLASS结构中最重要的两个字段是第二个和最后一个,第二个字段(lpfnWndProc) 是依据这个类别来建立的所有窗口所使用的窗口消息处理程序的地址,最后一个字段是窗口类别的文字名称。程序写作者可以随意定义其名称。在只建立一个窗口的程序中,窗口类别名称通常设定为程序名称。

     wndclsCtrl.style   = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;

    通常我们只使用少数的窗口类别样式,CS_HREDRAW | CS_VREDRAW 每当窗口的水平方向大小(CS_HREDRAW)或者垂直方向大小(CS_VREDRAW)改变之后,窗口要完全重画。

    这里着重说明下CS_OWNDC:Allocates a unique device context for each window in the class,为这个类的每个窗口分配一个唯一的设备描述表(即DC)。

    通常:在需要用DC时(GetDC或BeginPaint),windows会用默认值建立一个新的DC对象,你对DC做的所有改变(比如载入新的字体,画笔)都会在ReleaseDC或EndPaint中释放掉,都会丢失。

    但如果你想在释ReleaseDC或EndPaint中释放掉DC后,仍保存对DC所做的那些更改,以便下次用DC(GetDC或BeginPaint)时不要再次设置,那么在注册窗口类时加上CS_OWNDC.

    在注册窗口类时还要考虑到这个类名有没有被注册,这里用到一个函数

      

    如lpclassName存在,则BOOL为true,得到class的副本到lpwndclass中,否则返回false

    注册窗口类的代码如下:

    #define  CUSTOMWND_CLASS _T("CCustomWnd")

    将它放在CCustomWnd的构造函数中就行了

  • 相关阅读:
    Centos 7 LVM xfs文件系统修复
    Feign报错'xx.FeignClientSpecification', defined in null, could not be registered.
    IDEA提示不区分大小写设置
    基于SpringBoot的多模块项目引入其他模块时@Autowired无法注入其他模块stereotype注解类对象的问题解决
    docker安装mysql
    [转]【收藏】用消息队列和消息应用状态表来消除分布式事务
    临时修改当前crontab编辑器
    golang处理 json中非法字符
    nsq里面WaitGroups两种实用的用法
    golang zlib 压缩,解压缩
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693654.html
Copyright © 2011-2022 走看看