windowswinapihwnd

How can I tell if a window has focus? (Win32 API)


Using the Win32 API (in C, but that's inconsequential), how can I tell if a given window (identified by HWND) has focus?

I'm hooking an application watching for an event, and when that event occurs I want to check if the application already has focus. If it doesn't, I want to flash the window until they give focus to it.

Alternately, does the FlashWindowEx struct flag FLASHW_TIMERNOFG that flashes until the window has focus just not flash if the window already has focus?

I cannot test this now since I am not in my development environment, but I was under the impression that it would flash anyways, which is what I'm trying to avoid.

Also, if it matters, the application uses DirectX in this window.


Solution

  • GetActiveWindow will return the top-level window that is associated with the input focus. GetFocus will return the handle of the window that has the input focus.

    This article might help:
    http://www.microsoft.com/msj/0397/Win32/Win320397.aspx