3

Win32 API EnumWindows(または)を使用するときにグローバル変数の使用を回避するにはどうすればよいですか?FindChildWindows

私はおおよそ次のコードを持っています:

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。グローバル変数の使用は避けたい。それを行う方法はありますか?

4

1 に答える 1

7

(LPARAM)prog_hwnd変数へのポインタを。として渡しますlParam。これは、呼び出されるたびにコールバックに渡されます。

コールバック内で、を実行することにより、渡された変数に割り当てることができます*(HWND *)lParam = ...

于 2012-10-05T16:38:29.803 に答える