一个关于对话框的问题,请指点,顶这又分
各位朋友:刚接触vc,我用程序向导做了个窗体,也就是frame,我又新增加了一个dialog,做为登陆窗口,我想让程序一启动就是登陆dialog,如何实现?(现在每次启动都是程序向导做的frame,如何让自己新加的dialog成为启动窗体) 问题点数:20、回复次数:15Top
1 楼truewill(无处不在)回复于 2006-03-05 11:02:52 得分 2
可以试一下在CXXXApp里面夹一个dialog m_dlg, 然后InitInstance()里面show mainframe前加入m_dlg.DoModal()Top
2 楼guangmingshizhe(光明使者(看《C++程序设计语言》))回复于 2006-03-05 19:16:53 得分 2
楼上正解Top
3 楼BombZhang(我当大哥很久了)回复于 2006-03-05 21:36:42 得分 2
在.app类中InitInstance函数中调用登陆对话框(CLogoDlg dlg);
int nResponse=dlg.DoModal();
Top
4 楼ggw(格格巫)回复于 2006-03-06 12:36:37 得分 2
你再创建一个基于对话框的工程,看看它是怎样的么。就和楼上说的。Top
5 楼lzgvcd(vc菜鸟)回复于 2006-03-07 09:54:01 得分 0
楼上说的我已经弄过了,我的意思就是如何象vb一样弄个登陆窗口,然后如果用户名没有输入或者密码错误的话就提示错误,接着让光标停留在一个edit上,谢谢楼上的各位朋友。
int nResponse=dlg.DoModal();
if (nResponse==IDOK)
{
if (m_edit_username="")
{}
}
这段程序应该如何去写Top
6 楼qqwangbalu(飞天舞)回复于 2006-03-07 10:43:55 得分 4
先在对话框上加两个edit控件,并为控件添加成员变量
m_strUserName(用户名);m_strPassword(口令);
然后InitInstance()里面show mainframe前加入dlg.DoModal();
例子如下:
int nCount=0;
while(nCount<3)
{
if(dlg.DoModal()==IDOK)
if((strcmp(dlg.m_strUserName,"qqwangbalu")!=0)||
(strcmp(dlg.m_strPassword,"888888")!=0))
{
MessageBox(NULL,"用户名或口令错误,请重试!",
"错误信息",MB_OK|MB_ICONERROR);
nCount++;
}
else
break;
else
{
return FALSE;
}
}
if(nCount>=3)
{
MessageBox(NULL,"口令输入已经超过三次,请退出 !",
"错误信息",MB_OK|MB_ICONERROR);
return FALSE;
}
Top
7 楼lzgvcd(vc菜鸟)回复于 2006-03-07 19:32:10 得分 0
用break语句老是提示出错,illeagle的语法,不知道怎么处理,请各位朋友给指点一下,谢谢楼上的各位兄弟Top
8 楼lzgvcd(vc菜鸟)回复于 2006-03-08 16:54:13 得分 0
you ren hui maTop
9 楼Mackz(在相互)回复于 2006-03-08 21:53:11 得分 2
密码判断放到登陆对话框类里面去。Top
10 楼lzgvcd(vc菜鸟)回复于 2006-03-10 23:22:16 得分 0
我在里面写了,但是密码对了以后,如何登陆到frame上去,谢谢,最好大家给点代码Top
11 楼abuseyoudna1981()回复于 2006-03-12 00:10:54 得分 2
我是在App的InitInstance()里面验证的.
在App的头文件里,我加入了账号和密码的CString变量,分别是count,password;
int result=dlg.DoModal();
if(result==IDOK){
count=dlg.count;
password=dlg.password;
if((count=="1506378")&&(password=="iloveyou")){}
else
{ AfxMessageBox("Cant login,Because wrong count or password");
PostQuitMessage(WM_CLOSE);
}
}
// The one and only window has been initialized, so show and update it.
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
Top
12 楼abuseyoudna1981()回复于 2006-03-12 00:11:13 得分 2
我是在App的InitInstance()里面验证的.
在App的头文件里,我加入了账号和密码的CString变量,分别是count,password;
int result=dlg.DoModal();
if(result==IDOK){
count=dlg.count;
password=dlg.password;
if((count=="1506378")&&(password=="iloveyou")){}
else
{ AfxMessageBox("Cant login,Because wrong count or password");
PostQuitMessage(WM_CLOSE);
}
}
// The one and only window has been initialized, so show and update it.
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
Top
13 楼lzgvcd(vc菜鸟)回复于 2006-03-14 17:25:43 得分 0
如果我的密码和用户名都正确了,如何进入mainfrm里面呢,谢谢各位朋友的指点Top
14 楼benxudong()回复于 2006-03-15 09:43:19 得分 2
上面已经讲清楚了,都正确继续下面的程序,就能进入mainfrm了,不正确就退出程序了。
如果你需要还设置焦点的话,可以定义一个累加器,判断累加器的次数大于一定的限度再退出,否则SetFocus();Top
15 楼lzgvcd(vc菜鸟)回复于 2006-03-15 10:38:47 得分 0
我的意思是说,我将程序写在dlg里面,不是在App的InitInstance(),谢谢Top




