GetWindowLong函数

来源:互联网 发布:文本语音朗读软件 编辑:程序博客网 时间:2024/04/28 22:02

函数功能描述:用这个函数能够获得指定窗口的信息

函数原型:
LONG GetWindowLong( HWND hWnd,int nIndex )

参数:
hWnd:指定窗口的句柄
nIndex:需要获得的信息的类型
     值            功能

nIndex取值如下:
GWL_EXSTYLE    得到扩展的窗口风格
GWL_STYLE      得到窗口风格
GWL_WNDPROC    得到窗口回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
GWL_HINSTANCE  得到应用程序运行实例的句柄
GWL_HWNDPARENT 得到父窗口的句柄
GWL_ID         得到窗口的标识符
GWL_USERDATA   得到和窗口相关联的32位的值(每一个窗口都有一个有意留给创建窗口的应用程序是用的32位
               的值)

当hWnd标识一个对话框时可以使用下面的值
Value Action 
DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值
DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

返回值:
成功时,返回一个请求的32位的值
失败时,返回0,可以使用GetLastError来取得错误信息

注意:

/*
* Window field offsets for GetWindowLong()
*/

#define GWL_WNDPROC (-4)
#define GWL_HINSTANCE (-6)
#define GWL_HWNDPARENT (-8)
#define GWL_STYLE (-16)
#define GWL_EXSTYLE (-20)
#define GWL_USERDATA (-21)
#define GWL_ID (-12)

/*
* Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
*/

#define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8

 

示例1:
long nStyle = ::GetWindowLong(hWnd, GWL_STYLE);   // hWnd是一个编辑框的句柄
if(nStyle & ES_PASSWORD)
{
    AfxMessageBox("这是一个密码域");
}

示例2:

LONG   GetWindowLong(   
      HWND   hWnd,     //   handle   of   window   
      int   nIndex     //   offset   of   value   to   retrieve   
  );   

  第二个参数是0的话,就是指定GW_HWNDFIRST!!!   

GW_HWNDFIRST = 0; {同级别 Z 序最上}GW_HWNDLAST  = 1; {同级别 Z 序最下}GW_HWNDNEXT  = 2; {同级别 Z 序之下}GW_HWNDPREV  = 3; {同级别 Z 序之上}GW_OWNER     = 4; {属主窗口}GW_CHILD     = 5; {子窗口中的最上}

0 0
原创粉丝点击