困惑:HWND GetFocus() 和 HWND GetActiveWindow()有什么差别?
是不是都是得到当前活动窗口?

解决方案 »

  1.   

    HWND GetFocus() 返回有输入焦点的窗口,键盘输入发送给这个窗口,整个系统只有一个窗口有输入焦点。
    HWND GetActiveWindow()是活动窗口,不一定有输入焦点,而且每个线程就有一个活动窗口。
      

  2.   

    每个有消息队列的线程有一个活动窗口,整个WINDOWS 系统只有一个窗口有键盘输入焦点
      

  3.   

    那么GetFocus() 和 GetActiveWindow()可能是不同的窗口吗?
      

  4.   

    还有CWnd::GetActiveWindow() 和CWnd::GetForegroundWindow()
    又有什么差别?
      

  5.   

    GetFocus() 得到的肯定是 ActiveWindow,但是GetActiveWindow()的窗口不一定是有输入焦点的窗口。
      

  6.   

    GetForegroundWindow()是和窗口在Z-ORDER里的位置有关的。
    比如说一个ACTIVE WINDOW上面还有一个NOT ACTIVE WINDOW,但这个窗口的属性是TOPMOST。GetForegroundWindow()只能取得上面的这个窗口
      

  7.   

    我现在遇到一个问题
    Win2k下对于一个CMD窗口,用GetFocus和GetActiveWindow都无法获得窗口的句柄(结果都是0)。但是GetForegroundWindow就可以获得这个窗口的句柄,这是为什么?
      

  8.   

    还有一个问题把Winamp设置成为总在最前然后将其他窗口激活,用GetForegroundWindow获得的是激活窗口的句柄,而不是Winamp的句柄,太奇怪了,这是为什么?