GetWindowTextLength
GetWindowTextLength函数检索指定窗口的标题栏文本(如果窗口具有标题栏)的长度(以字符为单位)。 如果指定的窗口是一个控件,该函数将检索控件中文本的长度。 但是,GetWindowTextLength无法检索另一个应用程序中编辑控件的文本长度。
int GetWindowTextLength(
HWND hWnd // 窗口或控制句柄
);
参数
返回值
如果函数成功,则返回值是文本的字符长度。 在某些情况下,这个值实际上可能大于文本的长度。 有关更多信息,请参阅以下备注部分。
如果窗口没有文本,则返回值为零。 要获得扩展的错误信息,请调用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
GetWindowText函数将指定窗口的标题栏(如果有的话)的文本复制到缓冲区中。 如果指定的窗口是控件,则会复制控件的文本。 但是,GetWindowText无法检索另一个应用程序中的控件的文本。
int GetWindowText(
HWND hWnd, // 窗口或控制句柄
LPTSTR lpString, // 文本缓冲区
int nMaxCount // 最大数量的字符复制
);
参数
返回值
如果函数成功,则返回值是复制字符串的长度(以字符为单位),不包括终止空字符。 如果窗口没有标题栏或文本,如果标题栏为空,或者窗口或控件句柄无效,则返回值为零。 要获得扩展的错误信息,请调用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
GetWindowRect函数检索指定窗口的边界矩形的尺寸。 尺寸在相对于屏幕左上角的屏幕坐标中给出。
BOOL GetWindowRect(
HWND hWnd, // 窗口句柄
LPRECT lpRect // 窗口坐标
);
参数
返回值
如果函数成功,返回值为非零。
如果函数失败,返回值为零。 要获得扩展的错误信息,请调用GetLastError。
示例代码
有关示例,请参阅初始化对话框。
要求
Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。
Windows 95/98/Me: 包含在Windows 95和更高版本中。
头文件: 声明于 Winuser.h; 包含于 Windows.h.
库: 使用 User32.lib.
GetWindowPlacement
GetWindowPlacement函数检索显示状态以及指定窗口的还原,最小化和最大化位置。
BOOL GetWindowPlacement(
HWND hWnd, // 窗口句柄
WINDOWPLACEMENT *lpwndpl // 位置数据
);
参数
返回值
如果函数成功,返回值为非零。
如果函数失败,返回值为零。 要获得扩展的错误信息,请调用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
GetWindowLong函数检索有关指定窗口的信息。 该函数还会将指定偏移量处的32位(长)值检索到额外的窗口内存中。
如果您正在检索指针或句柄,则此函数已被GetWindowLongPtr函数取代。(指针和句柄在32位Windows上是32位,在64位Windows上是64位。)要编写与32位和64位版本的Windows兼容的代码,请使用GetWindowLongPtr。
LONG GetWindowLong(
HWND hWnd, // 窗口句柄
int nIndex // 要检索的值的偏移量
);
参数
返回值
如果函数成功,则返回值是请求的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。