bod*_*ydo 2 windows winapi global-variables
使用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
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,为了找到合适的hwnd,我将使用全局变量prog_hwnd
.我想避免使用全局变量.有办法吗?
将指针传递到变量(LPARAM)prog_hwnd
如lParam
.然后,每次调用它时都会将其传递给回调.
在回调中,您可以通过执行分配给传递的变量*(HWND *)lParam = ...
.