MFC对话框程序小总结

MFC中模态对话框和非模态对话框的区别 MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁... 阅读详情

      迷你电话本

本文关键字:CArchive,CFile,CListCtrl,序列化,文件保存,列表控件

源程序见:下载

 界面:(程序vc6.0下编译通过)

主要实现思路:

数据结构方面:

     保存到硬盘,也就是保存到文件,方便读写(需要序列化的原因:由于CString对象,里面包好有指针对象,指针地址是随机分配的,也就是说这次保存得地址,下次启动时候可能是个空地址,除非数据结构直接用字符数组存储,但经验可以得知,数组保存很不方便)。

整个程序的核心数据都保存于CTypedPtrList<CObList,CPerson*> m_recordList;这个链表中,CTypedPtrList也是一个支持序列化操作的数据结构。

    注意: DECLARE_SERIAL(CPerson);这一行不能漏掉,序列化支持的宏定义,然后在程序的定义实现文件中加上这一行IMPLEMENT_SERIAL(CPerson, CObject, 1|VERSIONABLE_SCHEMA),代表的是文档的版本,方便管理文件版本,比如说以后你因需要为CPerson结构体增加变量时,同时程序要兼容以前的版本文件,这个时候就需要判断版本号。

    CPerson继承自CObject目的是用于序列化操作,CObject对象支持Serialize(CArchive& ar),保存到硬盘。

比如打开文件,就把上次保存得数据读进m_recordList中。

  

保存文件同样,把m_recordList数据逐个写到文件中

注意对照上述 保存和打开时候CFile,CArchive对象的区别。

 

  

上述是数据的保存操作方面的,以下是

数据显示:

       CListCtrl m_list; //注意编辑对话框时,设置该控件为Report风格

扩展风格设置方面:

在OnInitDialog()函数中实现:

       m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

LVS_EX_CHECKBOXES 表示添加CheckBox

 LVS_EX_FULLROWSELECT 表示选择整行

 LVS_EX_GRIDLINES 表示添加表格线

LVS_EX_FULLROWSELECT 表示选中某行使整行高亮

更多风格请看MSDN,索引时输入LVS就可以看到很多风格设置项

 

设置完风格后,开始初始化该列表信息,比如列表头什么的,为各项添加“列”:

同样以上在OnInitDialog()函数中实现

 

上面的都是静态的,剩余的需要根据m_recordList中的数据来动态显示到CListCtrl控件中,为此,我单独写了个更新函数:

 

上面的重点是:插入行,比如:m_list.InsertItem(nIndex,pPerson->m_strName);,nIndex,就是第几行,当插入第一行之后,这一行只是会显示名字那一列数据,想要它显示性别,手机等信息的话,还需要继续设置,设置这一行的其他列:m_list.SetItemText(nIndex,i,pPerson->m_strSex) ;,这个作用就是设置第nIndex行的第i列数据。因为刚才名字已经是第0列了,所以现在设置就以1开始设置。

总的来说,CListCtrl的使用就是先设置需要什么列,然后插入行,插入的方式是以该行的第一列数据为代表插入,插入后设置其他列。

关键函数:InsertColumn()插入列,InsertItem插入行,SetItemText设置某一行的第几列数据

 

本文关键字:CArchive,CFile,CListCtrl,序列化

一个基于对话框的简单MFC程序分析 目录建立新工程程序中对象类的关系程序执行流程1.CtestApp theApp2.调用构造函数3.进入Winmain函数4.初始化总结参考博客链接 建立新工程 打开visual studio,我这里用的是2017,其他版本的创建类似 这里默认已安装MFC板块,创建名为“test”的MFC应用程序 创建基于对话框的MFC程序除了在第二个窗口中需要勾选“基于对话框”外,其余的默认即可 至此一个基于对话框的MFC程序创建完成 程序中对象类的关系 程序创建后,真正需要我们关心的,其实就两个文件,其他 阅读详情

相关推荐

【MFC】学习MFC day3 vs2019 基于对话框的MFC应用程序

【MFC】学习MFC day3 vs2019 基于对话框的MFC应用程序 上一篇 今天目标: 编写一个基于对话框的类似网页表单的MFC程序 需要一个3个界面(主界面,信息填写界面(非模态对话框),信息提交确认界面(模态对话框)) 本章源代码的GitHub链接会放在底部 主界面:显示信息汇总 信息填写界面:填写信息 信息提交确认界面:确认提交信息 模态对话框与非模态对话框 模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对

m0_46202128的博客 3464

MFC应用程序开发教程2——基于对话框编程

MFC应用程序开发教程2——基于对话框编程

weixin_50497501的博客 1686

MFC 学习之 模态对话框图片控件上作图

