SetClassLong GetClassLong 详解

GetClassLong

  函数功能:该函数返回与指定窗口相关的WNDCLASSEX结构的指定32位值。
  函数原型:DWORD GetClassLong(HWND hWnd,int nlndex);
  参数:
  hWnd:窗口句柄间接给出的窗口所属的类。
  nlndex:指定要恢复的32位值。从额外的类存储空间恢复一个32位的值,指定的一个大于等于0的被恢复值的偏移量。有效值为从0开始到额外类存储空间字节数一4。例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要从WNDCLASSEX结构中恢复任何值,需要指定下面值之一:
  GCSW原子:获得一个唯一标识窗口类的原子值,该值与RegisterClassEx函数的返回值相同。
  GCL_CBWNDEXTRA:获得与类中的每个窗口相关的额外窗口中内存空间的字节大小,进入该存储空间的方法请参看GetWindwoLong。
  GCL_HBRBACKGROUND:获得与类有关的背景刷子的句柄。
  GCL_HCURSOR:获得与类有关的光标的句柄。
  GCL_HICON:获得与类有关的图标的句柄。
  GCL_HICONSM:获得与类有关的小图标的句柄。
  GCL_HMOUDLE:获得注册该类的模块的句柄。
  GCL_MENUNAME:获得菜单名字符串的地址,该字符串标识了与类有关的菜单资源。
  GCL_STYLE:获得窗口类的风格位。
  GCL_WNDRPOC:获得与类有关的窗口过程的地址。
  返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。
  备注:通过使用函数RegisterClassEx将结构WNDCLASSEX中的cbCIsExtra单元指定为一个非O值来保留额外类的存储空间。Windows CE:nlndex参数是一个字节偏移量,但是必须为 4的倍数。Windows CE不支持unaligned access。nlndex参数中只可设定为GCL_HICON和GCL_STYLE。 如果使用了Windows CE的 lconsurs组件,该组件支持在适当的目标平台上的鼠标,也可以在nlndex中使用GCL_HCURSOR。 注意支持鼠标的 Windows CE版本包含 Iconcurs和 Mcursor而不是 Icon和 Cursor组件。

SetClassLong

  函数功能:该函数替换在额外类存储空间的指定偏移地址的32位长整型值,或替换指定窗口所属类的WNDCLASSEX结构。
  函数原型:DWORD SetClassLong(HWND hWnd,int nlndex,LONG dwNewLong);
  参数:
  hWnd:窗口句柄及间接给出的窗口所属的类。
  nlndex:指定将被替换的32位值。在额外类存储空间中设置32位值,应指定一个大于或等于0的偏移量。
  有效值的范围从0到额外类的存储空间的字节数一4;例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要设置WNDCLASSEX结构中的任何值,指定下面索引之一:
  GCL_CBCLSEXTRA:设置与类相关的尺寸的字节大小。设定该值不改变己分配的额外字节数。
  GCL_CBWNDEXTRA:设置与类中的每一个窗口相关的尺寸的字节大小。设定该值不改变已分配额外字节数。查看如何进入该内存,参看SetWindowLOng。
  GCL_HERBACKGROUND:替换与类有关的背景刷子的句柄。
  GCL_HCURSOR:替换与类有关的光标的句柄。GCL_HICON:替换与类有关的图标的句柄。
  GCL_HMODULE:替换注册类的模块的句柄。GCL_STYLE:替换窗口类的风格位。
  GCL_MENUNAME :替换菜单名字符串的地址。该字符串标识与类有关的菜单资源。
  GCL_WNDPROC :替换与窗口类有关的窗口过程的地址。
  dwNewLong:指定的替换值。
  返回值:如果函数成功,返回值是原来类结构中32位整数;如果未事先设定,返回值为0。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。
  备注;如果使用SetClassLong函数和GCL_WNDPROC索引值来替换窗口过程,新的窗口过程必须与WindowProc回调函数中所规定的规则一致。
  以带GCL_WNDPROC索引值的SetClassLong函数修改的一个窗口类的的子类将会影响所有随后以该类创建的窗口。应用程序可以创建一个系统类的子类,但是不能创建由其他进程创建的类的子类。
  通过使用RegisterClassEx函数将WNDCLASSEX结构中的cbWndExtra单元指定为一个非零值来保留额外的的类存储空间。
  使用SetClassLong函数要小心。例如,可以通过使用SetClassLong来改变类的背景颜色,但是这种改变不会马上生效,直到属于该类的窗体下次重绘,除非使用UpdateWindow()强迫窗体更新。
  Windows CE:nlndex参数是一个字节偏移量但必须是4的倍数。Unaligned不支持。
  不支持在nlndex参数中的标准的CGL_★值,只有一个例外,如果目标设各支持鼠标,则可以在nlndex参数中指定CGL_HCURSOR。
  注意支持鼠标的WindowsCE版本包含Iconcurs和Mcursor组件而不是lcon和Cursor组件。
  速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib;Unicode:在Windows NT 上实现为Unicode和ANSI两种版本。

你可能感兴趣的:(API,windows,存储,access,user,平台)