| 订阅 | 在线投稿
分享
 
 
 

深入VCL源码研究DELPHI窗体的创建和关闭

2006-09-15 06:28:00 编辑來源:互联网 国际版 评论
 
 
  一、窗体的建立

   在DELPHI中,我们通常使用Application.CreateForm(TForm2, Form2)和TForm.create来创建窗体,我们几乎无法区别这两种方法差异,更何况,我们更多的时候都是在使用TForm.create来生成子窗体。

   不过,仔细观察VCL源码,你会发现,其实两者区别很大。

深入VCL源码研究DELPHI窗体的创建和关闭
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);

深入VCL源码研究DELPHI窗体的创建和关闭
var

深入VCL源码研究DELPHI窗体的创建和关闭
Instance: TComponent;

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
Instance := TComponent(InstanceClass.NewInstance);

深入VCL源码研究DELPHI窗体的创建和关闭
TComponent(Reference) := Instance;

深入VCL源码研究DELPHI窗体的创建和关闭
try

深入VCL源码研究DELPHI窗体的创建和关闭
Instance.Create(Self);

深入VCL源码研究DELPHI窗体的创建和关闭
except

深入VCL源码研究DELPHI窗体的创建和关闭
TComponent(Reference) := nil;

深入VCL源码研究DELPHI窗体的创建和关闭
raise;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
if (FMainForm = nil) and (Instance is TForm) then

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
TForm(Instance).HandleNeeded;

深入VCL源码研究DELPHI窗体的创建和关闭
FMainForm := TForm(Instance);

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭


深入VCL源码研究DELPHI窗体的创建和关闭


深入VCL源码研究DELPHI窗体的创建和关闭
constructor TCustomForm.Create(AOwner: TComponent);

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
GlobalNameSpace.BeginWrite;

深入VCL源码研究DELPHI窗体的创建和关闭
try

深入VCL源码研究DELPHI窗体的创建和关闭
CreateNew(AOwner);

深入VCL源码研究DELPHI窗体的创建和关闭
if (ClassType <> TForm) and not (csDesigning in ComponentState) then

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
Include(FFormState, fsCreating);

深入VCL源码研究DELPHI窗体的创建和关闭
try

深入VCL源码研究DELPHI窗体的创建和关闭
if not InitInheritedComponent(Self, TForm) then

深入VCL源码研究DELPHI窗体的创建和关闭
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);

深入VCL源码研究DELPHI窗体的创建和关闭
finally

深入VCL源码研究DELPHI窗体的创建和关闭
Exclude(FFormState, fsCreating);

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
if OldCreateOrder then DoCreate;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
finally

深入VCL源码研究DELPHI窗体的创建和关闭
GlobalNameSpace.EndWrite;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭


深入VCL源码研究DELPHI窗体的创建和关闭


   Form1 := TForm1.Create(Application); 是先调用TForm1的Create方法, 然后赋值 给Form1变量。而Application.CreateForm(TForm1, Form1); 他会先得到一个Instance的指针, 把这个指针赋值给Form1, 然后是Form1.Create(Application). 这Tform1.create的区别在于, 在TForm1的OnCreate事件中, 我们可以使用Form1这个变量。

   千万不要小瞧这点区别。例如你的程序有多个窗体,各个子窗体都是在需要的时候通过Tform1.create动态生成的,你想在FormOnCreate事件中对窗体上的edit1赋值text属性,那么你不能直接使用Form1.edit1.text := 'wudi_1982',你可以使用self.edit1.text 或者直接使用edit1.text。此时,你可能会想,可以直接用edit1.text,我为什么要多写form1.edit1.text呢?这里除了了解两者的区别,更重要的在于,如果你的程序中有一个函数,函数并非写在窗体类中,此函数调用了form上的信息,而在初始化的时候,你又必须调用它,如果不明白此中道理,可能就这个问题,就要让你调试好长时间,关于这方面的例子我就不写了。在DELPHI的DEMO程序中,又一个关于ListView的,其中就有类似的情况,只不过那个DEMO程序只有一个窗体,用不到Tform.create,如果有兴趣,你可以把那个例程添加到一个已存在的工程中,然后用两种不同的方法生成,你就会发现问题了。

  二、窗体的关闭

   通常情况下,我们对于程序中子窗体的关闭,大多是使用close方法或者直接点击窗体右上角的关闭按钮。那么对于VCL的窗体,它真的“关闭”了吗?在默认情况下,答案是否定的。观察VCL源码,你会发现,那个关闭只能算做隐藏。至于怎么测试,我想你知道。

   要彻底关闭窗体并释放资源,就要调用他的free方法(模式窗体的常用办法),或者在onclose事件中,设置Action := caFree(无模式窗体的常用办法),如果窗体还要通过并且将自身赋值为nil。关于为什么手动做form1 := nil的操作,我这里就不多说了,

深入VCL源码研究DELPHI窗体的创建和关闭
TCloseAction = (caNone, caHide, caFree, caMinimize);

深入VCL源码研究DELPHI窗体的创建和关闭


深入VCL源码研究DELPHI窗体的创建和关闭
procedure TCustomForm.Close;

深入VCL源码研究DELPHI窗体的创建和关闭
var

深入VCL源码研究DELPHI窗体的创建和关闭
CloseAction: TCloseAction;

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
if fsModal in FFormState then

深入VCL源码研究DELPHI窗体的创建和关闭
ModalResult := mrCancel

深入VCL源码研究DELPHI窗体的创建和关闭
else

深入VCL源码研究DELPHI窗体的创建和关闭
if CloseQuery then

