如何从一个对话框弹出单文档视图

原创 2006年06月01日 20:02:00

                                                                                              朱金灿        

相信不少人进行数据库编程都有这样的问题,如何设置一个登陆框,通过登陆框来进入单文档视图。我看到很多数据库编程方面的书,都是对话框之间的相互切换。而在对话框中添加菜单不少人都不太熟悉(当然这是可以办到的)。我在想:为何不能在对话框中弹出单文档,这样添加菜单等工作就方便多了。为此我几经探索,终于实现了如何从一个对话框弹出单文档视图。

 

下面我以一个登陆对话框为例来说明如何从一个对话框弹出单文档视图。

首先新建一个对话框资源,如下图:

熟悉MFC编程的朋友都知道初始化程序实例是由InitInstance函数完成的。因此弹出这个对话框的代码也是放在这个函数里的。

代码如下:

 

BOOL CDlgTestApp::InitInstance()

{

       AfxEnableControlContainer();

 

       // Standard initialization

       // If you are not using these features and wish to reduce the size

       //  of your final executable, you should remove from the following

       //  the specific initialization routines you do not need.

 

#ifdef _AFXDLL

       Enable3dControls();                     // Call this when using MFC in a shared DLL

#else

       Enable3dControlsStatic();      // Call this when linking to MFC statically

#endif

 

       // Change the registry key under which our settings are stored.

       // TODO: You should modify this string to be something appropriate

       // such as the name of your company or organization.

       SetRegistryKey(_T("Local AppWizard-Generated Applications"));

 

       LoadStdProfileSettings();  // Load standard INI file options (including MRU)

 

       // Register the application's document templates.  Document templates

       //  serve as the connection between documents, frame windows and views.

 

CLogsys  TestDlg;

if(TestDlg.DoModal()==IDOK)   // 单击Ok后就开始初始化程序实例

{

    CSingleDocTemplate* pDocTemplate;

       pDocTemplate = new CSingleDocTemplate(

              IDR_MAINFRAME,

              RUNTIME_CLASS(CDlgTestDoc),

              RUNTIME_CLASS(CMainFrame),       // main SDI frame window

              RUNTIME_CLASS(CDlgTestView));

       AddDocTemplate(pDocTemplate);

    // Parse command line for standard shell commands, DDE, file open

       CCommandLineInfo cmdInfo;

       ParseCommandLine(cmdInfo);

 

       // Dispatch commands specified on the command line

       if (!ProcessShellCommand(cmdInfo))

              return FALSE;

       // The one and only window has been initialized, so show and update it.

       m_pMainWnd->ShowWindow(SW_SHOW);

       m_pMainWnd->UpdateWindow();

    return TRUE;

}

else    // 假如单击了CANCEL按钮就直接退出

        return FALSE;

 

}

 

当然不是单击OK就可以进入单文档视图,在单击OK后还要进行检查用户名和密码。因此要在对话框的OnOK函数里添加相应的处理代码。

void CLogsys::OnOK()

{

       // TODO: Add extra validation here

UpdateData(TRUE);  // 获取输入数据

if(m_strUser=="Admin"&&m_strPwd=="1234")

{

CDialog::OnOK();  // 假如用户名和密码正确,就关闭对话框

}

/*假如用户名或密码错误,且还未超出登陆次数,就进行提示*/

if((m_strUser!="Admin"||m_strPwd!="1234")&&(m_Time<3)) //假如密码和用户名正确

   {

AfxMessageBox("用户名或密码不正确");

m_Time++;

   }

/*假如超出登陆次数,提示并退出系统*/

if(m_Time>2)

   {

AfxMessageBox("登陆错误次数超过3");

PostQuitMessage(0);

   }

}

 

当然在实际中功能还应进行扩充,比如3次登陆失败后就应限制这台电脑在一定时间内不能登陆等,还有比如如何验证多个用户名进行登陆等等。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

深入分析:怎样从一个对话框弹出单文档视图

深入分析:怎样从一个对话框弹出单文档视图 据库频道     数据库编程问题:如何设置一个登陆框,通过登陆框来进入单文档...

一个单文档应用程序,怎样实现“打开时,弹出一个对话框,而不是单文档”

我们新建了一个基于CFormView的单文档应用程序, 点击“执行”时,我们希望先弹出一个对话框,点击对话框中ID号为IDOK的按钮, 再弹出单文档的界面 具体实现方法“:  1.假设我们在程...

如何从一个对话框弹出单文档视图

相信不少人进行数据库编程都有这样的问题,如何设置一个登陆框,通过登陆框来进入单文档视图。我看到很多数据库编程方面的书,都是对话框之间的相互切换。而在对话框中添加菜单不少人都不太熟悉(当然这是可以办到的...
  • ergouge
  • ergouge
  • 2012年06月02日 09:34
  • 866

MFC对话框当中使用View视图

最近在写一个基于OpenGL的程序,程序当中的一个模块需要在对话框上面显示三维图形。因为程序的主框架程序用的是OpenGL来进行三维显示,所以很直接的想到能不能够在对话框上面使用OpenGL显示。 ...

在主窗口显示前先显示登录窗口

在主窗口显示前先显示登录窗口 通常的应用程序,在主界面显示前要先有一个登录窗口,登录成功后才会显示主界面,下面我们来解决这个问题。 第一步:先利用VS的APP向导建立一个MFC的对话框应用 这一步我们...

MFC中解决回车和ESC关闭的问题,重载OnOk(),OnCancel()函数的正确做法

本文参考了如下文章: http://msdn.microsoft.com/en-us/library/66b3y2ab(VS.71).aspx http://topic.csdn.net/u/20...
  • bbdxf
  • bbdxf
  • 2012年03月26日 15:38
  • 7362

mfc:单文档中对话框类调用视图类和框架类成员变量的实例

建立一个单文档mfc程序,设计一个菜单按钮,可以弹出一个对话框。在对话框中使用视图类和框架类中的变量。 界面如下对话框图:框架类的成员变量index:视图类的成员变量m_str:button1的响应...
  • tywwwww
  • tywwwww
  • 2017年02月16日 22:53
  • 647

弹出一个对话框

  • 2015年06月16日 20:32
  • 975B
  • 下载

MDI程序,添加多文档模板,点击New菜单项的时候弹出New对话框要求让用户选择的问题

//在CXXApp类的InitInstance函数中添加一个文档模板 CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTem...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何从一个对话框弹出单文档视图
举报原因:
原因补充:

(最多只允许输入30个字)