今天看个改变程序类名的例子程序,有个疑问:procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;这段程序中为什么先inherited后才改变WinClassName呢?
这样调用CreateParams类名不是还没改变吗?但测试结果
又是正确的...

解决方案 »

  1.   

    inherited 是执行原方法的代码,再执行自定义的代码.
    这里的Params.WinclassName在前后两句时,其值是不一样了.
      

  2.   

    inherited 是执行原方法的代码
    然后执行自定义方法
      

  3.   

    procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
    inherited CreateParams(Params);//先创建参数列表;
    //利用组件本拥有的创建方法来创建参数表;当然想自己来创建,也可用其他方法了。但用
    //组件本身的方法是较为安全的。
    Params.WinClassName := MYAPPNAME;//创建列表后,对某个参数赋值操作;OVER!
    end;参数列表一定要先创建,再赋值,否则,报内存访问错!AV错。