我在使用CPropertySheet类的时候,发现一个例程里有:
CPropertySheet m_sheet;
 .
 .    
 .
然后在某个实现函数中,有:
m_sheet.GetClientRect(&rect);但我发现,CPropertySheet类中 根本就没有GetClientRect()这个成员函数!
但直接使用GetClientRect(&rect)有明显和使用m_sheet.GetClientRect(&rect) 
显示效果不一样!
请问,这是什么原因?多谢!

解决方案 »

  1.   

    CPropertySheet 派生自CWnd,同时也继承了CWnd的成员函数GetClientRect()。
      

  2.   

    GetClientRect()是CPropertySheet类的基类CWnd的函数
      

  3.   

    可能是父类或祖父类的.GetClientRect(&rect);
    等同于:
    this->GetClientRect(&rect);
    GetClientRect得到客户区的大小
      

  4.   

    直接调用 GetClientRect 是调用当前对象的函数
    m_sheet.GetClientRect 是成员对象的函数,这个函数可在来自他的老爸
      

  5.   

    GetClientRect()函数实际上还有一个隐含参数,就是窗口句柄,因为MFC封装
    后,每个调用该函数的窗口类都有默认的窗口句柄,所以不需要指定,这一点可
    以看看Win32 API中的GetClientRect()函数。GetClientRect(&rect)

    m_sheet.GetClientRect(&rect) 
    所指定的是不同的窗口,所以结果不会一样的。