老问题:关于showmodal()

solares1 2003-02-21 11:20:05
我想在程序运行前加入pwdform,进行密码校验
在winmain中
Tpwd *pwdW = new Tpwd(NULL) ;
if(pwdW->ShowModal()!=mrOk)
{
delete pwdW ;
return 1 ;
}
以前用bcb5没问题,现在改用bcb6,不知道怎么回事,在pwdW->ShowModal()处通不过
各为大虾帮忙看看,谢了,先
...全文
51 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zihan 2003-02-22
  • 打赏
  • 举报
回复
当一个窗口已经被显示出来了过后,是不能够调用他的showmodal的,也就是不能够先show一个窗口,再去shoumodal它,因为他们的作用都是显示这个窗口,只是显示的模式不是一样,你这样调用久肯定会出错了!
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
不信你试试...

我下机了..
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
不对,是你粗心你没有注销调Show(),我刚才试了一下,如果用下面的代码:
{ TForm2 *pwdW = new TForm2(NULL) ;
pwdW->Show() ;
if(pwdW->ShowModal()!=mrOk)
{
delete pwdW ;
return 1 ;
}
就会发生你说的那样的错误....

呵呵.

solares1 2003-02-21
  • 打赏
  • 举报
回复
没有show()
我将源代码copy重建另一个工程,问题解决,但不知道什么原因
cannot make a visable window modal,是个什么错误?
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
你讲清楚,到底是错了什么错误?
你的代码是什么样的?
有没有Show()?
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
你build all projects了通过了???,那就应该没有问题啊.

那怎么会出现cannot make a visable window modal错误呢?

solares1 2003-02-21
  • 打赏
  • 举报
回复
我的还是出问题,奇怪了
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
我这里编译可以通过并且运行正常,不知道是怎么回事!
solares1 2003-02-21
  • 打赏
  • 举报
回复
build all projects全通过,如将pwdW->showmodal()改为pwd->show();
也没问题,我主要是要showmodal返回的值判断密码校验正确否
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
我这里是可以的,代码如下:
//////////
#include "unit2.h"
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{ TForm2 *pwdW = new TForm2(NULL) ;
//pwdW->Show() ;
if(pwdW->ShowModal()!=mrOk)
{
delete pwdW ;
return 1 ;
}

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
solares1 2003-02-21
  • 打赏
  • 举报
回复
pwdW->Show() ;这句是删了的
solares1 2003-02-21
  • 打赏
  • 举报
回复
#include <vcl.h>
#include "passwd.h"
#pragma hdrstop
USEFORM("MDIForm.cpp", mainform);
USEFORM("passwd.cpp", pwd);
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Tpwd *pwdW = new Tpwd(NULL) ;
pwdW->Show() ;
if(pwdW->ShowModal()!=mrOk)
{
delete pwdW ;
return 1 ;
}

Application->Initialize();
Application->CreateForm(__classid(Tmainform), &mainform);
delete pwdW ;
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}

错误消息为:cannot make a visable window modal
RomanticProgrammer 2003-02-21
  • 打赏
  • 举报
回复
贴出全部代码!

13,825

社区成员

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

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