MFC登录系统(图解)
- 格式:doc
- 大小:4.56 MB
- 文档页数:36
学生成绩管理系统我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。
我创建的基于单文档的应用程序,过程不介绍,大家都会。
下面的是我系统菜单:思路:刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。
当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。
如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。
“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。
整体设计:因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:#include <afxdb.h>【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);}【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
工资管理系统用户使用手册吉林省明日科技有限公司2006年5月第1章系统简介系统概述《工资管理系统》是吉林省明日科技有限公司最新推出的一套通用性、实用性极强的工资管理系统。
系统提供了基本的人员信息管理,同时对员工的基本工资、浮动工资和工资发放进行系统管理,同时配以查询功能,避免数据丢失系统还提供了数据备份及还原功能。
以便能真正适用于各类中小企业及事业型单位。
系统目标最大限度实现企业员工工资的自动化、系统化管理。
系统范围●电子、电器、医药、服装、建筑、物资、化工、商贸、超市、旅游、机械、建材、科技、通讯等各类企业公司●机关、事业单位、学校、研究所等事业型单位。
系统特点●界面设计美观友好●规范、完善的基础信息设置●信息查询灵活、方便、快捷●系统运行稳定,安全可靠第2章运行环境系统开发平台:Visual C++运行平台:Windows xp/Windows 2000/Windows 2003分辨率:最佳效果800*600第3章系统登录双击工资管理系统图标,弹出如图所示的登录界面。
图系统登录界面在“用户名”的文本框,输入用户名:mr,单击“密码”的文本框,输入密码:mrsoft,单击【确定】按钮进入系统主界面,如图所示。
图工资管理系统主界面第4章基本工资管理基本工资管理菜单包括:员工录入和员工删除。
通过基本工资管理可以基本实现员工信息的添加及删除操作。
员工录入单击“基本工资管理”/“员工录入”选项,弹出如图所示的界面。
员工录入模块主要录入员工信息。
图员工录入在“编号”、“姓名”的文本框中,输入员工的编号及姓名,单击“性别”及“学历”的下拉按钮选择性别及学历,最后单击【添加】按钮,即可添加员工信息。
员工删除单击“基本工资管理”/“员工删除”选项,弹出如图所示的界面,该界面主要实现企业性质的信息设置。
图员工删除通过“选择编号”的下拉按钮选择要删除的员工编号,然后单击【删除】按钮即可删除相应的员工信息。
第5章工资管理工资管理菜单包括:基本工资管理、浮动工资管理和工资发放管理。
MFC登录系统第一步、建立一个框架结构工程选择其它语言中的Visual C++,在中间视图中选择MFC应用程序,下面的名称中输入工程名称GzyOa,解决方案名称是你的工程目录名可以使用默认的工程名也可以修改成自己好记的名称。
点击确定。
下一步我们选择“多个文档”“选项卡式文档”,我们不用文档视图,所以将下面的“文档/视图结构支持(V)”复选框去掉,点击完成。
这样就完成了工程的创建。
第二步,建立登录对话框。
选择“类视图”导航栏,点击右键选择“类向导”。
选择添加类类名CLogin基类为CDialog点击完成。
在类视图中找到刚建的类,点右键选择“转到”对话框(D)制作如下对话框。
(确定改为“登录”,取消改为“退出”,增加“设置”按钮。
)鼠标放在第一个编辑框点右键,选添加变量m_editName同法定义第二个编辑框变量为m_editPassWord,同时将其属性Password设置为True,并在其头文件中手动添加两个变量:public:CString cName;CString cPass;双击登录按钮添加如下代码:void CLogin::OnBnClickedOk(){m_editName.GetWindowTextW (cName);m_editPassWord.GetWindowTextW(cPass);CDialog::OnOK();}这里是把编辑框的内容传给public变量,以便于主程序存储登录信息,这里以后还要添加认证代码。
(这是后话)在类视图中找到CGzyOaApp类(程序入口)修改InitInstance()函数,使用程序先启动对话框后再启动框CMainFrame。
方法如下:1.为CGzyOaApp类添加两个对应变量(用于接收登录窗口的用户信息)CString m_strSqlName;CString m_strSqlPassword;2.先在CGzyOaApp类的源文件头添加#include"Login.h"3.找到InitInstance()函数定义(向下翻)添加如下代码:红色部分BOOL CGzyOaApp::InitInstance(){INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinAppEx::InitInstance();if (!AfxOleInit()){AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;}AfxEnableControlContainer();EnableTaskbarInteraction();SetRegistryKey(_T("应畖用?程ì序ò向ò导?生Θ?成é的?本?地?应畖用?程ì序ò"));InitContextMenuManager();InitKeyboardManager();InitTooltipManager();CMFCToolTipInfo ttParams;ttParams.m_bVislManagerTheme = TRUE;theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);CLogin m_login;if (m_login.DoModal ()==IDOK){m_strSqlName=m_ame ;m_strSqlPassword=m_login.cPass ;CMDIFrameWnd* pFrame = new CMainFrame;if (!pFrame)return FALSE;m_pMainWnd = pFrame;if (!pFrame->LoadFrame(IDR_MAINFRAME))return FALSE;HINSTANCE hInst = AfxGetResourceHandle();m_hMDIMenu = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_GzyOaTYPE));m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_GzyOaTYPE));CMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame->LoadFrame(IDR_MAINFRAME))return FALSE;m_pMainWnd = pMainFrame;pMainFrame->ShowWindow(m_nCmdShow);pMainFrame->UpdateWindow();}return TRUE;}这样就完成了登录过程的修改,但对话框还太单调,这里我们使用绘图方法添加标题等信息,方法如下:在类视图中找到对话框类CLogin,点右键,选择类向导。
编写一个简单的登录对话框大家好,我们利用MFC编写一个简单的登录对话框。
主窗体是单文档界面。
程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。
1、开打VC++6.0。
点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。
2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。
3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。
如果没有问题,我们继续。
点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog。
4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。
5、鼠标右键单击刚才加进去的第一个静态文本框控件,点击属性。
在弹出的标题中填写:输入用户名:。
然后回车、在对话框上的任何空白的地方右键单击,点击建立类向导。
然后弹出选择建立Create a new class,点击OK。
这是为这个对话框创建一个新的类。
在Name中,为该对话框类取个名字:CDlg_login。
下面的Base class以及Dialog ID不要随便改动。
然后点击OK。
这样新的类CDlg_login就与本对话框建立起了联系。
8、点击OK后,我们并没有退出建立类向导。
点击member variables。
9、左键双击IDC_EDIT_NAME(或者单击后,点击右边的add variables),为IDC_EDIT_NAME增加一个对应在类中的名字:m_login_name。
其他地方不要改动。
点击OK。
同样也对IDC_EDIT_PWD也取一个名字:m_login_pwd。
10、点击确定。
这样我们就建立好了登录对话框以及其对应的类CDlg_login。
我们在ClassView里面可以看到我们新加入类CDlg_login。
11、我们注意到右边的对话框的标题栏上依然还是Dialog,我们可以在对话框空白的地方单击右键,点击属性,在标题中输入:请登录。
MFC控件使用详细教程MFC(Microsoft Foundation Class)是微软推出的一套用于开发Windows应用程序的类库。
它提供了许多方便易用的控件,可以快速创建用户界面。
本教程将详细介绍如何使用MFC控件来创建Windows应用程序。
第一步:创建一个MFC应用程序项目要使用MFC控件,首先需要创建一个MFC应用程序项目。
在Visual Studio中,选择"文件"->"新建"->"项目",然后选择"MFC应用程序"模板。
在项目设置中,可以选择使用对话框或视图来作为应用程序的主界面。
第二步:设置控件属性第三步:添加控件消息处理程序控件不仅仅可以显示在界面上,还可以响应用户的操作。
例如,当用户点击按钮时,可以执行一些特定的操作。
要实现这个功能,需要添加控件消息处理程序。
可以通过右键单击控件,选择"添加事件处理程序"来添加控件消息处理程序。
在生成事件处理程序的对话框中,可以选择控件的事件(如点击事件、鼠标移动事件等)和消息的处理函数。
在消息处理函数中,可以编写代码来实现特定的功能。
第四步:编写控件的功能代码在控件的消息处理函数中,可以使用MFC类库提供的函数来实现控件的功能。
例如,如果用户点击了按钮控件,可以使用CButton类的GetWindowText函数来获取按钮的文本,并使用CMessageBox类的MessageBox函数来显示一个消息框。
可以使用类似的方式来处理其他控件的事件。
例如,当用户选择了一个列表框中的项时,可以使用CListBox类的GetCurSel函数来获取选择的项的索引,并根据索引来执行特定的操作。
第五步:编译和运行应用程序完成了控件的添加和功能编写后,可以使用Visual Studio的编译和运行功能来编译和运行应用程序。
在编译过程中,会生成可执行文件和相关的依赖文件。
MFC登陆界面——固定账号和密码1、打开VS2010创建一个MFC应用程序->基于对话框的工程,名字为UserLogin12、在资源视图中右击Dialog选择插入Dialog3、右击新添加地址为IDD_DIALOG1的对话框选择添加类,设置类名为Login4、在解决方案资源管理器源文件中找到UserLogin1.cpp,双击打开把#include"Login.h"添加进去。
5、在UserLogin1.cpp文件中找到BOOL CUserLogin1App::InitInstance()修改以下代码6、在新添加的对话框中添加三个两个静态文本,两个编辑框,一个图片控件。
右击编辑框添加控件变量变量名分别为m_name和m_password,密码对应的编辑框在属性栏中password改为true,这样输入密码时变为如下图7、双击登陆界面的“确定”按钮添加事件处理,代码如下void Login::OnBnClickedOk(){// TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码?CString c,b;m_name.GetWindowText(c);m_password.GetWindowText(b);if(c.IsEmpty()|| b.IsEmpty()){MessageBox(_T("用户名或密码不能为空!"),_T("用户登录信息"));return;}else if(c=="YY"&&b=="1234"){MessageBox(_T("测试成功!"),_T("登陆"));//这句可有可无}else{MessageBox(_T("用户名或密码不正确"),_T("提示"));return;}CDialogEx::OnOK();}至此就可以编译运行了!运行后当用户名和密码输入正确时点击“确定”即可打开主对话框。
MFC基于单文本和对话框的登陆界面实现MFC(Microsoft Foundation Class)是一种基于C++语言的面向对象的图形用户界面(GUI)开发框架,它提供了一整套类库和工具,简化了Windows下的GUI应用程序开发。
在MFC中,可以通过单文本和对话框来实现登录界面。
首先,我们可以创建一个MFC应用程序并选择单文档或对话框应用程序。
在本文中,我们选择创建一个对话框应用程序。
创建对话框应用程序后,MFC会自动生成与对话框相关的代码,包括对话框资源和控件类。
然后,我们需要为登录按钮添加点击事件的处理程序。
可以在对话框类的头文件中声明处理程序函数,并在源文件中实现它。
处理程序函数将在用户点击登录按钮时被调用。
在处理程序函数中,我们需要获取用户输入的用户名和密码,并与预先存储的正确用户名和密码进行比较。
可以使用MFC提供的CString类来处理字符串。
如果用户名和密码正确,我们可以显示一个消息框来提示用户登录成功,并关闭登录对话框,打开主界面。
如果用户名和密码不正确,我们可以显示一个错误消息框,提示用户重新输入。
下面是一个示例的处理程序函数:```void CMyDialog::OnBnClickedLoginCString strUsername;CString strPassword;//获取用户输入的用户名和密码GetDlgItemText(IDC_EDIT_USERNAME, strUsername);GetDlgItemText(IDC_EDIT_PASSWORD, strPassword);//比较用户名和密码是否正确if (strUsername == "admin" && strPassword == "password") //登录成功,显示成功消息框MessageBox(_T("登录成功"), _T("提示"), MB_OK ,MB_ICONINFORMATION);//关闭登录对话框EndDialog(IDOK);//打开主界面CMainFrame* pMainFrame = new CMainFrame;pMainFrame->Create(NULL, _T("主界面"));pMainFrame->ShowWindow(SW_SHOW);}else//登录失败,显示错误消息框MessageBox(_T("用户名或密码错误"), _T("错误"), MB_OK ,MB_ICONERROR);}```在处理程序函数中,我们使用了`GetDlgItemText`函数来获取文本框中的文本,`MessageBox`函数来显示消息框,`EndDialog`函数来关闭对话框,`Create`函数来创建主界面窗口。
MFCWCG登录换算银行代码?登录/换算/银行代码MFC登录方法:1、从浏览器输入以下五个网址之一登录https:// https://https:// https://(新增)https://(新增) 2、下载手机APP登录,下载地址:https:///downloads/mobile/webapp/downlo ad.html (复制到浏览器打开下载)3. 华克金交易注册网址 4. 华克金注册登录网址https:// 5.M信APP下载链接/download/m-seek.html6.mmall网址:?https://华克金网址: 这两个随时看到完整的余额数量,而且没有看到下载的这些东西大家记得把这两个网址收藏好直接互转1MCoin=3mp(当前价)1MCoin=3E积分1MCoin=18元¥1MCoin=9MYR1MYR=2元¥1LR=2元¥1Mp=6元¥100mp=230.79LR 100Mp=33.34MCoin1mp=6人民币中国工商银行swift code代码:ICBKCNBJZJP工商银行国际借记卡swift code代码:ICBKCNBJICC 中国农业银行swift code代码:ABOCCNBJ中国银行swift code代码:PCBCCNBJFJX中国建设银行swift code代码:PCBCCNBJ建行银行代码:PCBCCNBJFJX交通银行swift code代码:COMMCNSH交通银行:COMMCNSHGUA 广州分行COMMCNSHWXI无锡分行国家开发银行swift code代码:SDBCCNBJ中国邮政储蓄银行swift code代码:PSBCCNBJ中国光大银行swift code代码:EVERCNBJ中国民生银行swift code代码:MSBCCNBJ招商银行swift code代码:CMBCCNBS兴业银行siwft code代码:FJIBCNBA中信银行swift code代码:CIBKCNBJ中国银行代码:BKCHCNBJ110中国银行代码:BKCHCNBJ华夏银行swift code代码:HXBKCNBJ上海浦东发展银行swift code代码:SPDBCNSH重要通知:各位中国的伙伴,为了让市场在M币的交易程序更加顺畅,针对没有输入银行支行的M币挂卖交易的账户,系统已经退还所挂卖的M 币至该户口,所有欲挂卖M币的账户必须输入银行支行,银行国际代码(可电话问银行人工台客服)后方可挂卖成功,谢谢!如果不填写完整,系统不会让玩家在平台挂卖M币,请各玩家去“查询账户资料”里更新,请大家互相转告。
目录一课题设计内容、具备的功能; (3)[设计内容]: (3)[系统功能] (3)二类和对话框的功能及其成员 (3)1、CTestADOView:添加基本功能成员函数 (3)2、CStudlg:添加学生信息对话框 (4)3、CStuModiDlg:修改记录对话框 (4)4、CStuFindDlg:查找对话框 (5)5、CStufindall:综合查询对话框 (5)6、IDD_TESTADO_FORM:主对话框 (5)7、IDD_DIALOG1 (6)8、IDD_DIALOG2 (6)9、IDD_DIALOG3 (7)10、IDD_DIALOG4 (7)三部分功能代码 (7)1、部分成员初始化 (7)2、添加成员函数OnExecute (8)3、“添加记录”菜单消息函数 (9)4、“删除消息”菜单消息函数 (10)5、“排序”菜单消息函数 (11)6、“查找”菜单命令消息处理函数 (12)7、“综合查询”菜单命令消息处理函数 (13)8、“更新记录”菜单命令消息处理函数 (13)9、“排序”菜单命令消息处理函数 (14)四程序设计过程、调试中过程中所用的测试用例、测试方法,程序运行的结果: (15)1、开始运行 (15)2、连接 (15)3、显示记录 (16)4、添加记录 (16)5、删除记录 (17)6、更新记录 (17)7、排序 (18)8、查找 (18)9、按条件查询 (18)五课程设计的体会和收获: (19)一课题设计内容、具备的功能;[设计内容]:系统存储以下信息:1)学生基本信息;2)学生的成绩;[系统功能]1) 在VC中设计对话框及菜单,将对话框控件DataGrid与Access数据库表student 相连,实现VC中的操作对数据表进行修改。
2)显示记录连接数据库显示学生信息;3)添加记录添加学生信息;4)删除记录删除当前记录;5)更新记录输入系别,修改新值;6)排序以学号关键字对学生数据排序;7)查找输入系别查找8)查询通过学号、年龄、语文、数学、英语、总分等查找条件进行综合查询。
MFC绘图基础——上机操作步骤⼀、上机之前的介绍软件环境:VC++6.0⽬的:熟悉基本的MFC框架搭建和了解界⾯⼆、MFC上机操作步骤1,在Windows桌⾯上运⾏VC++6.0。
2,新建项⽬⼯程⽂件。
3,在MFC 应⽤程序向导-步骤1 对话框中,选中单⽂档单选按钮,其余保持默认。
4,弹出新建⼯程信息的对话框,单击确定。
5,完成上述步骤后,⼯程Testone的MFC框架已经⽣成。
6,在集成开发环境的左侧⼯作窗⼝中有3个标签页。
ClassView 显⽰所创建的类和成员函数ResourceView 显⽰所创建的资源FileView 显⽰程序⽂件,主要包括程序源⽂件、头⽂件和资源⽂件7,在CTestView 类的源⽂件TestView.cpp中可以找到成员函数OnDraw()。
其内容如下:void CTestoneView::OnDraw(CDC* pDC){CTestoneDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data here}其中pDC定义为CDC类的指针。
pDoc通过GetDocument()函数得到了指向⽂档类CTestoneDoc的指针。
ASSERT_VALID(pDoc)函数使pDoc指针有效。
使⽤pDC指针,可以对CDC类的成员函数进⾏操作。
注意:OnDraw()函数是由系统框架直接调⽤的,每当窗⼝重绘时就会⾃动执⾏。
8,单击⼯具条上的按钮,就可以直接编译、运⾏程序。
三、结束语⾄此,尽管未编写⼀⾏代码,但Test⼯程已经形成⼀个可执⾏程序的框架了。
以后的⼯作就是针对具体的设计任务,为该框架添加⾃⼰的程序代码。
接下来就是Coding~~~。
MFC⽤户登录、注册、⼯作主窗体创建项⽬由向导⽣成的窗体作为⼯作的主窗体。
⽤户登录、注册窗体添加对话框来实现。
【具体功能】1、主窗体应该出现在登录窗体成功之后。
2、登录窗体关闭(右上⾓ ),程序直接退出。
在App.cpp的InitInstance()内起始处加⼊代码//============登录===========//在主程序窗⼝运⾏前⾸先弹出登录对话框while (TRUE){CLogin login_Dialog;//模态对话框int nReturn = login_Dialog.DoModal();//返回IDOK或IDCANCEL。
如果返回的是IDCANCEL,则要调⽤WindowsCommDlgExtendedError函数来确定是否发⽣了⼀个错误。
IDOK和IDCANCEL都是常量,它表明⽤户选择的是OK按钮还是Cancel按钮if (nReturn == IDCANCEL)//点击取消{return FALSE;}if (nReturn == IDOK)//点击确定{//HWND login_Hwnd = GetDlgItem(login_Dialog, IDD_DIALOG1);CString str_User = login_Dialog.m_strUser;CString str_Password = login_Dialog.m_strPassword;if (!(str_User == "admin" && str_Password == "admin"))//如果⽤户名密码不是admin/admin,则报错,提⽰重新输⼊,直⾄正确为⽌。
{if (IDOK == MessageBox(NULL, TEXT("⽤户ID或密码错误!\n 请重新输⼊!"),TEXT( "登录失败!"), MB_OKCANCEL | MB_ICONERROR)) continue;elsereturn FALSE;}elsebreak;}}⽤户登录对话框void CMFCApplication17Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//将控件数据复制给控件变量CString username;CString password;//与注册类似操作bool flag = false;//char * path = "username.txt";CString path = TEXT("./username.txt");CFile file;file.Open(path, CFile::modeCreate | CFile::modeRead);file.SeekToBegin();CArchive ar(&file, CArchive::load);//去除数据左右空格数据m_loginName.Trim();m_loginPwd.Trim();//校验⽤户密码,与注册校验相同的操作,这⾥多验证了⼀步,即校验密码while (ar.ReadString(username)){if (ar.ReadString(password)){username.Trim();password.Trim();if (username == m_loginName && password == m_loginPwd){flag = true;break;}}}//关闭CFile和CArchivear.Close();file.Close();if (flag){//m_Login_Result = m_Login_Account + " " + " " + "已登录";//找到则显⽰的是⽤户名+性别+已登录 m_loginName = "";//成功登录后把⽤户框和密码框⽂本清除m_loginPwd = "";UpdateData(FALSE);//将数据从控件变量传递给控件CWork dlgW;dlgW.DoModal();}else{MessageBox(TEXT("⽤户名不存在或密码错误"));//⽤户密码错误或⽤户不存在提⽰}}void CMFCApplication17Dlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码CRegister reg;reg.DoModal();}⽤户注册对话框void CRegister::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CString username;//从⽂件中读取⽤户名进⾏校验,如果输⼊的⽤户名在⽂件已存在则不进⾏注册bool flag = false;//标记//char * path = "username.txt";//⽂件路径CString path = TEXT("username.txt");CFile fp;//使⽤MFC的CFile将暑假写⼊⽂件fp.Open(path, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite);fp.SeekToBegin();//移动⽂件指针位置⾄⽂件头CArchive ar(&fp, CArchive::load);//使⽤CArchive进⾏读取⽂件UpdateData(TRUE);//将数据从控件复制到控件变量//进⾏左右空格清除m_registerName.Trim();m_registerPwd1.Trim();m_registerPwd2.Trim();//校验操作while (ar.ReadString(username)){username.Trim();if (username == m_registerName){flag = true;//如果已存在⽤户名,则标记flag为truebreak;}else{ar.ReadString(username);//读取下⼀⾏(每⼀⾏为⼀个属性,⽐如⽤户名,密码)ar.ReadString(username);//读取下⼀⾏}}ar.Close();fp.SeekToEnd();//⽂件写⼊为追加操作,所以写⼊前必须将⽂件指针移动⾄⽂件尾if (!flag){//CFile Write(*str,GetLength())写⼊fp.Write(m_registerName, m_registerName.GetLength());//win虽是\r\n,在写程序只需要\n即可换⾏fp.Write("\r\n", sizeof(char));if (m_registerPwd1 != m_registerPwd2){MessageBox(TEXT("密码不⼀致"));}else{fp.Write(m_registerPwd1, m_registerPwd1.GetLength());fp.Write("\r\n", sizeof(char));fp.Close();MessageBox(TEXT("注册成功"));CDialog::OnOK();}}else{MessageBox(TEXT("⽤户已存在"));//⽤户已存在提⽰框,不关闭注册框,可让⽤户⾃由选择是否继续注册 }}。
M F C编写一个简单的登录对话框连数据库编写一个简单的登录对话框王志明---湖南农业大学理学院大家好,我们利用MFC编写一个简单的登录对话框。
主窗体是单文档界面。
程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。
1、开打VC++6.0。
点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。
2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。
3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。
如果没有问题,我们继续。
点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog。
4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。
5、鼠标右键单击刚才加进去的第一个静态文本框控件,点击属性。
在弹出的标题中填写:输入用户名:。
然后回车同样在下面的第二个静态文本框的属性标题改为:输入密码:。
然后回车。
6、在第一个文本编辑框上右键单击,点击属性,把ID框中的IDC_EDIT1改为容易理解的名字,如:IDC_EDIT_NAME,注意前面的IDC_EDIT最好不要去掉,这样容易见名而知义。
同样,对第二个文本编辑框的属性中的IDC_EDIT2改为:IDC_EDIT_PWD7、在对话框上的任何空白的地方右键单击,点击建立类向导。
然后弹出选择建立Create a new class,点击OK。
这是为这个对话框创建一个新的类。
在Name中,为该对话框类取个名字:CDlg_login。
下面的Base class以及Dialog ID不要随便改动。
然后点击OK。
这样新的类CDlg_login就与本对话框建立起了联系。
8、点击OK后,我们并没有退出建立类向导。
点击member variables。
9、左键双击IDC_EDIT_NAME(或者单击后,点击右边的add variables),为IDC_EDIT_NAME增加一个对应在类中的名字:m_login_name。
VS2010MFC基于对话框程序的登录窗口实现【MFC-10】VS2010/MFC基于对话框程序的登录窗口实现标签:MFCC++VS20102016-02-26 17:33 3341人阅读评论(0) 收藏举报分类:MFC(4)C++(14)版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]一、开发环境1、VS2010;2、C++ / MFC;二、登录窗口设计示例1、新建基于对话框的MFC项目,命名为“UserLogin”;2、资源视图中插入一个Dialog,修改ID为:IDD_LOGIN_DIALOG,标题修改为登录对话框,并添加控件,结果如图1所示;图13、创建登录对话框类:CLoginDlg,添加控件变量如图2所示;图24、将对话框类头文件添加到UserLogin.cpp;[cpp] view plain copy// UserLogin.cpp : 定义应用程序的类行为。
//#include "stdafx.h" #include "UserLogin.h" #include "UserLoginDlg.h" #include "LoginDlg.h"5、修改UserLogin.cpp函数BOOLCUserLoginApp::InitInstance()如下:[cpp] view plain copyBOOL CUserLoginApp::InitInstance() { // 如果一个运行在Windows XP 上的应用程序清单指定要// 使用ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要InitCommonControlsEx()。
否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的// 公共控件类。
一、添加基于单文本的登录对话框.1.建立一个单文本的MFC程序.2.添加一个对话框.然后添加一个CLoginDialog类public继承CDialog.此时也会增加两个文件<LoginDialog.h LoginDialog.cpp>接着添加控件(用户名:登录密码:确定/取消)添加变量(CString m_strUserName;CString m_strUserPwd;)直接添加变量:在LoginDialog.h中BOOL m_bCancle;并在LoginDialog.cpp初始化函数中添加m_bCancle = false;添加按钮确定和取消两个函数.并在取消函数中添加m_bCancle = true;+++++++++++++++++++++++3.在"工程名".h 文件中添加一个public 的布尔型变量BOOL m_bSuccessLogin;//用了识别登录名和密码一致否;4.在"工程名"View.cpp 文件中添加C"工程名"App* pApp = (C"工程名"App*) AfxGetApp();5."工程名"View.cpp 文件中添加初始化函数OnInitialUpdate()/////////////////////////////并在"工程名"View.h中声明变量CLoginDialog logindlg;/////////////////////////////并添加如下代码:CView::OnInitialUpdate();// TODO: 在此添加专用代码和/或调用基类p:logindlg.m_strUserName = _T("");logindlg.m_strUserPwd = _T("");logindlg.DoModal();if ((logindlg.m_strUserName=="aa")&&(logindlg.m_strUserPwd=="bb")){pApp->m_bSuccessLogin = true;}else{if (!logindlg.m_bCancle){AfxMessageBox(L"错误的帐号或密码!");goto p;}}6.修改LoginTest类中的函数BOOL C"工程名"App::InitInstance()如下所示:将// 唯一的一个窗口已初始化,因此显示它并对其进行更新m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();// 仅当具有后缀时才调用DragAcceptFiles// 在SDI 应用程序中,这应在ProcessShellCommand 之后发生return TRUE;替换为:// 唯一的一个窗口已初始化,因此显示它并对其进行更新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;}最后不要忘了添加一些头文件.a. 在"工程名"View.cpp中添加#include "LoginDialog.h"b. 在"工程名"View.h中添加#include "LoginDialog.h"二、添加基于对话框的登录界面记得添加登录界面的两个变量:Loginname Password手动直接添加BOOL m_bCancle;并在LoginDialog.cpp初始化函数中添加m_bCancle = false;添加按钮确定和取消两个函数.并在取消函数中添加m_bCancle = true;在CLoginDialog类中添加两个函数:Setloginname() Setpassword()CString& CLoginDialog::Setloginname(void){//TODO: insert return statement herereturn Loginname;}CString& CLoginDialog::Setpassword(void){//TODO: insert return statement herereturn Password;}在"基于对话框_登录界面".cpp 文件中的函数BOOL C基于对话框_登录界面App::InitInstance()里面p:CLoginDialog logindlg;logindlg.DoModal();if(logindlg.Setloginname()==L"gwb"&&logindlg.Setpassword()==L"157"){m_bSuccessLogin=true;}else{if(!logindlg.m_bCancle){AfxMessageBox(L"错误的帐号或密码!");goto p;}}if (m_bSuccessLogin){C基于对话框_登录界面Dlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: 在此放置处理何时用// “确定”来关闭对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用// “取消”来关闭对话框的代码}}else{delete(m_pMainWnd);m_pMainWnd = NULL;return FALSE;}另外注意添加头文件喔.在"基于对话框_登录界面".cpp #include "LoginDialog.h" 还有变量声明喔.在在"基于对话框_登录界面".h BOOL m_bSuccessLogin;。
MFC基于单文本和对话框的登陆界面实现MFC(Microsoft Foundation Class)是用于构建Windows应用程序的C++框架。
在MFC中,可以使用单文本和对话框来实现登陆界面。
本文将详细介绍如何使用MFC框架创建一个基于单文本和对话框的登陆界面。
首先,打开Visual Studio,并创建一个新的MFC应用程序项目。
在“应用程序类型”下选择“对话框”,然后点击下一步。
在“对话框风格”下选择“含有菜单栏和工具栏”的选项,并勾选“启用对话框最小化”和“启用对话框最大化”,然后点击完成。
Visual Studio会自动生成一个对话框类和一个主框架类。
在对话框类的头文件(.h)中,我们需要为每个控件创建一个成员变量。
这些成员变量将用于对控件进行操作和获取用户输入的内容。
在对话框类的头文件中添加如下代码:```cpppublic:CEdit m_editUsername;CEdit m_editPassword;```然后,在对话框类的源文件(.cpp)中,我们需要在DoDataExchange函数中进行控件和变量之间的关联。
在DoDataExchange函数中添加如下代码:```cppvoid CLoginDlg::DoDataExchange(CDataExchange* pDX)CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_EDIT_USERNAME, m_editUsername);DDX_Control(pDX, IDC_EDIT_PASSWORD, m_editPassword);```现在,我们已经完成了界面的设计和控件的相关设置。
下一步是实现登录按钮的功能。
当用户点击登录按钮时,我们需要获取用户名和密码的内容,并进行验证。
验证成功后,可以显示一个消息框提示用户登录成功,验证失败则提示用户登录失败。
在对话框类的源文件中添加如下代码:```cppvoid CLoginDlg::OnBnClickedButtonLoginCString strUsername, strPassword;m_editUsername.GetWindowText(strUsername);m_editPassword.GetWindowText(strPassword);if (strUsername == _T("admin") && strPassword ==_T("admin123"))MessageBox(_T("登录成功!"), _T("提示"), MB_ICONINFORMATION);EndDialog(IDOK);}elseMessageBox(_T("用户名或密码错误,请重新输入!"), _T("错误"), MB_ICONERROR);m_editUsername.SetWindowText(_T(""));m_editPassword.SetWindowText(_T(""));m_editUsername.SetFocus(;}```最后,我们需要为取消按钮添加功能。
MFC中给基于对话框的应⽤程序添加登陆界⾯给基于对话框的应⽤程序添加登陆界⾯,也就是增加⼀个新的对话框。
在⼀般的基于对话框的应⽤程序的CXXXApp.cpp中都会有:CXXXDlg dlg; //程序的主对话框m_pMainWnd = &dlg; //设置为主对话框,也就是所主对话框的结束也就意味着程序的结束INT_PTR nResponse = dlg.DoModal(); //弹出主对话框if (nResponse == IDOK) //根据对话框的返回值设置要执⾏的操作{... }else if (nResponse == IDCANCEL){... }现在就来开始添加登陆界⾯:1、先建好新的登陆对话框类CLoginDlg(MFC类,基于CDialog的),⽣成.cpp和.h⽂件。
2、在资源视图⾥绘制好登陆界⾯的内容:可以输⼊⽤户名和密码的编辑框,登⼊和退出按钮。
3、利⽤类向导给⽤户名和密码的两个编辑框分别关联变量:m_InUser ,m_InPassword。
4、在给登陆按钮添加消息响应函数OnBnClickedOk(),并添加代码如下:void CLoginDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码CDialog::OnOK();//获取⽤户名和密码m_InUser.GetWindowText(m_InLoginname);m_InPassword.GetWindowText(m_Password);//判断⽤户名和密码if((m_Loginname == "")||(m_Password == "")){AfxMessageBox(L"请输⼊⽤户名和密码!");}else if(m_Loginname == L"lxt" && m_Password == L"123"){m_SuccessLogin = true;this->EndDialog(1);}else{AfxMessageBox(L"错误的帐号或密码,请重新输⼊!");return;}}5、给突出按钮添加消息响应函数OnBnClickedCancel():void CLoginDlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码CDialog::OnCancel();m_bCancle = true;}6、在LoginDlg.h⾥声明:BOOL m_bCancle;BOOL m_SuccessLogin;7、在LoginDlg.cpp⾥初始化:m_bCancle = false;m_SuccessLogin = false;8、在CXXXApp.cpp中,将最上边的代码替换成:p:CLoginDlg dlg_login; //建⽴登陆对话框对象dlg_login.DoModal(); //弹出登陆对话框if(dlg_login.m_SuccessLogin){CXXXDlg dlg; //建⽴主应⽤程序对话框对象m_pMainWnd = &dlg; //设置dlg为主对话框INT_PTR nResponse = dlg.DoModal(); //弹出主对话框if (nResponse == IDOK) //根据主对话框返回值选择操作 {// TODO: 在此处放置处理何时⽤“确定”来关闭// 对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时⽤“取消”来关闭// 对话框的代码}}else{if(!dlg_login.m_bCancle){goto p;}delete(m_pMainWnd);m_pMainWnd = NULL;return FALSE;}⼤功告成~~~ ^_^。
MFC登录系统第一步、建立一个框架结构工程选择其它语言中的Visual C++,在中间视图中选择MFC应用程序,下面的名称中输入工程名称GzyOa,解决方案名称是你的工程目录名可以使用默认的工程名也可以修改成自己好记的名称。
点击确定。
下一步我们选择“多个文档”“选项卡式文档”,我们不用文档视图,所以将下面的“文档/视图结构支持(V)”复选框去掉,点击完成。
这样就完成了工程的创建。
第二步,建立登录对话框。
选择“类视图”导航栏,点击右键选择“类向导”。
选择添加类类名CLogin基类为CDialog点击完成。
在类视图中找到刚建的类,点右键选择“转到”对话框(D)制作如下对话框。
(确定改为“登录”,取消改为“退出”,增加“设置”按钮。
)鼠标放在第一个编辑框点右键,选添加变量m_editName同法定义第二个编辑框变量为m_editPassWord,同时将其属性Password设置为True,并在其头文件中手动添加两个变量:public:CString cName;CString cPass;双击登录按钮添加如下代码:void CLogin::OnBnClickedOk(){m_editName.GetWindowTextW (cName);m_editPassWord.GetWindowTextW(cPass);CDialog::OnOK();}这里是把编辑框的内容传给public变量,以便于主程序存储登录信息,这里以后还要添加认证代码。
(这是后话)在类视图中找到CGzyOaApp类(程序入口)修改InitInstance()函数,使用程序先启动对话框后再启动框CMainFrame。
方法如下:1.为CGzyOaApp类添加两个对应变量(用于接收登录窗口的用户信息)CString m_strSqlName;CString m_strSqlPassword;2.先在CGzyOaApp类的源文件头添加#include"Login.h"3.找到InitInstance()函数定义(向下翻)添加如下代码:红色部分BOOL CGzyOaApp::InitInstance(){INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinAppEx::InitInstance();if (!AfxOleInit()){AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;}AfxEnableControlContainer();EnableTaskbarInteraction();SetRegistryKey(_T("应畖用?程ì序ò向ò导?生Θ?成é的?本?地?应畖用?程ì序ò"));InitContextMenuManager();InitKeyboardManager();InitTooltipManager();CMFCToolTipInfo ttParams;ttParams.m_bVislManagerTheme = TRUE;theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);CLogin m_login;if (m_login.DoModal ()==IDOK){m_strSqlName=m_ame ;m_strSqlPassword=m_login.cPass ;CMDIFrameWnd* pFrame = new CMainFrame;if (!pFrame)return FALSE;m_pMainWnd = pFrame;if (!pFrame->LoadFrame(IDR_MAINFRAME))return FALSE;HINSTANCE hInst = AfxGetResourceHandle();m_hMDIMenu = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_GzyOaTYPE));m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_GzyOaTYPE));CMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame->LoadFrame(IDR_MAINFRAME))return FALSE;m_pMainWnd = pMainFrame;pMainFrame->ShowWindow(m_nCmdShow);pMainFrame->UpdateWindow();}return TRUE;}这样就完成了登录过程的修改,但对话框还太单调,这里我们使用绘图方法添加标题等信息,方法如下:在类视图中找到对话框类CLogin,点右键,选择类向导。
添加消息响应函数代码如下:void CLogin::OnPaint(){CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用CDialog::OnPaint()// CPaintDC dc(this);CRect rc;CPen pen;GetClientRect(&rc); //获取客户其大小int nHeight=rc.Height();int i ,j;for(i=255,j=0;nHeight>=0;nHeight--,j++){pen.CreatePen(PS_SOLID,1,RGB(255,i,i));//创建画笔//通过改变RGB()函数的参数可以改变背景颜色,经过复杂的算法可以画出很复杂的背景图CPen *pOldPen=dc.SelectObject(&pen);dc.MoveTo(rc.left,j); //将比尖移到起点dc.LineTo(rc.right,j); //画线到终点dc.SelectObject(pOldPen);pen.DeleteObject(); //删除创建的画笔i=max(0,i-1); //改变颜色值}dc.SetTextColor(RGB(255,0,0));dc.SetBkMode (1);dc.SetTextColor(RGB(0,0,255));dc.TextOut(50,92,L"用户:");dc.TextOut(50,132,L"密码:");CFont font;VERIFY(font.CreatePointFont(200,_T(""), &dc));CFont* def_font = dc.SelectObject(&font);dc.SetTextColor(RGB(10,10,10));dc.TextOut(20,30,L"浩翔综合无纸办公系统");dc.SetTextColor(RGB(255,0,0));dc.TextOut(21,31,L"浩翔综合无纸办公系统");}将对话框的Border必为none效果如下:感觉不美观可以自己重新调整以上语句。
第三步,建立设置SQL或ACCESS数据库连接设置对话框如下:为控件添加变量如下(在控件中右击添加变量):CComboBox m_cmbSqlServer;CEdit m_editName;CEdit m_editPass;CComboBox m_editDatabase;添加函数void DrawGradient(CDC* pDC, const CRect& rect, COLORREF rgbBegin, COLORREF rgbEnd, const int & iStep, const int & iDirection);代码如下:(渐变填充背景)void CLinkSet::DrawGradient(CDC* pDC, const CRect& rect, COLORREF rgbBegin, COLORREF rgbEnd, const int & iStep, const int & iDirection){float fStep=iStep;if(iStep==0){fStep=1.0;}UINT nWidth=rect.Width ();UINT nHeight=rect.Height ();CRect tempRect;float fSteps=0;float nRed=0,nGreen=0,nBlue=0;//定义颜色差float fRedStep=0.0,fGreenStep=0.0,fBlueStep=0.0;//得到色差空间nRed=(GetRValue(rgbEnd)-GetRValue(rgbBegin));nGreen=(GetGValue(rgbEnd)-GetGValue(rgbBegin));nBlue=(GetBValue(rgbEnd)-GetBValue(rgbBegin));//计算分多少步填充switch(iDirection){case 1:fSteps=(float)nHeight/fStep;break;case 2:fSteps=(float)nWidth/fStep;break;case 3:case 4:fSteps=(float)max(nWidth,nHeight);//^(1/2)) /fStep;break;default:fSteps=(float)nHeight/fStep;break;}fRedStep=nRed/fSteps;fGreenStep=nGreen/fSteps;fBlueStep=nBlue/fSteps;nRed=GetRValue(rgbBegin);nGreen=GetGValue(rgbBegin);nBlue=GetBValue(rgbBegin);CPen pen;switch(iDirection){case 1:for(int i=0;i<=fSteps;i++){tempRect.SetRect (0,i,nWidth,i+fStep);nRed+=fRedStep;nGreen+=fGreenStep;nBlue+=fBlueStep;pDC->FillSolidRect (&tempRect,RGB(nRed,nGreen,nBlue));}break;case 2:for(int i=0;i<=fSteps;i++){tempRect.SetRect (i,0,i+fStep,nHeight);nRed+=fRedStep;nGreen+=fGreenStep;nBlue+=fBlueStep;pDC->FillSolidRect (&tempRect,RGB(nRed,nGreen,nBlue)); }break;default:for(int i=0;i<=fSteps;i++){nRed+=fRedStep;nGreen+=fGreenStep;nBlue+=fBlueStep;tempRect.SetRect (0,i,nWidth,i+fStep);pDC->FillSolidRect (&tempRect,RGB(nRed,nGreen,nBlue));}break;}}对话框响应WM_ERASEBKGND消息如下:CRect rect;GetWindowRect(rect);DrawGradient(pDC,&rect,RGB(100,186,255),RGB(15,42,255),1,1);CFont font;CFont* def_font ;CPaintDC dc(this);font.CreatePointFont(130,_T("宋体"), &dc);def_font = dc.SelectObject(&font);dc.SetBkMode (1);dc.SetTextColor(RGB(0,0,0));dc.TextOut(10,62,L"SQL服务器:");dc.TextOut(55,94,L"用户名:");dc.TextOut(55,119,L"密码:");dc.TextOut(10,195,L"数据库名:");font.DeleteObject ();font.CreatePointFont (200,L"宋体",&dc);def_font = dc.SelectObject(&font);dc.SetTextColor (RGB(200,0,0));dc.TextOutW (80,10,L"SQL数据连接设置");return TRUE;//CDialog::OnEraseBkgnd(pDC);接下来我们创建一个类,用于获取局域网内的所有SQL数据库服务器名称在头文件中删掉基类(红色部分)添加如下变量及函数,或者我们在创建类时使用C++类而不是MFC类。