Как узнать, находится ли окно в фокусе? (Win32 API)

Помимо ответа gkrogers с win32 помощью GetActiveWindow, вы win32 также можете поддерживать windows-applications логическую переменную для windows-applications окна, которое хотите знать, есть winapi ли у него фокус, перехватывая window-api события WM_SETFOCUS и WM_KILLFOCUS или WM_ACTIVATE:

WndProc() ..
case WM_SETFOCUS:
  puts( "Got the focus" ) ;
  break ;

case WM_KILLFOCUS:
  puts( "Lost the focus" ) ;
  break;

case WM_ACTIVATE:
  if( LOWORD(wparam) == WA_INACTIVE )
    puts( "I AM NOW INACTIVE." ) ;
  else // WA_ACTIVE or WA_CLICKACTIVE
    puts( "MEGAZORD ACTIVATED kew kew kew (flashy-eyes)" ) ;
  break ;

windows

winapi

hwnd

2022-10-08T07:37:10+00:00