一个简单的登录对话框的实现

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

一个简单的登录对话框的实现

作者:不会游泳的鱼

下载源代码

要求用户正确输入用户名和密码,然后才能进入系统。刚好前几天有个人问俺如何在程序启动时先启动登录对话框的问题,俺就给他写了个示例程序,今天拿出来给大伙共享,有什么不正确的地方请大家多多指教。

一、在 LoginTest.h 文件中添加一个 public 的 布尔型变量 BOOL m_bSuccessLogin;

二、在 LoginTestView.h 文件中添加 CLoginTestApp* pApp = (CLoginTestApp*) AfxGetApp();

现在很多程序需要在登录界面上输入正确的用户帐号和密码才能继续使用,就象 Win2000 启动后会用来定义一个指向 LoginTest 类的指针。

三、LoginTestView.cpp 文件中添加初始化函数

void CLoginTestView::OnInitialUpdate()

{

CView::OnInitialUpdate();

// TODO: 在此添加专用代码和/或调用基类

p:

logindlg.m_strUserName = _T("");

logindlg.m_strUserPwd = _T("");

logindlg.DoModal();

if (strcmp(logindlg.m_strUserName,"aa") == 0 && strcmp(logindlg.m_strUserPwd,"bb") == 0)

{

//假定用户帐号是“aa”用户密码是“bb”

pApp;m_bSuccessLogin = true;

}

else

{

//假定用户没有单击对话框上的“取消”按钮,则继续显示登录对话框

if (!logindlg.m_bCancle)

{

AfxMessageBox(";错误的帐号或密码!";);

goto p;

}

}

}

四、修改 LoginTest类中的函数BOOL CLoginTestApp::InitInstance()如下所示:

BOOL CLoginTestApp::InitInstance()

{

// 如果一个运行在 Windows XP 上的应用程序清单指定要

// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,

//则需要 InitCommonControls()。否则,将无法创建窗口。

InitCommonControls();

CWinApp::InitInstance();

// 初始化 OLE 库

if (!AfxOleInit())

{

AfxMessageBox(IDP_OLE_INIT_FAILED);

return FALSE;

}

AfxEnableControlContainer();

// 标准初始化

// 如果未使用这些功能并希望减小

// 最终可执行文件的大小,则应移除下列

// 不需要的特定初始化例程

// 更改用于存储设置的注册表项

// TODO: 应适当修改该字符串,

// 例如修改为公司或组织名

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

LoadStdProfileSettings(4);?// 加载标准 INI 文件选项(包括 MRU)

// 注册应用程序的文档模板。文档模板

// 将用作文档、框架窗口和视图之间的连接

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CLoginTestDoc),

RUNTIME_CLASS(CMainFrame),?// 主 SDI 框架窗口

RUNTIME_CLASS(CLoginTestView));

if (!pDocTemplate)

return FALSE;

AddDocTemplate(pDocTemplate);

// 分析标准外壳命令、DDE、打开文件操作的命令行

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);

// 调度在命令行中指定的命令。如果

// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。

if (!ProcessShellCommand(cmdInfo))

return FALSE;

// 唯一的一个窗口已初始化,因此显示它并对其进行更新

if (m_bSuccessLogin)//如果用户成功登录

{

m_pMainWnd-ShowWindow(SW_SHOWMAXIMIZED);

m_pMainWnd-UpdateWindow();

// 仅当存在后缀时才调用 DragAcceptFiles,

//?在 SDI 应用程序中,这应在 ProcessShellCommand?之后发生

return TRUE;

}

else //如果没有成功登录

{

delete(m_pMainWnd);

m_pMainWnd = NULL;

return FALSE;

}

}

程序的运行后首先弹出登录对话框如下:

用户正确输入帐号和密码(假定分别为aa和bb),则进入系统,否则给出提示。

这是程序的主要实现部分,其它的部分就不说了,大家可以看一下源程序。该程序中VS.NET中编译通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航