现在有个程序,里面包括很多的子窗口,每个子窗口在起来时都会自动启动一个定时器去监测数据。现在我的想法是只有位于最顶层的窗口的定时器才是开启的,其它的都 Kill 掉。请教有什么好的方法,我的想法是去判断最顶层窗口?

解决方案 »

  1.   

    这些子窗口是怎么管理的?没用CTabCtrl之类的?
      

  2.   

    HWND   GetForegroundWindow(VOID); 
      

  3.   

    HWND desWnd = ::GetDesktopWindow();
    HWND topWnd = ::GetTopWindow(desWnd);
    if(topWnd == this->m_hWnd)
    {
       //说明自己在顶层
    }
      

  4.   

            HWND desWnd = ::GetDesktopWindow();
    HWND topWnd = ::GetTopWindow(desWnd);
    if(topWnd == this->m_hWnd)
    {
    //说明自己在顶层
    MessageBox(_T("主窗口在顶层"));
    }
    我在调试中观察到 desWnd  = 0x00010014{unused=4259895}
                   topWnd  = 0x0001009c{unused=7929933}
                   this    = 0x0012ed2c{CMyNewButtonBMPDlg hWnd = 0x00050ab6}