首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何判断一个窗口是否有焦点?(Win32接口)

我如何判断一个窗口是否有焦点?(Win32接口)
EN

Stack Overflow用户
提问于 2009-01-21 18:02:04
回答 3查看 61.5K关注 0票数 31

使用HWND(在C中,但这是无关紧要的),我如何判断给定的窗口(由Win32标识)是否具有焦点?

我挂起一个应用程序,等待一个事件,当该事件发生时,我想检查该应用程序是否已经具有焦点。如果它没有,我想闪光窗口,直到他们给它焦点。

或者,如果窗口已经获得焦点,FlashWindowEx结构是否会标记一直闪烁直到窗口获得焦点的FLASHW_TIMERNOFG?

我现在不能测试它,因为我不在我的开发环境中,但我的印象是它无论如何都会闪现,这是我试图避免的。

此外,如果重要的话,应用程序将在此窗口中使用DirectX。

EN

回答 3

Stack Overflow用户

发布于 2011-09-05 03:11:03

除了gkrogers answer使用GetActiveWindow之外,您还可以通过捕获WM_SETFOCUSWM_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 ;
票数 18
EN

Stack Overflow用户

发布于 2009-01-21 18:05:41

你的意思是“专注”还是“活跃”?

一个窗口具有焦点--第一个获取键盘事件的窗口。外部窗口(用户可以在屏幕上拖动)是“活动的”,如果它的一个子窗口具有焦点,但它本身可能有焦点,也可能没有焦点。

票数 9
EN

Stack Overflow用户

发布于 2013-10-09 01:53:19

使用GetForegroundWindow函数来获取您当前正在关注的Hwnd。然后,您只需要将它与应用程序的窗口进行比较,以检查它是否包含焦点。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/466354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档