Re: Show a login dialog box before the main application
Sorry about the late replay, it's been a busy day.
1. You should do a couple of things, don't allow your login dialog to close
when username or password are empty.
void CLoginDialog::OnOK()
{
UpdateData();
m_strUserName.Trim();
m_strPassword.Trim();
if (m_strUsername.IsEmpty())
{
MessageBox("Please enter a username.");
return;
}
if (m_strPassword.IsEmpty())
{
MessageBox("Please Enter a password");
return;
}
CDialog::OnOK();
}
2. You can place the login business in a loop and keep showing it until the
user enters the correct username and password, or presses cancel.
int CWinApp() :: InitInstance ()
{
CLoginDialog login;
login.DoModal();
while (1)
{
if (login.DoModal() == IDCANCEL)
{
//exit application.
return FALSE;
}
//here check the username and password to see if it is correct.
if (UsernameAndPasswordCorrect)
{
break; //exit the loop and continue loading application
}
}
AliR.
<kavitha_tongadi@hotmail.com> wrote in message
news:1149171948.266262.243350@i40g2000cwc.googlegroups.com...
Thanks Ali,
It worked after I followed your steps.
How should
#1I restrict the user from entering the wrong user name and in order to
do that I placed this code in InitInstance but if you click OK 3 times
without enetring the user name and pwd ,the main application window
will pop up.
How shoudl I restrict the user to enter correct user name and pwd and
after validation show the main window
#2After enetring the username and pwd ,The login dialog box disappears
and messageBox appears ,After i clcik OK the login dialog box appears
again.
How shoudl I show both the message box and the dialog box ?
code for the above 2 steps
in CWinApp() :: InitInstance ()
{
CLoginDialog login;
login.DoModal();
if ((login.m_strUserName != "abc" ) || (login.m_strPassword != "abc"
))
{
AfxMessageBox("Wrong UserName/Pwd-Enter Again ",0,0);
login.DoModal();
//return FALSE;
}
if(login.DoModal()!=IDOK)
{
return FALSE;
}
...
...
// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles. Otherwise, any window creation will fail.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
...
....
}
thanks
Kavitha
AliR wrote:
Maybe something is happening in the InitApplication method.
I personally put splash screens and login screen in InitInstance and it
comes up before anything else.
BOOL CMyApp::InitInstance()
{
CSplashDlg Splash;
Splash.Create(CSplashDlg::IDD,NULL);
Splash.ShowWindow(SW_SHOW);
InitCommonControls();
CWinApp::InitInstance();
CLoginDialog Login;
if (Login.DoModal() != IDOK)
{
return FALSE;
}
.....
}
AliR.
<kavitha_tongadi@hotmail.com> wrote in message
news:1149111976.487404.4150@h76g2000cwa.googlegroups.com...
Ali
Tried that too ,but could not show up the dialog before the main
window.
What should be done.
There are 3 windows actually
1. 3rd party diaolg box
2.My dialog box
3. The main window
It will be okay even if I could show the my dialog box first and then
the other 2 windows.
Any guesses please
Kavitha
AliR wrote:
Why don't you do your login dialog before you initialize the third
party
control? (put your login code higher up in InitInstance)
AliR.
<kavitha_tongadi@hotmail.com> wrote in message
news:1149110839.439279.44240@y43g2000cwc.googlegroups.com...
Hi I am using 3rd party SomeABC tools.
I want to show a login dialog box before the main SDI app
(CFormView).
After I placed the code in initInstance and called before creating
the
Template
The third part diaolg box is getting popped up and over that I am
able
to see a part of my dialog box.
How to hide the 3rd party dialog box and show my dialog box and
then
show the main application window .
Please guide.
kavitha_tongadi@hotmail.com wrote:
Hi
I want to show a login dialog box before the main SDI app
(CFormView).
I dont even the see the dialog box and the main app runs in the
background
Now here is the code ,Where I am missing ?Can anyone point the
error?
CMyWinApp ::InitInstance()
{
..
..
..
// The one and only window has been initialized, so show and
update
it
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->UpdateWindow();
//int i = AfxMessageBox(_TEXT("HEllo"),MB_OK,0);
CLoginDlg login;
if(login.DoModal() ==IDOK )
{
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
}
// call DragAcceptFiles only if there's a suffix
// In an SDI app, this should occur after ProcessShellCommand
return TRUE;
}
Kavitha