深入VCL源码研究DELPHI窗体的创建和关闭
begin

深入VCL源码研究DELPHI窗体的创建和关闭
if FormStyle = fsMDIChild then

深入VCL源码研究DELPHI窗体的创建和关闭
if biMinimize in BorderIcons then

深入VCL源码研究DELPHI窗体的创建和关闭
CloseAction := caMinimize else

深入VCL源码研究DELPHI窗体的创建和关闭
CloseAction := caNone

深入VCL源码研究DELPHI窗体的创建和关闭
else

深入VCL源码研究DELPHI窗体的创建和关闭
CloseAction := caHide;

深入VCL源码研究DELPHI窗体的创建和关闭
DoClose(CloseAction);

深入VCL源码研究DELPHI窗体的创建和关闭
if CloseAction <> caNone then

深入VCL源码研究DELPHI窗体的创建和关闭
if Application.MainForm = Self then Application.Terminate

深入VCL源码研究DELPHI窗体的创建和关闭
else if CloseAction = caHide then Hide

深入VCL源码研究DELPHI窗体的创建和关闭
else if CloseAction = caMinimize then WindowState := wsMinimized

深入VCL源码研究DELPHI窗体的创建和关闭
else Release;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭
end;

深入VCL源码研究DELPHI窗体的创建和关闭


深入VCL源码研究DELPHI窗体的创建和关闭
 
 
一、窗体的建立 在DELPHI中,我们通常使用Application.CreateForm(TForm2, Form2)和TForm.create来创建窗体,我们几乎无法区别这两种方法差异,更何况,我们更多的时候都是在使用TForm.create来生成子窗体。 不过,仔细观察VCL源码,你会发现,其实两者区别很大。 [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]var [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Instance: TComponent; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Instance := TComponent(InstanceClass.NewInstance); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] TComponent(Reference) := Instance; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] try [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Instance.Create(Self); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] except [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] TComponent(Reference) := nil; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] raise; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if (FMainForm = nil) and (Instance is TForm) then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] TForm(Instance).HandleNeeded; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] FMainForm := TForm(Instance); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]constructor TCustomForm.Create(AOwner: TComponent); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] GlobalNameSpace.BeginWrite; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] try [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] CreateNew(AOwner); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if (ClassType <> TForm) and not (csDesigning in ComponentState) then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Include(FFormState, fsCreating); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] try [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if not InitInheritedComponent(Self, TForm) then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] raise EResNotFound.CreateFmt(SResNotFound, [ClassName]); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] finally [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Exclude(FFormState, fsCreating); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if OldCreateOrder then DoCreate; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] finally [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] GlobalNameSpace.EndWrite; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] Form1 := TForm1.Create(Application); 是先调用TForm1的Create方法, 然后赋值 给Form1变量。而Application.CreateForm(TForm1, Form1); 他会先得到一个Instance的指针, 把这个指针赋值给Form1, 然后是Form1.Create(Application). 这Tform1.create的区别在于, 在TForm1的OnCreate事件中, 我们可以使用Form1这个变量。 千万不要小瞧这点区别。例如你的程序有多个窗体,各个子窗体都是在需要的时候通过Tform1.create动态生成的,你想在FormOnCreate事件中对窗体上的edit1赋值text属性,那么你不能直接使用Form1.edit1.text := 'wudi_1982',你可以使用self.edit1.text 或者直接使用edit1.text。此时,你可能会想,可以直接用edit1.text,我为什么要多写form1.edit1.text呢?这里除了了解两者的区别,更重要的在于,如果你的程序中有一个函数,函数并非写在窗体类中,此函数调用了form上的信息,而在初始化的时候,你又必须调用它,如果不明白此中道理,可能就这个问题,就要让你调试好长时间,关于这方面的例子我就不写了。在DELPHI的DEMO程序中,又一个关于ListView的,其中就有类似的情况,只不过那个DEMO程序只有一个窗体,用不到Tform.create,如果有兴趣,你可以把那个例程添加到一个已存在的工程中,然后用两种不同的方法生成,你就会发现问题了。 二、窗体的关闭 通常情况下,我们对于程序中子窗体的关闭,大多是使用close方法或者直接点击窗体右上角的关闭按钮。那么对于VCL的窗体,它真的“关闭”了吗?在默认情况下,答案是否定的。观察VCL源码,你会发现,那个关闭只能算做隐藏。至于怎么测试,我想你知道。 要彻底关闭窗体并释放资源,就要调用他的free方法(模式窗体的常用办法),或者在onclose事件中,设置Action := caFree(无模式窗体的常用办法),如果窗体还要通过并且将自身赋值为nil。关于为什么手动做form1 := nil的操作,我这里就不多说了, [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]TCloseAction = (caNone, caHide, caFree, caMinimize); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]procedure TCustomForm.Close; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]var [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] CloseAction: TCloseAction; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if fsModal in FFormState then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] ModalResult := mrCancel [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] else [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if CloseQuery then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] begin [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if FormStyle = fsMDIChild then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if biMinimize in BorderIcons then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] CloseAction := caMinimize else [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] CloseAction := caNone [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] else [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] CloseAction := caHide; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] DoClose(CloseAction); [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if CloseAction <> caNone then [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] if Application.MainForm = Self then Application.Terminate [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] else if CloseAction = caHide then Hide [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] else if CloseAction = caMinimize then WindowState := wsMinimized [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] else Release; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]end; [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url] [url=http://www.wangchao.net.cn/bbsdetail_501023.html][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/url]
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
单纯美女 迷人女孩
校园甜美少女
忍辱负重
大学校园
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有