GetWindowTextLength检索指定窗口的标题栏文本(如果窗口具有标题栏)的长度(以字符为单位)

平台 SDK: Windows 用户接口

GetWindowTextLength

GetWindowTextLength函数检索指定窗口的标题栏文本(如果窗口具有标题栏)的长度(以字符为单位)。 如果指定的窗口是一个控件,该函数将检索控件中文本的长度。 但是,GetWindowTextLength无法检索另一个应用程序中编辑控件的文本长度。

int GetWindowTextLength(
  HWND hWnd   // 窗口或控制句柄
);

参数

  • hWnd

  • [in] 窗口或控件句柄。

返回值

如果函数成功,则返回值是文本的字符长度。 在某些情况下,这个值实际上可能大于文本的长度。 有关更多信息,请参阅以下备注部分。

如果窗口没有文本,则返回值为零。 要获得扩展的错误信息,请调用GetLastError。

备注

如果目标窗口由当前进程拥有,则GetWindowTextLength会导致将WM_GETTEXTLENGTH消息发送到指定的窗口或控件。

在某些情况下,GetWindowTextLength函数可能会返回一个大于文本实际长度的值。 这发生在某些ANSI和Unicode混合的情况下,这是由于系统允许文本内可能存在DBCS字符。 但是,返回值总是至少与文本的实际长度一样大; 因此您可以始终使用它来指导缓冲区分配。 当应用程序使用ANSI函数和使用Unicode的通用对话框时,会发生此问题。 当应用程序将ANSI版本的GetWindowTextLength与窗口过程为Unicode的窗口结合使用时,或者使用窗口过程为ANSI的窗口的Unicode版本GetWindowTextLength时,也可能发生这种情况。 有关ANSI和Unicode函数的更多信息,请参阅函数原型的约定。

要获得文本的确切长度,请使用WM_GETTEXT,LB_GETTEXT或CB_GETLBTEXT消息或GetWindowText函数。

Windows 95/98/Me: GetWindowTextLengthW由Microsoft层为Unicode支持。 要使用它,必须将某些文件添加到应用程序中,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。

示例代码

有关示例,请参阅发送消息。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.

  Unicode: 在Windows NT/2000/XP上作为Unicode和ANSI版本实现。 Microsoft层还支持Unicode。


GetWindowText-将指定窗口的标题栏的文本复制到缓冲区中

平台 SDK: Windows 用户接口

GetWindowText

GetWindowText函数将指定窗口的标题栏(如果有的话)的文本复制到缓冲区中。 如果指定的窗口是控件,则会复制控件的文本。 但是,GetWindowText无法检索另一个应用程序中的控件的文本。

int GetWindowText(
  HWND hWnd,        // 窗口或控制句柄
  LPTSTR lpString,  // 文本缓冲区
  int nMaxCount     // 最大数量的字符复制
);

参数

  • hWnd

  • [in] 包含文本的窗口或控件句柄。

  • lpString

  • [out] 指向将接收文本的缓冲区的指针。

  • nMaxCount

  • [in] 指定要复制到缓冲区的最大字符数,包括NULL字符。 如果文本超出此限制,则会被截断。

返回值

如果函数成功,则返回值是复制字符串的长度(以字符为单位),不包括终止空字符。 如果窗口没有标题栏或文本,如果标题栏为空,或者窗口或控件句柄无效,则返回值为零。 要获得扩展的错误信息,请调用GetLastError。

此函数无法检索另一个应用程序中的编辑控件的文本。

备注

如果目标窗口由当前进程拥有,则GetWindowText会将WM_GETTEXT消息发送到指定的窗口或控件。 如果目标窗口由另一个进程拥有并具有标题,则GetWindowText将检索窗口标题文本。 如果该窗口没有标题,则返回值为空字符串。 此行为是设计使然。 如果拥有目标窗口的进程被挂起,它允许应用程序在不挂起的情况下调用GetWindowText。 但是,如果目标窗口挂起并且它属于调用应用程序,则GetWindowText将挂起调用应用程序。

要在另一个进程中检索控件的文本,请直接发送WM_GETTEXT消息,而不是调用GetWindowText。

Windows 95/98/Me: GetWindowTextW由Microsoft Layer for Unicode支持。 要使用它,必须将某些文件添加到应用程序中,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。

示例代码

有关示例,请参阅发送消息。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.

  Unicode: 在Windows NT/2000/XP上作为Unicode和ANSI版本实现。 Microsoft层还支持Unicode。


GetWindowRect-检索指定窗口的边界矩形的尺寸

平台 SDK: Windows 用户接口

GetWindowRect

GetWindowRect函数检索指定窗口的边界矩形的尺寸。 尺寸在相对于屏幕左上角的屏幕坐标中给出。

BOOL GetWindowRect(
  HWND hWnd,      // 窗口句柄
  LPRECT lpRect   // 窗口坐标
);

