在MSDN中CWnd::CalcWindowRect 定义是两个参数
virtual void CalcWindowRect(
   LPRECT lpClientRect,
   UINT nAdjustType = adjustBorder 
);
可是在用的时候
例如:CalcWindowRect(&rect);
怎么也是正确的?/
好奇怪啊

解决方案 »

  1.   

    UINT nAdjustType = adjustBorder 这就是定义的默认参数。C++的特性
      

  2.   

    C++函数的原型中可以声明一个或多个带有默认值的参数。如果调用函数时,省略了相应的实际参数,那么编译器就会把默认值作为实际参数。可以这样来声明具有默认参数的C++函数原型:       #include "iostream.h"
           void show(int=1,float=2.3,long=6);       int main()
           {
               show();
               show(2);
               show(4,5.6);
               show(8,12.34,50L);
               return 0;
           }       void show(int first,float second,long third)
           {
               cout<<"first="<<first
                   <<"second="<<second
                   <<"third="<<third<<endl;
           }    上面例子中,第一次调用show()函数时,让编译器自动提供函数原型中指定的所有默认参数,第二次调用提供了第一个参数,而让编译器提供剩下的两个,第三次调用则提供了前面两个参数,编译器只需提供最后一个,最后一个调用则给出了所有三个参数,没有用到默认参数。