c++ - 为什么 Windows API 响应错误代码取决于我的日志记录语句
问题描述
我有一些代码来获取窗口句柄,然后获取它的矩形。
HWND hWnd = FindWindow("CalcFrame", NULL);
LPRECT rect;
int retval = GetWindowRect(hWnd, rect);
if (retval == 0) {
DWORD error = GetLastError();
std::cout << error << "\n";
} else {
std::cout << "FindWindow/GetWindowRect Success" << "\n";
}
此代码工作正常,当我没有日志记录语句时,这些值存储在 rect 中。当我在...之后直接添加此日志记录语句时
std::cout << rect->left << "," << rect->top << "," << rect->right << "," << rect->bottom << "\n";
我从 winapi 方法得到一个错误(错误代码 1400)GetLastError()
,表明我们找不到窗口句柄并获取窗口矩形。
当我使用此日志记录语句时,我没有收到任何错误。
std::cout << "Right: " << rect->right << "\n";
std::cout << "Bottom: " << rect->bottom << "\n";
这可能是什么原因?
解决方案
正确的代码是:
RECT rect;
int retval = GetWindowRect(hWnd, &rect);
GetWindowRect
需要一个指向现有结构的指针。
推荐阅读
- node.js - 如何从 Three.js 中的欧拉中获取原始旋转四元数
- windows - 无法在我的 Azure Windows-10 VM 上使用域/本地用户进行身份验证
- python - 将两个列表相乘
- excel - 如何在excel中制作图表组合具有相同名称的值
- javascript - javascript中多个输入的一个输出
- xml - QDomEntity VS QDomElement| **QDomElement** 和 **QDomEntity** 有什么区别?
- delphi - Delphi ZXING 在 Windows 中使用网络摄像头总是出错
- php - 无法在我的自定义 wordpress 主题中使用 smarty 模板引擎
- bash - 用于从 csv 文件中提取值大于参数中指定的条目的 bash 脚本
- typescript - 导入文件时电子应用程序崩溃