MFC,进入主对话框时,首先打开登录对话框


 

我们做项目时,比较好的做法当然是启动程序的时候让用户登陆。
可以新建一个登录对话框,
如果是基于对话框程序的话,在OnInitDialog里调用登录对话框,
如果是基于文档视程序的话,在CMainFrame::OnCreate里调用登录对话框

 

例子:

BOOL CCRDBSDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 CCRDBSLogin login;

 if(login.DoModal()!=IDOK) return FALSE;

 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
 ASSERT(IDM_ABOUTBOX < 0xF000);
 //AfxMessageBox("init dlg");

 CMenu* pSysMenu = GetSystemMenu(FALSE);
 if (pSysMenu != NULL)
 {
  CString strAboutMenu;
  strAboutMenu.LoadString(IDS_ABOUTBOX);
  if (!strAboutMenu.IsEmpty())
  {
   pSysMenu->AppendMenu(MF_SEPARATOR);
   pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  }
 }

 // Set the icon for this dialog.  The framework does this automatically
 //  when the application's main window is not a dialog
 SetIcon(m_hIcon, TRUE);   // Set big icon
 SetIcon(m_hIcon, FALSE);  // Set small icon
 
 // TODO: Add extra initialization here
 //初始化列表框控件
 InitControl();
 //连接数据库
 //在列表框控件中显示数据
 InitCtrlData(); 
 return TRUE;  // return TRUE  unless you set the focus to a control
}

补充:此时无论登录对话框哪个按钮按下,包括关闭主对话框还是会弹出,此时将

 CCRDBSLogin login;

 if(login.DoModal()!=IDOK) return FALSE;改为

 CCRDBSLogin login;

 if(login.DoModal()!=IDOK)

{

     PostQuitMessage(0);

     return FALSE;

}除了按下确认键,其他均为退出 不再显示主对话框。


你可能感兴趣的:(MFC控件)