该GetWindowText
函数的返回值记录如下:
如果函数成功,则返回值是复制字符串的长度(以字符为单位),不包括终止空字符。如果窗口没有标题栏或文本,如果标题栏为空,或者窗口或控制句柄无效,则返回值为零。要获取扩展错误信息,请调用 GetLastError。
现在,当调用此方法并接收到返回值为零时,我如何知道是否GetLastError
会返回一个合理的值?毕竟,零不仅用于表示失败,还可能意味着窗口文本为空,在这种情况下GetLastError
不会返回未定义的值。
我自己的想法:
- 起初,我认为这可能
GetWindowText
会在成功时将最后一个错误设置为 0。但是测试表明它没有(如果确实如此,我无论如何都不能依赖它,因为这没有记录在案)。 - 然后,我认为可能
GetWindowText
会在成功时保持最后一个错误不变,因此在调用之前自己将其设置为 0 可以让我检查最后一个错误是否已更改。测试表明这可能有效,但由于它没有以这种方式证明,我不能依赖它。(我想这在很大程度上取决于具体情况和实施GetWindowText
。) - 而且,当然,我可以首先使用检查窗口文本长度
GetWindowTextLength
,然后GetWindowText
仅在长度大于 0 时才调用。但是,如果窗口在调用GetWindowTextLength
和之间更改其文本GetWindowText
怎么办?同样,我不能依赖返回值为零来表示错误。
那么,我该怎么做才能确定是否GetWindowText
失败?