这一节就是关于MFC工程管理,这里在主对话框出现之前添加一个登陆界面,最后在主对话框添加一个小小的功能就是关闭window已经打开的窗口。

下面是实现的过程:

主对话框还是上一节中那个MFC消息映射机制实现的对话框,然后我们添加登陆界面,

首先在原工程的资源视图下添加一个登陆的对话框,包括用户名,密码,并修改ID,然后怎样关联到App类中呢?

长话短说,就是App类的初始化函数中添加下面代码:

BOOL CMFC2App::InitInstance()
{CWinApp::InitInstance();CLoginDlg ldlg;if (IDCANCEL == ldlg.DoModal())return FALSE;CMFC2Dlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();return FALSE;
}

然后这样可以调用该登陆对话框了,代码中判断就是如果DoModal()函数返回值为2,也就是IDCANCEL的值(IDOK的值是1),return FALSE相当于break(return TURE相当于continue),这样只要点击退出按钮,直接跳出该程序,不执行后面的代码。
我们再看一下登陆界面的设置,先获取到输入框的字符串,然后判断是否符合条件,如果符合就执行Ok,否则弹出一个消息窗口,点击了消息窗口的确定之后,让用户名和密码清零并且将光标聚焦到IDC_NAME编辑框上。具体代码实现:

void CLoginDlg::OnBnClickedOk()
{CString szname, szpass;GetDlgItemText(IDC_NAME, szname);GetDlgItemText(IDC_PASS, szpass);if (szname=="admin"&&szpass=="123456")CDialogEx::OnOK();else{AfxMessageBox(L"用户名或密码错误");SetDlgItemText(IDC_NAME, L"");SetDlgItemText(IDC_PASS, L"");//this->SetFocus();GetDlgItem(IDC_NAME)->SetFocus();}
}

最后再加一个关闭window打开的窗口(新建的一个txt编辑文档),在主对话框添加一个按钮,

见代码:

void CMFC2Dlg::OnBnClickedButton1()
{CWnd* p = FindWindow(NULL,L"新建文本文档.txt - 记事本");if (p)p->SendMessage(WM_CLOSE);}

代码中要获取桌面打开的窗口的名字(名字必须要一模一样),然后获取到之后,防止指针为空加一个判断,发送一个关闭的消息即可。
结果图(文本文档打开关闭的效果不好展示,感兴趣的话这个功能可以自己玩一玩)如下:

吕鑫MFC学习系列五相关推荐

  1. 吕鑫MFC学习系列一

    前面有学习MFC比较零乱,利用假期好好恶补一下,接下来按照在网易公开课上吕鑫老师的MFC的教程来学习MFC的开发. 第一个学习的是员工管理系统,先把实现好的窗口贴上来. 主要的功能:添加(员工的工号, ...

  2. 吕鑫MFC学习系列七

    接着上一节的知识点继续学习MFC的一些重要函数,因为函数设计MFC的基础. 第一步,创建一个MFC工程,然后再将上一节的两个功能添加进来,通过类向导添加DestroyWindow(),第二个按钮通过c ...

  3. 吕鑫MFC学习系列十

    继续吕鑫VS2015的MFC类封装原理学习: 前面已经介绍过了,这一节实现一个员工管理系统中的数据管理和显示. 看一下代码: // workDlg.cpp : 实现文件 //#include &quo ...

  4. 吕鑫MFC学习系列四

    第一个是Win32工程转换而成MFC工程: 建一个win32项目,window应用程序,然后删除了所有函数,只留下主函数,编写过程中转MFC,所以右击项目,选择静态库MFC,然后在stdafx.h中用 ...

  5. 吕鑫MFC学习系列六

    这一章学习的相关知识框架: 一.根据主窗口类型,MFC软件工程可以分为以下几种架构模型: 1.SDI(Single Document Interface):单文档界面,一个主框架窗口下只能编辑一份文档 ...

  6. 吕鑫MFC学习系列二

    第二个学习的是CString的类成员的使用,这个类是非常重要的,重点学习一下. 成员函数学习: 1.CString::GetLength() 2.CString::Format() 在vs2013编译 ...

  7. 吕鑫MFC学习系列三

    这节制作的是Ctime类的学习: 1.初始化 m_begintime=CTime(2004,1,1,0,0,0,-1);//参数依次为 year,month,day,hour,minite,secon ...

  8. 吕鑫MFC学习系列九

    CWinApp类的基类:CObject->CCmdTarget->CWinThread->CWinApp 一.CWinApp类成员变量: 1.WinMain的四个参数: // Sta ...

  9. 【吕鑫MFC学习】一个简单的MFC程序

    开始学习MFC的第一天,实现一个简单的整数计算器用来说明MFC程序的基本流程. 平台:Visual Studio2015 实现的界面: 首先,新建一个MFC应用程序 这里简单说明控制台应用程序.MFC ...

最新文章

  1. VS2012下安装OpenCV3.0.0的记要
  2. 学习笔记——Numpy基本操作(一)
  3. VS Code配置Java万能环境
  4. 全数字实时仿真平台SkyEye目标码覆盖率关键技术
  5. AI读懂两千年前文字,登上Nature封面,惊艳历史学家
  6. vue-router 跳转原理
  7. nginx php重定向,Thinkphp linux nginx重定向配置
  8. KEIL MDK access violation at 0x40021000 : no ‘read‘ permission的一种解决方法
  9. 第12章 数据库完整性
  10. Odoo与ERP传统软件有什么不同?
  11. java轩辕剑天之痕游戏攻略_轩辕剑3外传天之痕攻略 全流程文字攻略(3)
  12. 数字图像处理(第三版)
  13. glsurfaceview 和 open gl
  14. Matlab S-function 使用总结
  15. 区块链四:共识机制——PBFT算法深入讲解
  16. 韩寒:给李彦宏先生的一封信
  17. Firefox 浏览器和burp suit 证书配置
  18. 求简单多边形面积时非常有用的“鞋带公式”
  19. 猪齿鱼平台CI流程总结--遇到的坑
  20. unity 文字滚动显示_Unity ScrollRect 实现垂直滚动文字

热门文章

  1. 什么是底层架构_VCU故障诊断---底层(BSW)设计解析
  2. 英语六级口语备考指南
  3. Geant4 多线程问题(尝试解决)
  4. 如何从一款单片机移植到另一款单片机
  5. 10个常用的数据分析商业模型之SCP分析模型(二)
  6. 40 道基础Dubbo 面试题及答案
  7. 微信小程序使用vant实现日历弹框
  8. Easy Touch虚拟摇杆的用法
  9. Windows系统资源监控
  10. 数据及数据管理基本概念