读书人

登录窗口的有关问题

发布时间: 2012-02-20 21:18:24 作者: rapoo

登录窗口的问题
下面是建立了一个登录窗口,然后判断是不是按了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)
这样可以的

读书人网 >C++ Builder

热点推荐