首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。 新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP 添加两个对话框,ID 分别设为(简写)ld 和 cd。 ld 上添加三个图片控件,并且每一个均关联一个 CSTATIC 型变量。 cd 上添加一个图片控件,操作如上。 分别为两个对话框添加类,名称自己设,我的是

落日流沙 3813

MFC对可Serialize类型的版本控制

使用MFC提供的Serialize功能对类型进行序列化/反序列化非常的方便。当软件升级后,Serialize的内容可能也会发生变化,这时,就可以使用MFC提供的版本控制功能解决反序列化因为内容不同引起的冲突了。 编写可序列化类时,MFC用IMPLEMENT_SERIAL宏指定的模式号作为版本控制的依据。反序列化时,MFC将文件中记录的模式号与应用程序中使用的模式号进行对比,如果不匹配,MFC将抛

开心果壳 2664

UG二次开发:用MFC对话框模拟UG对话框

做过UG二次开发的都知道,在UG里做二次开发的主要界面就是对话框了,UG自己定义了一套二次开发的界面接口,即所谓的UIStyler,对于我们用惯了MFC及Windows的消息机制来说,它那点简单的事件映射,仅有的几个控件(好像连常用的树控件都没有)让我们没有发挥的余地。于是使用MFC对话框代替UG的对话框是每个从MFC进入UG二次开发的人的首先想法。关于怎么在UG中使用MFC对话框已经有文章讲过了

Hendy_So的专栏 6444

基于MFC对话框的烟火粒子系统小程序

将网络上的烟花粒子系统MyFireWorkView(MFC单文档)修改为基于MFC对话框形式的,修改较粗略,但可以运行(运行环境为VS2008与OpenGL)。

用MFC做漂亮界面之美化对话框

在windows开发当中做界面的主要技术之一就是使用MFC,通常我们看到的QQ,360,暴风影音这些漂亮的界面都可以用MFC来实现。今天我们来说一下如何用MFC美化对话框,默认情况下,对话框的背景如下: 那么,我们如何将它的背景变成如下界面呢,而且还要保留对话框的移动功能,漂亮背景如下: 为了实现美化对话框背景的效果,我们需要让我们的对话框响应WM_CTLCOLOR消息,每当我们的对话

gaoyi的专栏 4万+

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3376

如何创建与使用MFC对话框工程

详细的MFC 对话窗的创建与使用介绍

everything is possible,anything is OK. 9922

PaddleOCR实战:给图片‘加个框’,轻松搞定小图和长图文字识别不准的难题

本文探讨了PaddleOCR在处理小图和长图时识别精度下降的问题,并提出通过图像边框预处理技术显著提升OCR识别效果。详细介绍了使用OpenCV实现智能边框添加的方法,包括核心原理、工程实践中的关键细节以及性能优化策略,帮助开发者轻松解决非常规尺寸图像的文本检测难题。

weixin_29313547的博客 189

刃边法计算MTF(ESF、LSF、PSF)

MTF调制传递函数 评价一个成像系统目前主流的办法主要有三种TV line检测,MTF检测,和SFR检测。 MTF是Modulation Transfer Function的英文简称,中文为调制传递函数。 是指调制度随空间频率变化的函数称为调制度传递函数。最开始是为了说明镜头的能力。 在各个摄像头镜头中经常采用MTF描述镜头的MTF曲线,表明镜头的能力。这些曲线是通过理想的测试环境...

weixin_30911451的博客 1万+

MFC中向对话框中添加菜单栏方法

在MFC中一般基于对话框的MFC界面是没有菜单栏的,基于文档视图结构的MFC界面是有菜单栏的,那么怎么在基于对话框的MFC界面中添加菜单栏。下面是基于网上的博客啥的自己整理的。**一、在资源视图中将menu加入资源视图中1、在MFC中新建一个基于对话框的MFC界面工程,打开资源视图截图如下: 里面是默认没有menu资源的。这时就需要我们手动添加menu资源了。 2、在资源视图中添加menu资

JoliceYu的技术博客 4万+

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2914

MFC用对话框获取输入

题目 在MFC调用对话框读入数据,并在客户区输出。 这是《计算机图形学基础教程》的一个习题: 使用MFC设计一个长方形类CRectangle,调用对话框读入长方形的长度和宽度,在客户区输出长方形的周长和面积。 这个书上并没有教怎么用对话框读取输入,我在这之前也完全没接触过MFC的对话框。弄了两小时,终于把这道题做出来了。以此文记录一下 参考链接 MFC调用输入对话框并返回输入信息 MFC对话...

乱世之尘 1万+

PWN-shellcode

