如题

解决方案 »

  1.   

    如果有dialog的窗口句柄,就可以用EnumChildWindows
      

  2.   

    如果连她的窗口句柄也没有,就先EnumWindows根据已知的他的特性分辨那个窗口是她的句柄
      

  3.   

    你需要掌握:
    ①SPY++的使用方法
    ②::FindWindowEx
    ③句柄的概念
    ④能够在必要的时候通过使用句柄来摆脱CWnd,但也知道CWnd::FromHandle和CWnd::GetSafeHwnd然后你想干什么都成
      

  4.   

    void CSetOtherMenuDlg::OnSetBtnDisable() 
    {
    //对方窗口的标题为DialogMenu
    CWnd * pWnd = FindWindow(NULL, "DialogMenu"); if (pWnd)
    {
    HWND hWndBtn = FindWindowEx(pWnd->m_hWnd, NULL, "Button", "确定"); ::EnableWindow(hWndBtn, FALSE);
    }

    }
      

  5.   

    BOOL EnumWindows(
      WNDENUMPROC lpEnumFunc,  // pointer to callback function
      LPARAM lParam            // application-defined value
    );
     用这个函数获得父窗口句柄,
    BOOL EnumChildWindows(
      HWND hWndParent,         // handle to parent window
      WNDENUMPROC lpEnumFunc,  // pointer to callback function
      LPARAM lParam            // application-defined value
    );
    用这个获得子窗口句炳。
    你需要为这两个函数分别准备一个回调函数。你只需要在EnumWindows()的回调函数里调用EnumChildWindows(),获得指针:
    CWnd::FromHandle  
    static CWnd* PASCAL FromHandle( HWND hWnd );