打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

  熟悉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次登陆失败后就应限制这台电脑在一定时间内不能登陆等,还有比如如何验证多个用户名进行登陆等等。(王朝网络 wangchao.net.cn)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单文档多视图的实现(转)
隐藏窗口
如何在MFC单文档中创建多视图
理解MFC文档/视图框架
深入分析MFC文档视图结构
文档类CDocument,子框架类CFrameWnd及视图类CView的关系及怎样相互调用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服