参数

  • hWnd

  • [in] 窗口句柄。

  • lpRect

  • [out] 指向RECT结构的指针,该结构接收窗口左上角和右下角的屏幕坐标。

返回值

如果函数成功,返回值为非零。

如果函数失败,返回值为零。 要获得扩展的错误信息,请调用GetLastError。

示例代码

有关示例,请参阅初始化对话框。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


GetWindowPlacement-检索显示状态以及指定窗口的还原,最小化和最大化位置

平台 SDK: Windows 用户接口

GetWindowPlacement

GetWindowPlacement函数检索显示状态以及指定窗口的还原,最小化和最大化位置。

BOOL GetWindowPlacement(
  HWND hWnd,                // 窗口句柄
  WINDOWPLACEMENT *lpwndpl  // 位置数据
);

参数

  • hWnd

  • [in] 窗口句柄。

  • lpwndpl

  • [out] 指向接收显示状态和位置信息的WINDOWPLACEMENT结构的指针。

    在调用GetWindowPlacement之前,将WINDOWPLACEMENT结构的长度成员设置为sizeof(WINDOWPLACEMENT)。 如果lpwndpl-> length设置不正确,GetWindowPlacement将失败。

返回值

如果函数成功,返回值为非零。

如果函数失败,返回值为零。 要获得扩展的错误信息,请调用GetLastError。

备注

由此函数检索的WINDOWPLACEMENT的flags成员始终为零。 如果由hWnd参数标识的窗口最大化,则showCmd成员为SW_SHOWMAXIMIZED。 如果窗口最小化,showCmd是SW_SHOWMINIMIZED。 否则,它是SW_SHOWNORMAL。

WINDOWPLACEMENT的长度成员必须设置为sizeof(WINDOWPLACEMENT)。 如果该成员设置不正确,该函数返回FALSE。 有关正确使用窗口放置坐标的其他说明,请参阅WINDOWPLACEMENT。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


GetWindowLong-检索有关指定窗口的信息

平台 SDK: Windows 用户接口

GetWindowLong

GetWindowLong函数检索有关指定窗口的信息。 该函数还会将指定偏移量处的32位(长)值检索到额外的窗口内存中。

如果您正在检索指针或句柄,则此函数已被GetWindowLongPtr函数取代。(指针和句柄在32位Windows上是32位,在64位Windows上是64位。)要编写与32位和64位版本的Windows兼容的代码,请使用GetWindowLongPtr。

LONG GetWindowLong(
  HWND hWnd,  // 窗口句柄
  int nIndex  // 要检索的值的偏移量
);

参数

  • hWnd

  • [in] 窗口句柄,间接处理窗口所属的类。

  • nIndex

  • [in] 指定要检索的值的从零开始的偏移量。 有效值的范围为0至额外窗口内存的字节数减去4; 例如,如果您指定了12个或更多字节的额外内存,则值8将是第三个32位整数的索引。 要检索任何其他值,请指定以下值之一。

    动作
    GWL_EXSTYLE检索扩展窗口样式。 有关更多信息,请参阅CreateWindowEx。
    GWL_STYLE检索窗口样式。
    GWL_WNDPROC检索窗口过程的地址或表示窗口过程地址的句柄。 您必须使用CallWindowProc函数调用窗口过程。
    GWL_HINSTANCE检索应用程序实例的句柄。
    GWL_HWNDPARENT检索父窗口的句柄(如果有的话)。
    GWL_ID检索窗口的标识符。
    GWL_USERDATA检索与窗口关联的用户数据。 此数据旨在供创建该窗口的应用程序使用。 它的值最初为零。


    当hWnd参数标识对话框时,以下值也可用。

    动作
    DWL_DLGPROC检索对话框过程的地址或表示对话框过程地址的句柄。 您必须使用CallWindowProc函数来调用对话框过程。
    DWL_MSGRESULT检索在对话框过程中处理的消息的返回值。
    DWL_USER检索应用程序专用的额外信息,例如句柄或指针。



返回值

如果函数成功,则返回值是请求的32位值。

如果函数失败,返回值为零。 要获得扩展的错误信息,请调用GetLastError。

如果以前没有调用SetWindowLong,则GetWindowLong会为额外的窗口或类内存中的值返回零。

备注

通过在RegisterClassEx函数使用的WNDCLASSEX结构的cbWndExtra成员中指定一个非零值来保留额外的窗口内存。

Windows 95/98/Me: GetWindowLongW由Microsoft Layer for Unicode支持。 GetWindowLongA也支持在所有Windows操作系统中提供更一致的行为。 要使用这些版本,您必须将某些文件添加到您的应用程序中,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。

示例代码

有关示例,请参阅创建,枚举和调整子窗口大小。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.

  Unicode: 在Windows NT/2000/XP上作为Unicode和ANSI版本实现。 Microsoft层还支持Unicode。