关闭

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

标签: 文档initializationmfctemplatesvalidationcommand
14800人阅读 评论(19) 收藏 举报
分类:

                                                                                              朱金灿        

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

 

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

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

熟悉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次登陆失败后就应限制这台电脑在一定时间内不能登陆等,还有比如如何验证多个用户名进行登陆等等。

 

 

3
0
查看评论

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

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

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

深入分析:怎样从一个对话框弹出单文档视图 据库频道     数据库编程问题:如何设置一个登陆框,通过登陆框来进入单文档视图。 一般情况下采用的方法大多都是对话框之间的相互切换...
  • zhanghefu
  • zhanghefu
  • 2008-06-19 09:51
  • 1830

在单文档视图中加入对话框

利用单文档做界面显示时,一般的情况是:左侧显示图像、数据;右侧显示控件,通过控件控制左侧数据或图像的显示; 这样可以利用单文档结构,左侧为视图显示,右侧使用对话框。对话框可用使用CDialog类或CFormView。 采用CFormView,需要拆分窗口。具体步骤如下: 1,创建一个对话框类CM...
  • qqqren
  • qqqren
  • 2016-11-29 10:03
  • 2353

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

我们新建了一个基于CFormView的单文档应用程序, 点击“执行”时,我们希望先弹出一个对话框,点击对话框中ID号为IDOK的按钮, 再弹出单文档的界面 具体实现方法“:  1.假设我们在程序中新建了一个基于对话框的类,名为CWelcome,我们在程序的App类的*.cpp文件里...
  • foreverhuylee
  • foreverhuylee
  • 2014-03-23 19:53
  • 3687

vs2010单文档对话框窗口界面设置

在VS2010单文档工程中,
  • a904235765
  • a904235765
  • 2014-09-01 11:02
  • 3369

在文档视图中嵌入对话框

这个问题曾经纠结了很久,现提供一个简单可行的方法…… 1.首先新建一个你想嵌入的对话框,然后设置属性Child,无边缘 2.然后给这个对话框关联一个类,比如CViewDlg,使用默认继承于CDialog 3.在想添加的试图类里面新增一个该对话框类的变量,不妨命名为m_dlg ...
  • immember
  • immember
  • 2012-09-11 16:58
  • 1056

MFC单文档视图拆分窗口

第一步:准备2个视图类(如CTViewOne, CTViewTwo)第二步:在CMainFrame类的头文件中添加数据成员变量://MainFrm.h protected: CSplitterWnd m_wndSplitter;第三步:重载CMainFrame类的OnCreateClient...
  • tg2003
  • tg2003
  • 2015-05-03 22:45
  • 734

MFC 点击按钮,弹出另一个对话框

方法一:模态对话框 资源视图--Dialog--右键--添加资源--新建--对话框-,然后在已经生成的对话框中(解决资源视图中的dialog下的新生成的那个)右键--添加类。例如:添加CMyNewDlg类,在所要调的代码中(按钮点击方法所在的文件代码),先加头文件#include ...
  • shixiaoguo90
  • shixiaoguo90
  • 2013-11-27 08:38
  • 1323

MFC从一个对话框向另外一个对话框发送消息

<br />/*方法一:通过用SDK的标准API来查找其他对话框窗口返回句柄,并且发送信息<br />HWND hWnd;<br /> //通过SDK的FindWindow函数得到目标窗口的句柄,TriTest为目标串口的Caption的值<br ...
  • gukesdo
  • gukesdo
  • 2011-04-02 20:07
  • 2695

MFC单文档嵌入对话框

因为要实现一个在单文档中嵌入对话框的界面,自己愚钝,在网上查找了很多方法都不能实现,后来解决,现记录解决方法,防止后来使用遗忘; 1、添加一个对话框,将对话框的Style设置成Child; 2、添加一个关联该对话框的类CTestDlg,基类为CFormView; 3、在MainFrm.cpp中添加C...
  • yu5103428
  • yu5103428
  • 2015-08-26 14:43
  • 4769
    个人资料
    • 访问:4128631次
    • 积分:46630
    • 等级:
    • 排名:第76名
    • 原创:772篇
    • 转载:80篇
    • 译文:3篇
    • 评论:2479条
    公告


    真名:朱金灿
    主要经历:本科毕业于CUG(武汉)的GIS专业,毕业后参加工作,现在在北京从事软件开发和团队管理工作。曾获有色金属工业科技进步奖二等奖(获奖证书链接)。
    我的联系方式:
    EMAIL:clever101#163.com
    研究方向:
    数字图像处理、计算机图形学。

    本博客内容除非特殊说明均属原创,如需转载、引用其中的部分文字,请注意以下几点:

    1)如果我的博客侵犯了你的版权,请给我邮件:clever101#163.com,经核实后我会做出合适的处理。

    2)请在转载(引用)的内容提供本博客中相应文章的链接。如你的作品为非电子读物或纯文本,请给出链接的url。

    3)请勿将我的原创文章用于商业用途。

    4)如果愿意,请给我邮件:clever101#163.com,让我知道我的东西到哪去了。谢谢!

    5)我可以尽我所能回复你在评论中提到的问题,但一般不会给你发邮件,所以请勿留邮箱地址.

    文章存档
    最新评论