登录窗口的问题
下面是建立了一个登录窗口,然后判断是不是按了OK按钮来决定是否登录
可程序在执行到第三句(frmLogin-> ShowModal())的时候就出2错:
Cannot focus a disabled or invisible window.
Cannot make a visible window modal.
TfrmLogin *frmLogin;
frmLogin = new TfrmLogin(this);
if (frmLogin-> ShowModal() == mrOk)
{
delete frmLogin;
bLogin = true;
}
else
{
delete frmLogin;
bLogin = false;
Application-> Terminate();
}
不论我把frmLogin设置成可见还是不可见,一样出错
[解决办法]
参考以前的代码:
这是一个完整的登录的设计思路代码:
代码:
//---------------------- -----------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h " //登录窗体类的头文件
//---------------------- -----------------
USEFORM( "Unit1.cpp ", Form1);
USEFORM( "Unit2.cpp ", Form2);
//---------------------- -----------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application-> Initialize();
//Application-> CreateForm(__classid(TForm1), &Form1); //这里是你的需要自动创建的窗体,如数据库连接模块、全局数据模块等。。。
TForm2 *Form2 = new TForm2(Application); //创建登录窗体
if(Form2-> ShowModal() == mrOk) { //只有正确返回时才开始创建主窗体等。。。
Application-> CreateForm(__classid(TForm1), &Form1);
}
Application-> Run();
}
catch (Exception &exception)
{
Application-> ShowException(&exception);
}
catch (...)
{
try
{
throw Exception( " ");
}
catch (Exception &exception)
{
Application-> ShowException(&exception);
}
}
return 0;
}
//---------------------- -----------------
[解决办法]
是你在frmLogin的创建或激活事件中放置了聚焦的方法,而它那对象恰好在建立窗口时不可见或没创建好
另外楼上的做法比较好,直接在程序流程中创建窗口要流畅和好把握,学习一下,呵呵
[解决办法]
是不是中Form的OnShow中设置了Visible或setFocus
[解决办法]
i_love_pc(杰子)(欢迎加入技术交流QQ群:23640432)
这样可以的