函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。
函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);
参数:
hWnd:
窗口句柄及间接给出的窗口所属的窗口类。
nlndex:指定要检索的基于0的偏移量。有效值的范围从0到窗口额外内存空间的字节数,减去4。例如,若指定了12位或多于12位的窗体类的额外存储空间,则应设为第三个32位整数的索引位8(12- 4=8)。要获得任意其他值,指定下列值之一:
GWL_EXSTYLE= (-20) 扩展窗口样式
GWL_STYLE=(-16) 窗口样式
GWL_WNDPROC= (-4) 该窗口的窗口函数的地址
GWL_HINSTANCE= (-6) 拥有窗口的实例的句柄
GWL_HWNDPARENT= (-8) 该窗口之父的句柄。不要用SetWindowWord来改变这个值
GWL_ID= (-12) 对话框中一个子窗口的标识符
GWL_USERDATA = (-21) 含义由应用程序规定
DWL_DLGPROC = 4 这个窗口的对话框函数地址
DWL_MSGRESULT = 0 在对话框函数中处理的一条消息返回的值
DWL_USER = 8 含义由应用程序规定
返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。
备注:通过使用函数RegisterClassEx将结构WNDCLASSEX中的cbWndExtra单元指定为一个非0值来保留额外类的存储空间。
Windows CE:nlndex参数指定的字节偏移量必须为 4的倍数。不支持 unaligmned access。
Windows CE:不支持在参数nlndex中设定的GWL_HINSTANCE和GWL_HWNDPARENT。
Windows CE1.0也不支持在 nlndex参数中的 DWL_DLGPROC和 GWL_USERDATA。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0对以上版本;头文件:winuser.h;库文件:user32.lib;在Windows NT上实现为Unicode和ANSI两种版本。
GetKeyboardState
函数功能:该函数将256个虚拟键的状态拷贝到指定的缓冲区中。
函数原型:BOOL GetKeyboardState(PBYTE IpKeyState);
参数:
IpKeyState:指向一个256字节的数组,数组用于接收每个虚拟键的状态。
返回值:若函数调用成功,则返回非0值。若函数调用不成功,则返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
备注:应用程序可以调用该函数来检取所有虚拟键的当前状态。当键盘消息被从该线程的消息队列中移去时,虚拟键的状态发生改变。当键盘消息被发送到该线程的消息队列中,或者,当键盘消息被发送到其他线程的消息队列或被从其他线程的消息队列中检取到时,虚拟键的状态不发生改变。(例外:通过AttachThreadlnput连接的线程共享同一键盘状态。)当函数返回时,由lpKeyState参数指向的每一个数组成员中都包含了一个虚拟键的状态数据。若最高位被置为1,则该键处于down状态;否则,该键处于up状态。若最低位被置为1,则该键被触发。当一个键被打开时称之为被触发,如capslock键。若最低位被置为0,该键被关闭且不被触发。一个触发键也键盘上的指示灯(如果有的话)在该键被触发时点亮,在不被触发时灭掉。若要检取单个虚拟键的状态信息,可以调用GetKeyState函数。若要检取任一虚拟键的当前状态,而不管相应的键盘消息足否己从消息队列中检取到,可以使用GetAsyncKevState函数。应用程序可以使用虚拟键码常数VK_SHIFT,VK_CONTROL和VK_MENU作为IpKeyState所指向的数组的下标。这样给出的Shift,Ctrl,Alt键的状态不区分左右键。应用程序也可以使用如下的虚拟键码常数作为以上键的区分左右键的下标:
VK_LSHIFT,VK_RSHIFT,VK_LCONTROL,VK_RCONTROL;VW_LMENU,VW_RMENU仅当应用程序调用GetKeyboardState;SetKeyboardState,GetAsycKeystate,GetKeyState和MapVirtualKey函数时,才可用这些区分左右键的常数。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件: USer32.lib。