如何决定启动那个窗体?

hopeasy 2006-08-27 10:56:19
我的要求:
注册表中保存着信息,1-启动主窗体,2-启动测试功能窗体
程序关闭时在注册表中保存着最后关闭的窗体,以便在下次打开程序的时候自动加载这个窗体
如何实现这样的要求?

说明:除主窗体外,其它窗体是动态创建的

有没有在Application->Run();之前可以用函数判断是启动那个窗体,然后用什么方法加载呢?
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hopeasy 2006-08-28
  • 打赏
  • 举报
回复
问题是我第一个创建的窗体关闭之后,整个应用程序就终止了,怎么判断啊
BlueDeepOcean 2006-08-28
  • 打赏
  • 举报
回复
利用一个bool变量判断一下,如果窗体打开,则变量等于true或false,之后根据这个状态决定是否关闭前一个窗体。
hopeasy 2006-08-27
  • 打赏
  • 举报
回复
//--在此调用函数实现启动函数
RegEdit("r"); //读注册表
switch(iStartSet-10)
{
case 2: //窗体1
Application->CreateForm(__classid(TfrmStrayCurrent), &frmStrayCurrent);
break;
case 3: //窗体2
Application->CreateForm(__classid(TfrmResister), &frmResister);
break;
default: //主窗体
break;
}
Application->CreateForm(__classid(TfrmStart), &frmStart);
//----------------
我这样实现,但是当第一个创建的窗体是窗体1的时候,不能关闭窗体1而回到主窗体,所以我只能让窗体1 Hide,主窗体Show()来解决这个问题。

郁闷啊!!!
hopeasy 2006-08-27
  • 打赏
  • 举报
回复
如果第一个创建的窗体关闭之后,整个程序就结束了
不能实现我 可以开始运行的时候启动任何一个窗体,但是这个窗体关闭之后仍可以回到主窗体

另外,在创建窗体的时候,使用 Application->CreateForm(__classid(TForm1), &Form1);创建的窗体才会在 Application->Run(); 的时候启动,否则是不会启动这个窗体的
cczlp 2006-08-27
  • 打赏
  • 举报
回复
ShowMessage(Application->MainForm->Name);
Application->Run();
BlueDeepOcean 2006-08-27
  • 打赏
  • 举报
回复
这个利用注册表类可以实现。
大体过程如下:

int INT_BOOL;
TForm *MainForm;
TForm *TestingForm;
TRegistry *reg = new TRegistry;
reg->RootKey = ...;
if (reg->OpenKey(...))
{
INT_BOOL = reg->ReadString(...);//or reg->ReadInteger(...);
switch(INT_BOOL)
{
case 1:
MainForm = new TForm(this);
......
break;
case 2:
TestingForm = new TForm(this);
......
break;
}
}
reg->CloseKey();
delete reg;
reg = NULL;

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