none
在view类中调用GetClientRect出错 RRS feed

  • 问题

  • 我用CSplitterWnd把窗口分成二个,  有一个的基类是CFormView,

    在上面加了一些控件,想动态的改变下,在OnSize函数中:

    GetClientRect(&rect);

     pWnd = CWnd::GetDlgItem(IDB_BITMAP1);
     if(!pWnd)
     {  
      CRect Rect;
      pWnd->GetClientRect(&Rect); //这里有错
      ScreenToClient(&Rect);

      Rect.left = Rect.left*cx/m_Rect.Width();
      Rect.right = Rect.right*cx/m_Rect.Width();
      Rect.top = Rect.top*cy/m_Rect.Height();
      Rect.bottom = Rect.bottom*cy/m_Rect.Height();

      pWnd->MoveWindow(Rect);
     }

    调试报错:

    _AFXWIN_INLINE void CWnd::GetClientRect(LPRECT lpRect) const
     { ASSERT(::IsWindow(m_hWnd)); ::GetClientRect(m_hWnd, lpRect); }

    大概意思是不能识别m_hWnd, 要咋办?


    xiao
    2011年3月2日 2:47

答案

  • if(!pWnd)
    -->
    if((NULL != pWnd) && (NULL != pWnd->GetSafeHwnd()))

    try it.


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 wh_xiao 2011年3月2日 22:57
    2011年3月2日 3:44
    版主