Win32基础编程了解窗口类

    每一个窗口类都有一个与其相关的窗口过程,窗口过程的作用是处理窗口消息,由此来控制窗口的行为与外观。 
  
    在创建窗口前,必须要对窗口类进行注册。注册窗口类将会使窗口过程,类风格及其它的类属性与一个特定的类名关联。当调用CreateWindow或CreateWindowEx函数时指定了类名,系统将根据相应的窗口过程,类风格及类属性来创建窗口。 
  
     窗口类共有三种类型: 
     1.系统窗口类 
     2.应用程序全局窗口类 
     3.应用程序局部窗口类 

    这三种类型的窗口类在作用域,注册及销毁的方式上有所不同。 
  
    系统窗口类是由Windows注册的,一些可以被所有的进程所使用,而另外的则由系统内部调用。 
  
     系统窗口类的注册: 
     Windows 95/98/Me:在系统启动时注册。 
     Windows NT/2000/XP:当进程的某个线程初次调用Windows图形设备接口(GDI)时注册。

     下面是所有进程都可以使用的系统窗口类: 
   
     1.Button 
     2.ComboBox 
     3.Edit 
     4.ListBox 
     5.MDIClient 
     6.ScrollBar 
     7.Static 
  
     应用程序全局窗口类是由可执行文件或动态链接库(DLL)注册,并可被进程内其它模块所使用。

     应用程序全局窗口类的注册: 
  
     Windows NT/2000/XP:在DLL中创建应用程序全局窗口类,并在所有的进程中对其加载。加载该DLL的方法如下所示:

    在注册表的:KEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows分支下,加DLL的文件名加入AppInit_DLLs的值中。Windows将会在启动新的进程时,在进入新进程的入口前加载该DLL。该DLL必须在初始化的过程中注册窗口类,并在窗口风格中要指定CS_GLOBALCLASS。注销该窗口类可以使用UnregisterClass函数。

    应用程序局部窗口类由可执行文件或动态链接库(DLL)注册,但只能被该应用程序使用,尽管可以注册多个应用程序局部窗口类,但通常只注册一个,该窗口类支持应用程序主窗口的窗口过程。

    当注册该应用程序局部窗口类的模块被关闭,Windows就将其注册的窗口类销毁,也可以用UnregisterClass函数将其注销。

    Windows如何查找窗口类?

    1.查找应用程序局部窗口类,如果没有找到则 
    2.查找应用程序全局窗口类,如果没有找到则 
    3.查找系统窗口类

    你可以覆盖系统窗口类而不影响其它的应用程序,这就是说,你可以创建一个与系统窗口类同名的应用程序局部窗口类,这将使当前的应用程序使用应用程序局部窗口类,而其它的程序不受影响。

原文地址:https://www.cnblogs.com/MaxWoods/p/268897.html