MDI系统中一个非常奇怪的问题

MackedNice 2004-04-23 11:11:54
一个管理系统中有
一个登陆窗体(fsNormal)Form_login
一个MDI主窗体 Form_main
其他为MDI子窗体
编译通过。
可是运行时如果Form_login 在Form_main 之前运行,那么在Form_main中动态生成
MDI子窗体时发生错误。提示:
Can not creat form: No MDI forms are currently active
但是如果不让Form_login 运行。直接让Form_main 运行 那么在Form_main中动态生成
MDI子窗体正确。
1这是为什么啊。
2怎样才能让Form_login 在Form_main 之前运行,并且在Form_main中动态生成
MDI子窗体时不发生错误。


...全文
39 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shark_dim 2004-05-08
  • 打赏
  • 举报
回复
我也遇到了你的问题,我正在处理....
xiaoshi0 2004-05-06
  • 打赏
  • 举报
回复
MDI程序的父窗体必须是主窗体,可以在父窗体的OnShow事件中把主窗体隐藏,然后显示登陆窗体,等登陆窗体显示完成后,再显示主窗体
kwokwinglau 2004-05-06
  • 打赏
  • 举报
回复
再来一段: CBC6.0
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
DWORD lTime;//
WPhoto=new TWPhoto(WPhoto);//
WLogin=new TWLogin(WLogin);//
WPhoto->Show();//
WPhoto->Update();//
Application->Initialize();
Application->Title = "数据管理软件扩充模块";//
Application->CreateForm(__classid(TWMainForm), &WMainForm);
Application->CreateForm(__classid(TWDM), &WDM);
while((GetTickCount()-lTime)/1000<3);//
WPhoto->Hide();//
WPhoto->Free();//
WPhoto=NULL;//
WLogin->ShowModal();//
WLogin->Update();//
Application->Run();

return 0;
}

后面有"//"都是自己打上去的.
gangAndgang 2004-04-27
  • 打赏
  • 举报
回复
让登陆窗口在主窗口之后生成,但是在这前显示就行了
lihongxing2002 2004-04-27
  • 打赏
  • 举报
回复
Form_login的加载放到Form_main 窗体的Create事件里面,试试看。
Form_login显示的时候用ShowModal()这个方法。
CityHost 2004-04-24
  • 打赏
  • 举报
回复
楼主,你在自动生成MDI子窗体的时候别忘了将子窗体的Parent属性指定为Form_main,这样或许能够解决你的问题。
iyln 2004-04-23
  • 打赏
  • 举报
回复
在Form_main的构造函数中运行Form_login试试
MackedNice 2004-04-23
  • 打赏
  • 举报
回复
Form_login窗体得FormStyle属性已经设为fsNormal
lihongxing2002 2004-04-23
  • 打赏
  • 举报
回复
把Form_login窗体得FormStyle属性设为fsNormal
MackedNice 2004-04-23
  • 打赏
  • 举报
回复
UP。。。。。。。。。。。。。。
kwokwinglau 2004-04-23
  • 打赏
  • 举报
回复
就是说登录F_login在你的Form_main建立之前已显示出来了。
kwokwinglau 2004-04-23
  • 打赏
  • 举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
DWORD lTime;
try
{
F_LOGO=new TF_LOGO(F_LOGO); //
F_LOGO->Show(); //
F_LOGO->Update(); //
lTime=GetTickCount(); //
Application->Title = "MDI多窗口应用程序"; //
Application->Initialize();
Application->CreateForm(__classid(TF_MAIN), &F_MAIN);
Application->CreateForm(__classid(TDataModule1), &DataModule1);
while((GetTickCount()-lTime) / 1000 <3); //
F_LOGO->Hide(); //
F_LOGO->Free(); //

Application->Run();
stonewater 2004-04-23
  • 打赏
  • 举报
回复
在Form_main的FormCreate中运行Form_login
MackedNice 2004-04-23
  • 打赏
  • 举报
回复
有没有知道的啊。。。
UP。。。。。。。。。。。

13,825

社区成员

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

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