帅
帅义庭
Unregistered / Unconfirmed
GUEST, unregistred user!
本人有一例程序如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
private
procedure wmCopyData(var AMessage: TMessage);
message WM_COPYDATA;
protected
procedure WndProc(var AMessage: TMessage);
override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WndProc(var AMessage: TMessage);
begin
...
...
...
inherited WndProc(AMessage);
end;
procedure TForm1.wmCopyData(var AMessage: TMessage);
var
pdsData: PCopyDataStruct;
sGot : AnsiString;
begin
inherited;
pdsData := PCopyDataStruct(AMessage.lParam);
sGot := StrPas(pdsData^.lpData);
SendMessage(hPartner, wm_Response, Self.Handle, id_GotData);
end;
end.
在上面程序中各位朋友注意了
过程wmCopyData(var AMessage: TMessage);
message WM_COPYDATA;在声明中未加任何说明即意味着是替换其父类的方法,其父类wnCopyData已不存在。
而过程WndProc(var AMessage: TMessage);
override;在声明中加入了
override超越的说明即意味着是扩展以前的方法也就是保留了父类的方法并在
其基础上增加了某些功能;
按照这样的理解,那么我例中的wmCopyData方法就应该是用现在的
新wmCopyData替换掉父类的wmCopyData方法,而在本例中的wmCopyData的过程中有加入了一句inherited即继承又是何意,是否意味着新的wmCopyData方法并没有替换掉父类的wmCopyData方法?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
private
procedure wmCopyData(var AMessage: TMessage);
message WM_COPYDATA;
protected
procedure WndProc(var AMessage: TMessage);
override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WndProc(var AMessage: TMessage);
begin
...
...
...
inherited WndProc(AMessage);
end;
procedure TForm1.wmCopyData(var AMessage: TMessage);
var
pdsData: PCopyDataStruct;
sGot : AnsiString;
begin
inherited;
pdsData := PCopyDataStruct(AMessage.lParam);
sGot := StrPas(pdsData^.lpData);
SendMessage(hPartner, wm_Response, Self.Handle, id_GotData);
end;
end.
在上面程序中各位朋友注意了
过程wmCopyData(var AMessage: TMessage);
message WM_COPYDATA;在声明中未加任何说明即意味着是替换其父类的方法,其父类wnCopyData已不存在。
而过程WndProc(var AMessage: TMessage);
override;在声明中加入了
override超越的说明即意味着是扩展以前的方法也就是保留了父类的方法并在
其基础上增加了某些功能;
按照这样的理解,那么我例中的wmCopyData方法就应该是用现在的
新wmCopyData替换掉父类的wmCopyData方法,而在本例中的wmCopyData的过程中有加入了一句inherited即继承又是何意,是否意味着新的wmCopyData方法并没有替换掉父类的wmCopyData方法?