在使用 EnumWindows
(或 FindChildWindows
)Win32 API 时如何避免使用全局变量?
我大概有以下代码:
HWND prog_hwnd;
BOOL CALLBACK ProgEnumProc(HWND hwnd, LPARAM lParam) {
if (...) {
// found the right hwnd, assign it to prog_hwnd;
prog_hwnd = hwnd;
return FALSE;
}
return TRUE;
}
void FindProgHwnd()
{
EnumWindows(ProgEnumProc, 0);
}
int main()
{
FindProgHwnd();
if (prog_hwnd) {
// found prog_hwnd, but it's global variable
}
}
如您所见,要找到正确的 hwnd,我必须使用全局变量 prog_hwnd
。我想避免使用全局变量。有办法吗?
最佳答案
将指针作为 lParam
传递给变量 (LPARAM)prog_hwnd
。然后在每次调用时将其传递给回调。
在回调中,您可以通过执行 *(HWND *)lParam = ...
分配给传递的变量。
关于windows - 在 Win32 C API 中执行 `EnumWindows` 查找窗口时如何避免使用全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750486/