HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\APPINIT_DLLS
这样当任意一个win32应用程序加载的时候,系统也同时将该dll加载到进程空间里(这可能有点过于奢侈,因为很多win32程序不一定会使用该控件)。DLL在初始化的时候注册应用程序全局类,这样的窗口类就可以在每个进程空间的.EXE或DLL里使用了。这个技术基于win32系统的这个特性:允许在每个进程空间里自动的(也是强制的)加载特定的DLL(事实上,这也是打破进程边界,把你的代码切入到其他进程里的一种办法)。
CS_BYTEALIGNCLIENT ,CS_BYTEALIGNWINDOW
如果使用这两个标志,窗口的的客户区或整个窗口都在“字节边界”上对齐,也就是说,系统调整窗口的水平位置,客户区或整个窗口的左边坐标是8的倍数。win32 SDk的文档说这两个标志影响窗口的宽度,但是实际上笔者没有发现这个现象,此标志只影响窗口的水平位置(左边)。
简单地说,现在的CPU在设计时总线都是32,64,128位这样的,读数据的时候,只能读取偏移值为4,8,16的倍数地址开始的数据。对于32位机来说,如果一个long类型的变量跨越了4字节边界存储,那么cpu要读取两次,这样效率就低了。同样,在32位机中使用1字节或者2字节对齐,反而会使变量访问速度降低。