一、MFC的架构根据主窗口类型的不同可分一下几种
(1)SDI,单文档界面,一个主框架窗口下只能编辑一份文档。如记事本和画笔等
(2)MDI,多文档界面,一个主框架窗口下可以编辑多份文档。如VC,PS等
(3)基于对话框的软件模型,主窗口是通过资源管理器,在对话框模块内摆放控件编辑而成。
多用于开发小规模软件,如任务管理器。
(4)其他自定义窗口做主窗口,主窗口既不是框架也不是对话框,而是直接开发通用窗口类CWnd而成,

例如:QQ,360软件等,有时这类软件也通过使用框架和对话框模式。

二、对话框

(1)模式对话框和非模式对话框的区别:

a、非模式对话框:非阻塞型,需要长的生存周期。必须在堆内申请对象(new)或在成员变量内申请对象。例如,聊天窗口可同时打开多个,与主对话框分离。

if(!mdlg.m_hWnd)
mdlg.Create(IDD_CHAT_DLG,GetDesktopWindow());
mdlg.ShowWindow(SW_SHOW);

b、模式对话框:    阻塞型,在当前栈内申请对象。例如,软件的关于对话框。

(CABOUTBOX dlg;  dlg.DoModal();)

(2)CWnd的成员函数:

a、DestroyWindow(IDOK),摧毁窗口函数,EndDialog(IDOK)只能关闭不能摧毁,句柄还存在,只是隐藏没有真正关闭。

b、Create(创建)和CreateEx(扩展风格的创建,WS_EX_CLIENTEDGE为编辑窗口添加边框,更好看)

例如创建编辑框:

m_edit.CreateEx(WS_EX_CLIENTEDGE,"edit","",WS_CHILD|WS_VISIBLE,CRect(20,150,100,180),this,IDC_NAME1);
m_edit.Create("EDIT","",WS_CHILD|WS_VISIBLE,CRect(20,150,100,180),this,IDC_NAME1);

c、获取窗口句柄

(1)pWnd->m_hWnd:直接调用,直接调用前最好判断指针是否为空;指针为空再调软件容易崩溃:::CCHAT_DLGmdlg; if(!mdlg.m_hWnd);
(2)operator HWND() :自动类型转换,将对象转换为句柄
(3)GetSafeHwnd();可以避免指针为空时造成的软件崩溃。

(3)可阻止系统关闭按钮的消息顺序:

OnSyscommand()--OnClose()--OnCancel()--OnDestory(没办法中止关闭任务)

(4)SendMessage()和PostMessage()的异同点

相同:

a、可向本进程和其他进程窗口发送消息。

b、可以发送系统消息,消息编号是:1-wm-user(1-0x3ff)。例如:WM_LBUTTONDOWN 、WM_MOUSEMOVE

c、也可发送非系统消息

不同:

a、SendMessage()为阻塞型,用于调用指定窗口的内部程序,直到窗口程序处理完成后再返回。PostMessage()为非阻塞型,将一个消息寄送到一个窗口内的消息队列后立即返回。

b、两个函数返回值不同,SendMessage()返回值为消息处理结果产生的数值。PostMessage()返回值为BOOL型,返回发送成功或失败。

c、

基于MFC平台的对话框软件模型相关推荐

  1. 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc

    基于android平台的天气预报软件的设计与实现 摘 要 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备.因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项. ...

  2. java imgui,发布使用 IMGui 基于 msys2 平台编写的软件

    发布使用 IMGui 基于 msys2 平台编写的软件 最近空闲时间为项目编写一个协议测试工具.由于习惯使用 gcc/g++ 所以在 Windows 10 操作系统上选择 msys2 开发.编程语言是 ...

  3. 基于Android平台的记事本软件(Android Studio项目+报告+app文件)

    移动应用开发技术 期末考核报告 题   目:        基于Android平台的记事本软件             学生姓名     学生学号                           ...

  4. android社交软件。平台,基于Android平台的社交软件设计及实现.pdf

    24 7 计算机技术与发展 Vol. 24 No. 7 第 卷 第 期 2014 7 July 2014 年 月 COMPUTER TECHNOLOGY AND DEVELOPMENT 基于Andro ...

  5. 如何基于MFC制作简易绘图软件

    本文将讲解如何通过MFC制作一个简易的绘图软件 文章目录 一.构造软件的界面 二.画出图形 三.图形的保存与重绘 四.程序下载 一.构造软件的界面 首先新建一个MFC的工程,进入之后按F5调试,可以看 ...

  6. 基于android平台语音日程软件的设计与实现,基于Android平台语音日程软件的设计与实现...

    摘要: 随着移动互联网的发展,智能手机已成为最重要的终端设备,由此产生了以Android平台为代表的新一代操作系统,基于该平台的分布式应用成为移动通信技术领域的研究热点.由于基于Android手机桌面 ...

  7. 基于MFC平台实现SOCKET通信

    一.就先谈谈MFC MFC是Microsoft Foundation Classes的缩写,是由微软公司提供的一个类库,这是来帮助你完成图形界面的设计和软件平台的开发,但是不管是你软件的开发还是图形界 ...

  8. 关于win7利用vs2010 MFC平台开发的软件在win10系统的电脑下无法运行的问题。

    第一次独立开发一个软件,遇到了较多的问题特此记录一下.开发环境:win7 32位系统 vs2010,在有些win10系统下软件无法在正常运行.(注:在有些win10系统下也可运行,个人觉得可能不同的w ...

  9. 基于Android平台的个人理财软件的设计与实现

    摘要 个人理财管理系统是基于Android系统开发的一款手机应用程序.它主要是为了满足人们在快节奏的生活中可以随时记下自己的收支情况的需求.个人理财管理系统与传统的记账方式相比,体现了它的便捷性.安全 ...

最新文章

  1. LeetCode Reorder List
  2. 360董事长周鸿伟在新员工入职培训上的讲话
  3. BugKuCTF 加密 ok
  4. c++预处理命令 #line 用法
  5. Android GestureDetector方法详解
  6. 计算机原理之程序是怎么运行的
  7. IOS15给UICollection添加测试数字
  8. BSS段、数据段、代码段、堆与栈
  9. 119. PHP 性能问题(2)
  10. 11.30 iptables filter表案例 iptables nat表应用
  11. 微信服务号的模板消息有哪些优势和使用限制?
  12. 剑指offer第二版面试题46:把数字翻译成字符串(java)
  13. Dev C++ 下载地址和安装教程
  14. Type-c引脚定义
  15. 大变局时代的搜索引擎走向何方?
  16. 使用qq邮箱进行服务器邮件代发
  17. 算法研究NO7.数字滤波
  18. 授权(authorization)的设计思路
  19. win7连不上手机热点,怎么处理?
  20. 教你一招APP如何快速定制马甲包

热门文章

  1. 《为什么》之概率论和因果关系
  2. 人人都是产品经理系列一
  3. MT4/MQL4入门到精通EA教程第一课-MQL语言常用函数(一)OrderSend()函数
  4. 关于PEiD 0.95在Win7 Ultimate x64下崩溃的解决
  5. CSDN代码和积分获取方式
  6. python assign
  7. 新人贴:MATLAB 错误使用 surf (line 74) X、Y、Z 和 C 不能是复数。
  8. 滴滴如何调度_滴滴车主怎么接单,滴滴不接受调度就没单?
  9. H3C ARP攻击防御解决方案
  10. 计算机接口查询,免费的国家违章车辆查询API接口及其使用方法