我在MFC单文档应用程序中,新建一个C++类(不是MFC的类)。如何在这个类中得到窗口客户的长度和宽度。

解决方案 »

  1.   

    AfxGetMainWnd()->GetActiveView()->GetClientRect(&rect);  
      

  2.   

    这个?CWnd::CalcWindowRectvirtual void CalcWindowRect( LPRECT lpClientRect, UINT nAdjustType = adjustBorder );调用这个成员函数以根据所需的客户矩形大小计算窗口矩形的大小。随后算出的窗口矩形(保存在lpClientRect)中可以被传递到Create成员函数以创建一个窗口,其客户区大小就是要求的大小。
    框架在创建窗口之前确定窗口的大小。
    客户矩形是完全封闭客户区的最小矩形。窗口矩形是完全封闭窗口的最小矩形。
      

  3.   

    也可以将你的View类的HWND句柄作为参数传递给你这个类的某一个成员函数~
      

  4.   


    CRect rect;
    AfxGetMainWnd()->GetActiveView()->GetClientRect(&rect);   
      

  5.   

    改了,出现 error C2039: 'GetActiveView' : is not a member of 'CWnd'
      

  6.   

    我把GetActiveView去掉,可以得到矩形值,不过怎么感觉所得值要比客户区的长度和宽度大很多。
      

  7.   

    在你的类里面定义一个 长度和宽度 成员变量。
    在初始化该类的时候(在VIEW类里面),将改类的长宽赋值。
    不晓得可行不
    或者干脆在你的泪里面 顶一个一个 CWnd* pWnd;
    初始化的地方将View传递给pWnd. 类似于 SetParent(CWnd* pWnd)
      

  8.   

    (CMainFrame*)AfxGetMainWnd()->GetActiveView()->GetClientRect(&rect);