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.查找系统窗口类
你可以覆盖系统窗口类而不影响其它的应用程序,这就是说,你可以创建一个与系统窗口类同名的应用程序局部窗口类,这将使当前的应用程序使用应用程序局部窗口类,而其它的程序不受影响。