构造一段shellcode的作用就是为了在缓冲区溢出时将shellcode的地址覆盖掉正常的返回地址。 题目: 1Ch=16+12=28,+esp=32:偏移量是32 能溢出:100-0x1c-4=68字节 C伪代码: 理论基础 函数返回步骤 : 保存返回值:函数返回值保存在EAX寄存器 弹出当前栈帧,恢复上一个栈帧 a) ESP + 当前栈帧大小:堆栈平衡基础上,降低栈顶,回收当前栈帧空间...

MuMuLee_的博客 2086

2022年全国职业院校技能大赛高职组大数据技术与应用赛项赛卷⑩—解析答案

工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑。加快发展工业互联网产业,不仅是各国顺应产业发展大势,抢占产业未来制高点的战略选择,也是我国推动制造业质量变革、效率变革和动力变革,实现高质量发展的客观要求。 为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 586

《MFC如何添加子对话框》

问题描述  当MFC应用程序的主对话框有其他功能需要,但不能显示在主对话框时,通常会通过点击一个功能按钮弹出一个字对话框来实现。最常见的就是登录界面,点击登录按钮,然后弹出一个登录对话框让你输入登录信息,输完信息之后点击立即登录按钮,对话框消失,又回到主界面。   MFC添加子对话框 1、选中项目名称,点击鼠标右键,依次选择添加、资源 2、进入到添加资源界面,选择Dia...

GodLei1995 1万+

AutoCAD中圆弧折线化方法与实现

在AutoCAD中,圆弧折线化是将圆弧曲线转换为由一系列线段组成的折线曲线的过程。本文将介绍如何使用LISP编写代码来实现圆弧折线化,并提供相应的源代码。上述示例代码将生成一个以坐标原点为圆心、起点为(5.0, 0.0, 0.0)、终点为(0.0, 5.0, 0.0)、半径为5.0、角度为90度的圆弧的折线表示。通过使用上述的LISP代码,你可以在AutoCAD中实现将圆弧转换为折线的功能。你可以根据需要修改代码中的参数来适应不同的圆弧转换需求。函数,并传入圆弧的起点、终点、圆心、半径和角度参数。

VcuOcaml的博客 1419

MFC 对话框

MFC 对话框,模态和非模态,动态创建按钮,控件访问等等

qq_61553520的博客 4106

YOLOv10 的损失函数解析

YOLOv10 在 YOLO 系列的演进中进一步优化了任务解耦与动态平衡策略,通过 ​多模态损失融合、自适应样本分配 和 ​轻量化设计,显著提升了检测精度与推理效率。

浩瀚之水的专栏 1380

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

3种MFC弹出对话框的方法

一、点击菜单按钮弹出对话框 1、在资源视图中(.rc文件夹下)找到menu,选择需要弹框的菜单项; 2、点击菜单项,修改菜单ID,在主程序中用ON_COMMAND()将ID和函数关联,要在主程序的头文件中声明被关联函数; 例: 菜单ID和函数关联 ON_COMMAND(ID_Task,&CMFCExampleView::OnCreateTask) 声明函数 afx_msg void OnCreateTask(); 3、在资源视图中(.rc文件夹下)添加Dialog,为对话框创

珞瑜的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MFC基于对话框编程

MFC基于对话框编程 目录 基于对话框编程 创建基于对话框的 MFC 应用程序框架 资源视图 类视图 模态对话框 非模态对话框 对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。 在Visual C++中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。 创建基于对话框的 MFC 应用程序框架 程序的创建过程: 选择“文件 | 新建 | 项目”菜单; 在“新建项目”对话框中,选择“ MFC 应用程序 ”,输入工...

baidu_41388533的博客 2940

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VS2017 + MFC对话框中创建子对话框

MFC实现创建多个子对话框

葵的博客 5052

MFC对话框之间传递数据

由于对MFC还不算很熟悉,这个只是写下一些基本的方法,MFC中对话框之间传递数据我分为了两种: 1.主对话框往子对话框传递数据 2.子对话框往主对话框传递数据 下面分别简述下着两种情况,对于第一种来说,子对话框肯定是在主对话框的函数中创建并显示的,同时,数据传递的前提必须是子对话框已经建立才行,否则没有对象去接收数据了,必然会报错,子对话框又分为两种:非模式对话框和模式对话框, 对于非模式

小人物专栏 1万+

MFC对话框

本篇文章不是系统的介绍MFC的对话框相关的内容。本篇的知识点会很碎,学到哪里就写到哪里。 本文参考链接: 1.mfc最详细入门教程_wang18323834864的博客-优快云博客_mfc 1> 对话框的属性 属性名称 含义 ID 对话框ID,唯一标识对话框资源 Caption 对话框标题 Border 边框类型 M.

sinat_41752325的博客 2200
上一篇: 微软一站式代码规范示例
下一篇: Win32程序设计小结
Pro_Charm
博客等级 码龄16年 5粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值