制做DreamWeaver气势气魄的措施
当前位置:以往代写 > C/C++ 教程 >制做DreamWeaver气势气魄的措施
2019-06-13

制做DreamWeaver气势气魄的措施

制做DreamWeaver气势气魄的措施

—- 用过DreamWeaver的人城市发明DreamWeaver将每一个编辑的文件显示在任务栏上,而且用户任意封锁一窗口而不影响其他窗口,好象每一个窗口间没有关联,没有主窗口似的。但我们也能发明其实这些窗口间也有数据是共享的,如存盘的路径。

—- 颠末研究我发明其实这些窗口其实是属于同一措施的,而且实现要领也很是的简朴。下面我用Inprise公司的C++ Builder为各人举一个简朴的例子。

—- 首先我们建设一个普通的应用措施。在这个措施中包括两个Form,个中Form1为主窗口,我们将Form2设为不由应用措施自动建设。

—- 在Form1中插手一新的Public的属性:

—- int FormCount;

—- 此属性用于记录系统成立的From2的实例的个数,在Form1的OnCreate事件中插手如下代码:

    int i=GetWindowLong(this- >Handle,GWL_STYLE);
     TForm2 *F,*G;
     F=new TForm2(NULL);
     G=new TForm2(NULL);
     F- >ParentWindow=GetDesktopWindow();
     F- >Caption="F";
     G- >ParentWindow=GetDesktopWindow();
     G- >Caption="G";
     this- >FormCount=2;
     SetWindowLong(G- >Handle,GWL_STYLE,i);
     SetWindowLong(F- >Handle,GWL_STYLE,i);
     F- >Show();
     G- >Show();

—- 个中GetWindowLong,SetWindowLong为获取/配置Window属性的API函数,详细请看C++ Builder带的Win32辅佐。然后运行措施,我们就能发明措施在任务栏上显示了属于此措施的三个任务条。

—- 接下来我们要做的工作有两个:

—- 1、 埋没Form1及Application

—- 2、 让Form2的实例封锁应用措施

—- 实现第一件工作的要领在网上许多处所都提到了,即修改WinMain函数下面是详细的代码(粗斜体为插手的代码):

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
     try
     {
Application- >Initialize();
Application- >CreateForm(
__classid(TForm1), &Form1);
Application- >ShowMainForm=false;
ShowWindow(Application- >Handle, SW_HIDE);
Application- >Run();
}
catch (Exception &exception)
{
Application- >ShowException(&exception);
}
return 0;
}

—- 在这个处所要留意的是光用“Application->ShowMainForm=false;”是不能埋没主Form(Form1)的,必需将Form1的Visibled属性变为false。

—- 实现第二件工作需要用到Application的Terminate要领(竣事应用措施)。我们只要在TForm2的OnClose事件中简朴插手以下几句措施:

  if (Form1- >FormCount>1)
      Form1- >FormCount--;
   else
     Application- >Terminate();

—- 运行措施,你就能发明措施在有任务拦上有两个提示,窗口F及窗口G,并且这两个窗口看起来就象独立的应用措施。

—- 至此,一个DreamWeaver气势气魄的措施就做完了,是不是很简朴呢。

    关键字:

在线提交作业