欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

GetWindowLong() 函数

程序员文章站 2023-03-26 20:59:37
Window API函数,可根据nlndex参数的不同获取指定窗口的相关信息,也可用于获取窗口内存中指定偏移的32位度整型值。该值大小在注册窗口类时设定, 函数原型:Long GetWindowLong(HWND hWnd, int nlndex); 第一个参数:HWND 需要操作的窗口句柄。 第二 ......

window api函数,可根据nlndex参数的不同获取指定窗口的相关信息,
也可用于获取窗口内存中指定偏移的32位度整型值。该值大小在注册窗口类时设定,

函数原型:
long getwindowlong(hwnd hwnd, int nlndex);

第一个参数:hwnd 需要操作的窗口句柄。

第二个参数:nlndex

1.若大于0,返回窗口内存中指定偏移量的32位值
有效范围为0到存储空间的字节数减4,
比如指定了12个字节的额外窗口存储空间,则应设置8来访问第三个4字节,设置4来访问第二个4字节
设置0来访问第一个4字节空间,

2.也可以设置以下数据:  描述发的

#define gwl_wndproc         (-4)    //获取窗口过程地址或句柄。必须使用callwindowproc函数调用获取的窗口过程。
#define gwl_hinstance       (-6)    //获取应用实例句柄
#define gwl_hwndparent      (-8)    //获取所有者窗口句柄
#define gwl_style           (-16)    //获得窗口样式
#define gwl_exstyle         (-20)    //获取扩展窗口样式
#define gwl_userdata        (-21)    //获取用户设置的32位数据,其值默认为0
#define gwl_id              (-12)    //获取窗口id

hwnd参数为对话框句柄时,还可用下列值:
#define dwl_msgresult   0    //获取在对话框过程中某消息的返回值。
#define dwl_dlgproc     4    //获取对话框过程地址或句柄。必须使用callwindowproc函数来调用对话框过程。
#define dwl_user        8    //获取应用程序专用的额外信息,例如一个句柄或指针。

返回值:

如果函数成功,返回值是指定的32位整数的原来的值。如果函数失败,返回值为0。

但是,如果指定的32位整数值为0  函数成功将返回0,

 

补充:

窗口的额外存储空间有注册窗口类时通过设置以下参数指定;

wndclass.cbwndextra = sizeof(long); 该段代码为使用该窗口类注册的串口预留了 一个长整形变量大小的额外空间。

同时可以通过 setwindowlong() 函数来改变该值

setwindowlong(hwnd,0,1)  //设置第一个4字节的值 

setwindowlong(hwnd,4,2) //设置第二个4字节的值 

setwindowlong(hwnd,8,3) //设置第三个4字节的值