当前位置:C++技术网 > 资讯 > GetWindowLong及GetClassLong小解

GetWindowLong及GetClassLong小解

更新时间:2015-10-18 22:07:47浏览次数:1+次

GetWindowLong是一个Windows API函数。该函数获得指定窗口的有关信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。
LONG GetWindowLong(HWND hWnd,int nlndex);
hWnd
目标窗口的句柄。
它可以是窗口句柄及间接给出的窗口所属的窗口类。
nlndex
需要获得的相关信息的类型。
为了获取具体子窗口ID,程序调用如下:
idchild=GetWindowLong(hwndchild,GWL_ID);

如果想在程序运行时动态改变程序的图标,可以通过调用SetClasssLong函数来实现。
SetClassLong(hwnd,GCL_HICON,LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ALTICON)));
MAKEINTRESOURCE这是个宏,将ID号转换为名称。
如果不想保存程序图标的句柄,而是使用DrawIcon函数来在某处显示他,那么你可以调用GetClassLong函数来获得图片句柄。
DrawIcon(hdc,x,y,GetClassLong(hwnd,GCL_HICON));

DWORD GetClassLong(HWND hWnd,int nlndex);
该函数返回与指定窗口相关的WNDCLASSEX结构的指定32位值。
hWnd:窗口句柄间接给出的窗口所属的类。
nlndex:指定要恢复的32位值。从额外的类存储空间恢复一个32位的值,指定的一个大于等于0的被恢复值的偏移量。有效值为从0开始到额外类存储空间字节数一4。例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要从WNDCLASSEX结构中恢复任何值,需要指定下面值之一:
GCSW原子:获得一个唯一标识窗口类的原子值,该值与RegisterClassEx函数的返回值相同。
GCL_CBWNDEXTRA:获得与类中的每个窗口相关的额外窗口中内存空间的字节大小,进入该存储空间的方法请参看GetWindowLong。
GCL_HBRBACKGROUND:获得与类有关的背景刷子的句柄。
GCL_HCURSOR:获得与类有关的光标的句柄。
GCL_HICON:获得与类有关的图标的句柄。
GCL_HICONSM:获得与类有关的小图标的句柄。
GCL_HMOUDLE:获得注册该类的模块的句柄。
GCL_MENUNAME:获得菜单名字符串的地址,该字符串标识了与类有关的菜单资源。
GCL_STYLE:获得窗口类的风格位。
GCL_WNDRPOC:获得与类有关的窗口过程的地址。
返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。