当前位置:C++技术网 > 资讯 > 必须知道的Windows窗口类三种类型说明

必须知道的Windows窗口类三种类型说明

更新时间:2015-06-25 17:47:29浏览次数:1+次

    窗口类类型的区别在于作用范围和何时如何被注册和销毁。

    1.系统窗口类
    被系统注册。许多类是可以被所有进程使用的,其他的则只能被系统内部使用。因为系统注册的这些类,进程不能销毁他们。
    当一个进程其中任何一个线程第一次调用GDI函数时系统注册系统窗口类。
    每个应用程序接受一份系统类的拷贝。所有的16位windows程序在相同的VDM共享系统类,只是在16位的系统是这样的共享方式。
    进程可用的系统窗口类有:Button、ComboBox、Edit、ListBox、MDIClient、ScrollBar和Static七种。分别是:按钮、组合框、编辑框、列表框、多文档界面框架、滚动条和静态标签。
    系统内部使用的系统窗口类有:ComboLBox、DDEMLEvent、Message、#32768、#32769、#32770、#32771、#32772八种。分别是:内部含有组合框的列表框、动态数据交换管理库事件、消息对话框、菜单、桌面窗口、对话框、任务切换窗口、图标标题。

    2.应用全局类
    由可执行体或者DLL注册并且可以被所在进程其他所有模块使用的窗口类。
    要创建一个每个进程都可以使用的类时,可以在dll文件中创建一个窗口类,然后在每个进程中加载这个dll即可。要在每个进程加载这个dll,把这个dll的名字添加到注册表 HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows NT\ CurrentVersion\ Windows 的AppInit_DLLs值中。
    不管什么时候一个进程启动,在调用进入点函数之前,系统加载指定的dll到刚刚启动的进程的进程描述上下文中。此dll必须在初始化过程中注册窗口类,同时必须指定窗口类风格为CS_GLOBALCLASS。
    要移除应用全局类和释放相关的存储空间,使用 UnregisterClass函数。

    3.应用局部类
    由任何可执行体或者dll注册,只提供给自己的执行程序使用。
    尽管可以注册任何数量的局部类,但是通常只注册一个。这个窗口类支持程序主窗口的窗口过程。
    当注册了局部窗口类的模块关闭时,系统销毁这个局部类。程序当然也可以使用 UnregisterClass函数移除局部类和释放相关的存储空间。