做一个DreamWeaver风格的程序

做一个DreamWeaver风格的程序,第1张

做一个DreamWeaver风格的程序,第2张

-用过DreamWeaver的人都会发现,DreamWeaver在任务栏上显示每一个编辑过的文件,用户任意关闭一个窗口,不影响其他窗口,仿佛各个窗口之间没有联系,没有主窗口。但是我们也可以发现这些窗口之间其实是有数据共享的,比如保存的路径。

-经过研究,我发现这些窗口其实属于同一个程序,实现方法也很简单。让我用Inprise的C++ Builder给你一个简单的例子。

首先,我们创建一个普通的应用程序。这个程序包含两个窗体,其中Form1是主窗口,我们设置Form2不是由应用程序自动创建的。

-在Form1中添加一个新的Public属性:

-int form count;

-该属性用于记录系统建立的From2的实例数,下面的代码添加到Form1的OnCreate事件中:

int I = GetWindowLong(this-> Handle,GWL _ STYLE);
TForm2 *F,* G;
F = new t form 2(NULL);
G = new t form 2(NULL);
F-> parent window = GetDesktopWindow();
F--> Caption = " F ";
G-> parent window = GetDesktopWindow();
G--> Caption = " G ";
this-> form count = 2;
SetWindowLong(G- >Handle,GWL_STYLE,I);
SetWindowLong(F- >Handle,GWL_STYLE,I);
F-> Show();
G-> Show();

-GetWindowLong和SetWindowLong是获取/设置窗口属性的API函数。有关详细信息,请参考C++ Builder提供的Win32帮助。然后运行程序,我们可以发现程序在任务栏上显示了三个属于这个程序的任务栏。
-接下来要做两件事:

-1,隐藏表单1和应用程序

-2.让Form2的实例关闭应用程序。

-实现第一件事的方法网上很多地方都提到了,就是修改WinMain函数。下面是具体的代码(粗体斜体是添加的代码):

WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
try
{
Application-> Initialize();
Application-> create form(
_ _ classid(t form 1),& form 1);
Application-> ShowMainForm = false;
ShowWindow(应用程序->句柄,SW _ HIDE);
应用->运行();
}
catch(Exception & Exception)
{
Application-> show Exception(& Exception);
}
返回0;
}


-这个地方要注意“应用->显示主窗体= false”主窗体(Form1)无法隐藏,Form1的Visibled属性必须更改为false。
-要实现第二件事,需要使用应用程序的Terminate方法(结束应用程序)。我们只需要简单地将以下程序添加到TForm2的OnClose事件中:

if(form 1-> form count > 1)
form 1-> form count-;
else
Application-> termin ate();

-运行程序,你会发现程序在任务块上有两个提示,窗口F和窗口G,这两个窗口看起来像是独立的应用程序。
-至此,一个DreamWeaver风格的程序就完成了,不是很简单吗?

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 做一个DreamWeaver风格的程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情