MFC
文章平均质量分 76
Lirx_Tech
这个作者很懒,什么都没留下…
展开
-
[MFC]CListView列表视图
1. 列表视图简介: 1) 最常见的列表视图案例就是Windows的资源管理器的右侧视图,就是使用列表视图来展示当前路径下的文件集合的; 2) 列表视图有两大元素,一是文本,而是图形,和树形视图一样,但是这两种元素的展示形式会根据列表视图的样式发生改变; 3) Windows支持的4中列表视图的样式: i. 小图标: i原创 2015-12-11 11:07:35 · 10288 阅读 · 1 评论 -
[MFC]PropDemo程序:属性表的应用
1. 属性表的功能和大致创建步骤: 1) 属性表是Windows提供的非常良好的性能之一,用于调节应用程序的相关参数,比如我的电脑右键后点击属性跳出的含有好几个选项卡的的对话框就是属性表; 2) 属性表在Win32 API中的实现相当琐碎,但是MFC有了主结构的支持使得其实现属性表相当容易; 3) 实现属性表的两个MFC类——CPropertySheet和CPrope原创 2015-09-10 16:28:19 · 1975 阅读 · 0 评论 -
[MFC]Phones程序:CFileDialog的应用、消息反射
1.原创 2015-09-15 17:30:29 · 898 阅读 · 0 评论 -
[MFC]公用对话框介绍、CFileDialog
1. 公用对话框: 1) 在使用Windows时有些对话框可能用得太频繁了,以至于并不是所有应用程序都愿意重复开发这些使用如此频繁的对话框,像打开文件的对话框、设置字体的对话框等等; 2) MFC为这些对话框封装了专门的类,使得用户可以非常方便地在程序中建立这样的对话框来减轻开发负担; 3) 这里列举几个非常常用的公用对话框类:CFileDialog:Open和S原创 2015-09-15 16:02:29 · 2992 阅读 · 0 评论 -
[MFC]ScrollDemo程序:CScrollView滚动视图的应用
1. CView的各种派生类: 1) MFC为了方便,还从CView派生出一些具有特殊功能的视图供程序员使用; 2) 其中最常用的有CScrollView、CListView、CTreeView、CHtmlView这四个,分别用来建立可滚动的视图、基于列表的视图、属性视图(资源管理器就是典型的一种)和浏览器视图(浏览器软件常用的一种视图); 3) 这里我们介绍CScr原创 2015-10-11 16:26:52 · 8646 阅读 · 1 评论 -
[MFC]DoDataExchange的对话框数据交换和检验
1. 对话框里控件上的数据应该如何保存? 1) 一般需要在CDialog的派生类中定义一些数据成员用来保存控件中用户输入的数据; 2) 那么最大的问题就是如何让这些定义的数据成员和控件中的数据进行及时的交流——使用SetDlgItemText和GetDlgItemText两个函数即可: i. 在OnInitDialog中使用SetDlgItemText将数据原创 2015-09-04 16:16:28 · 2345 阅读 · 1 评论 -
[MFC]在程序中访问对话框中的控件——GetDlgItem函数
1. 使用GetDlgItem函数来访问对话框中的控件: 1) 函数原型:CWnd* CWnd::GetDlgItem(int nID) const; 2) 只要参数指定为要访问的控件的ID,即可返回该控件的指针,但要注意的是返回的是CWnd*类型的指针,是所有窗口类型的父类;2. 安全地利用GetDlgItem返回的指针来访问控件: 1) 如果想访问的是原创 2015-09-06 20:51:36 · 25750 阅读 · 1 评论 -
[MFC]DlgDemo1程序:基本的模态对话框
1. 接下来所演示的DlgDemo1程序将演示基本的模态对话框的使用: 1) 该程序是基于视图的MFC程序; 2) 视图左上角将显示一个粉红色的矩形; 3) 菜单“文件”中有一个Options菜单项,点击后可以打开一个对话框; 4) 对话框中可以输入想设定的矩形的宽和高(范围必须在1 ~ 128内); 5) 还可以选择显示模式(英寸、厘米、像素,是原创 2015-09-09 15:40:12 · 1255 阅读 · 0 评论 -
[MFC]CDialog类简介、创建模态对话框
1. CDialog类的基本使用方法: 1) 在创建自己的对话框之前必须先从CDialog类派生出自己的类,并在派生类中定义一些自己的数据域以及其它新的函数; 2) CDialog中继承来的最重要的三个函数都是消息响应函数:OnInitDialog、OnOK、OnCancel函数 i. OnInitDialog相应的WM_INITDIALOG消息,该函原创 2015-09-02 16:27:56 · 4758 阅读 · 0 评论 -
[MFC]对话框创建的基本步骤、定义对话框模板
1. 对话框的基本功能: 1) 对话框是一种特殊的窗口,主要用于响应用户的输入,大部分空间都应放在对话框中; 2) 对话框的创建比普通窗口简单的多,可以直接在资源脚本.rc文件中通过脚本定义; 3) 模态对话框和无模态对话框: i. 模态对话框其实是应用程序的一种表达,即“如果您不提供我需要的输入的话那你无法做其它任何事”; i原创 2015-09-01 21:26:37 · 4798 阅读 · 0 评论 -
[MFC]DlgDemo2程序:非模态对话框的基本应用
1. 非模态对话框的创建方法以及和模态对话框的不同之处: 1) 首先是创建非模态对话框使用的是CDialog::Create而不是CDialog::DoModal; 2) 那么最大的问题就来了,Create是从CWnd继承而来的用来创建普通窗口用的函数,这就导致了关闭对话框时和模态对话框的大不相同!! 3) 由于使用Create创建对话框窗口了,因此关闭它就也要和关闭原创 2015-09-09 18:24:13 · 1510 阅读 · 0 评论 -
[MFC]Squres程序:单文档界面演示
1. 接下来将展示Squres应用程序来说明单文档界面程序的编写: 1) 视图用来显示一个4×4的网格,初始化时每个网格都是白色的(即新建文档时); 2) 菜单栏中有一个Color子菜单,可以选择当前要填充的颜色,总共共有6中,而初始时默认将红色作为当前填充色; 3) 可以用鼠标点击网格中的格子,之后会用当前选中的填充色来填充选中的格子; 4) 程序文档的后原创 2015-10-11 14:29:48 · 1318 阅读 · 0 评论 -
[MFC]DriveTree应用:CTreeView的示例
1. 使用WIN32 API来检索系统的硬盘驱动并遍历文件系统: 1) 对于涉及硬盘、文件遍历的操作MFC并没有提供封装好的类,只能通过WIN32 API来进行; 2) 获取计算机的硬盘驱动列表: i. DWORD ::GetLogicalDrive(VOID); ii. 返回的硬盘驱动列表就保存在一个DWORD中,位0表示驱动器A是否存原创 2015-10-28 11:32:37 · 1980 阅读 · 0 评论 -
[MFC]CTreeView树形视图、CTreeCtrl树形控件
1. 树形控件和树形视图: 1) 树形控件在Microsoft Windows95中就已经引入,如文件资源管理器中的树形文件列表就是使用树形控件实现的,这是树形控件最常见的应用; 2) 树形视图就是将整个树形控件作为视图模板的视图,就和之前做过的Phones列表视图一样,直接将CXXXView继承自CTreeCtrl即可; 3) 我们看到的资源管理器的左侧其实就是一个原创 2015-10-21 11:12:38 · 10808 阅读 · 2 评论 -
[MFC]利用Win32 API遍历文件系统
1. 遍历文件系统所需的工具: 1) MFC的CFile并没有对遍历文件系统的功能进行面向对象包装,因此遍历文件系统必须使用较为原始、底层的Win32 API; 2) 大致步骤是: i. 使用::SetCurrentDirectory函数设定当前处于什么目录下(Windows中叫做文件夹); ii. 使用::FindFirstFile获取原创 2015-07-09 16:49:48 · 1015 阅读 · 0 评论 -
[MFC]CView视图类、CMainFrame主框架类
1. 视图对象简介以及视图对象何如使用文档来操作数据: 1) 视图的两个重要用途: i. 鉴于文档的唯一任务就是管理应用程序的数据,那么视图的一个重要用途就是提供文档的可视化表示; ii. 其次就是将用户输入(鼠标、键盘)转换为操作文档数据的命令,这样文档和视图就紧密联系在一起了,实现了信息的双向传递; 2) 一个文档可以具有与之联系的多原创 2015-09-22 20:09:53 · 3975 阅读 · 0 评论 -
[MFC]文档视图体系结构、单文档界面
1. 文档视图结构: 1) 是MFC的一种模块化设计思想的产物,要求程序的数据和表现数据的视图分开来处理; 2) 数据以文档的形式表现,文档可以存储在磁盘中永久保存也可以被程序读出并进行处理; 3) 单文档(SDI,Single Document Interface)和多文档(Multiple Document Interface)的区别:单文档界面程序只支持打开一个原创 2015-09-20 20:25:03 · 3232 阅读 · 0 评论 -
[MFC]文档/视图结构的命令传送和预定义命令ID(包括命令处理程序)
1. 命令与命令分散处理: 1) 命令在MFC中就是指各种基于WM_COMMAND消息(也包括UPDATE_COMMAND_UI等); 2) 可以触发命令消息的元素有很多,并且可以分布在不同类中(不同地点,不同组件),例如菜单项、工具栏按钮等; 3) 虽然命令触发的元素分散在各个地方,但是Windows只允许主框架(CFrameWnd)来接受命令,这就意味着貌似只有主原创 2015-09-23 15:58:50 · 1291 阅读 · 0 评论 -
[MFC]CDocument文档类简介
1. 文档的基本功能: 1) 文档就是程序数据的一种抽象表示,可以表示数据库连接资源、文本文字等任何形式的数据; 2) 文档对象主要为视图提供公用成员函数,使其可以访问文档的数据,但所有的数据处理都由文档对象自己完成;2. 文档类的主要操作: 1) 操作和可覆盖函数:在MFC文献中,操作被描述为非虚拟类的成员函数,而可覆盖函数即虚函数; 2) c原创 2015-09-22 20:06:16 · 4678 阅读 · 0 评论 -
[MFC]文档字符串、HKEY_CLASSES_ROOT注册表、.reg注册表文件
1. 文档字符串的定义: 1) 也是LoadFrame可以加载的第四种资源(图标、菜单、加速键之外的第四种资源); 2) 定义方式例如:STRINGTABLE PRELOAD DISCARDABLE BEGIN IDR_MAINFRAME "SdiSquares\n\nSdiSqu\nSdiSqu Files (*.sqr)\n.sqr\nSd原创 2015-09-23 11:25:39 · 2648 阅读 · 0 评论 -
[MFC]动态对象创建、文档模板加载.rc资源
1.原创 2015-09-23 10:15:58 · 1506 阅读 · 0 评论 -
[MFC]CStatic静态控件类
1. 静态控件的作用以及创建: 1) 静态控件一般只用来标记其它控件,有文本、矩形和图像三大类; 2) 创建静态控件还是使用Create函数; 3) 不管哪种类型的控件,Create的时候WS_CHILD和WS_VISIBLE都不可少;2. 文本静态控件: 1) 其可选的dwStyle样式有:都以SS_开头,即Static Style的缩写S原创 2015-07-24 13:52:40 · 2220 阅读 · 0 评论 -
[MFC]CListBox列表框类
1. 列表框控件简单介绍: 1) 也是传统控件的一种; 2) 其显示了包含叫做项的文本字符串列表,注意和下拉列表框(Combo Box)相区别,列表框中的项是永远显示出来的,而下拉列表框必须要点击下拉按钮,项才会显示出来,即列表框就是下拉列表框一直下拉出来的效果; 3) 列表框可以选择性地(并不是强制性地将其中的项目分类),还具有滚动功能,使列表框中可以显示的项目数量原创 2015-07-22 13:37:36 · 7630 阅读 · 0 评论 -
[MFC]传统控件介绍、CButton按钮类
1. 控件的概念: 1) 控件是一类特殊的窗口,如按钮、文本框之类的,用来将信息传送给用户或获取用户的输入; 2) 控件都是一些高度封装好的对象,有自己的WM_PAINT处理代码,不必用户自己去重绘控件; 3) 控件的消息机制:当点击控件等操作发生时,用户不用具体去处理这些鼠标消息,MFC会处理这些最基本的控件上的消息并将其转化为“通知”(Notify),比如点击按钮原创 2015-07-21 18:01:45 · 7150 阅读 · 0 评论 -
[MFC]Shapes程序(4):菜单项的加速键、MFC注释宏
1. 加速键的作用:之前已经讲过了,就是比快捷键还快的按法,一般快捷键需要Alt+顶层菜单项的字母键+子菜单中菜单项的字母键,如果子菜单还有层叠子菜单,则还要再加一个层叠子菜单中菜单项的字母键,而加速键MFC规定,最多只能定义两个键组合,比如Ctrl+N之类的;2. 编写加速键资源: 1) 加速键也是一种资源,也需要用.rc脚本来定义,加载方式和菜单资源差不多; 2原创 2015-06-09 20:33:42 · 1482 阅读 · 0 评论 -
[MFC]Shapes程序(3):响应菜单命令、菜单项的跟新
1. 菜单项被击中的消息: 1) 一般关于菜单项产生最平凡的几个消息莫过于WM_INITMENU、WM_INITMENUPOPUP、WM_MENUSELECT这三个消息; 2) WM_INITMENU在顶层菜单项被击中时产生,通知应用程序用户已击中一个顶层菜单项,要做好准备了; 3) WM_INITMENUPOPUP消息会在顶层菜单项被击中后、子菜单被下拉之前产生,你原创 2015-06-09 14:48:15 · 1477 阅读 · 0 评论 -
[MFC]匈牙利标记法、MFC基本结构
1. 常用匈牙利标记法小结:变量名前缀: 数据类型b: BOOLc/ch: 字符(可以是char也可以是wchar_t)clr: COLOREFcx, cy: 水平和垂直距离dw: DWORDh: handlel: 长整型n: 整型p: pointersz: 以零结尾的字符串(string end with zero)w: wordstr: CS原创 2015-05-18 12:58:36 · 1363 阅读 · 0 评论 -
[MFC]Shapes程序(2):菜单资源
1. 资源文件、资源脚本和资源编译器: 1) 资源文件是指程序中用到的菜单、图标、位图和字符串等,这些资源文件一般在AppWizard的作用下自动生成在res目录下; 2) 资源文件的后缀通常为.ico(图标)、.rc2(菜单、字符串等),都是二进制对象,程序运行时将被链接到程序的.exe文件,在执行时被显示在程序界面中; 3) 编译资源脚本:起始这些资源文件是通过编原创 2015-06-07 13:39:28 · 1125 阅读 · 0 评论 -
[MFC]Shapes程序(1):框架和视图
!!接下来我们将通过一个较长的程序示例Shapes来学习菜单的相关知识;1. 使用MFC AppWizard[exe]来创建一个代码框架: 1) 使用VC6.0创建; 2) 新建项目,选择MFC AppWizard[exe],工程名为“Shapes”,然后点击“OK”; 3) 选择"Single docment“并取消选中"Document/View ar原创 2015-06-06 14:42:07 · 1488 阅读 · 0 评论 -
[MFC]程序示例:三子棋游戏
1. 游戏功能简介: 1) 3×3棋盘,9宫格,每格可放一个棋子; 2) 鼠标左键落X右键落O,保证X和O轮流出现防止作弊,并且设定X为先手; 3) 棋盘是井字形的框,鼠标双击井字框将重置棋局; 4) 水平、垂直或对角线3连线即赢得棋局;2. TicTac.h:// TicTac.hclass CMyApp: public CWinApp原创 2015-06-03 20:18:23 · 2458 阅读 · 0 评论 -
[MFC]鼠标消息处理
1. 鼠标事件和鼠标消息: 1) 鼠标和光标的区别:鼠标是指实体鼠标,而光标就是鼠标在屏幕上的表示,因此在编程中通常称为光标; 2) 鼠标事件:Windows中分为是三种,按下或释放鼠标、双击鼠标、移动鼠标; 3) 上述三种鼠标实际那将触发鼠标消息,而鼠标消息分为两类,一类是客户区鼠标消息,另一类是非客户区鼠标消息,一般非客户区鼠标消息直接交由DefWindowPro原创 2015-06-01 11:58:05 · 4659 阅读 · 0 评论 -
[MFC]设备环境CDC类及其派生
1. MFC对GDI的封装——CDC类: 1) Graphical Device Interface:即图形设备接口,是一种编程接口,用以简单地通过函数调用来控制实际的物理图形设备的行为; 2) Windows实现了GDI与图形平台无关的特性,即对于不同显示器、显卡、打印机的操作都可采用同样的GDI来实现; 3) MFC将过去Win32的GDI进行了面向对象封装,并且原创 2015-05-19 13:43:26 · 1204 阅读 · 0 评论 -
[MFC]画线
1. CDC类的画线函数: 1) CDC的画线函数大致可以分为三类,一类是画直线和曲线,一类是画矩形等多边形,另一类是画圆、椭圆以及弧线等; 2) 使用CDC画线时有个非常重要的概念,就是当前绘图点,是一个客户区中的像素点,很多画线函数默认的起始画线点都是当前绘图点,用户可以通过相关函数设定当前绘图点的位置; 3) 画线函数命名时的后缀“To”,凡是带后缀“To”的函原创 2015-05-30 14:06:03 · 5967 阅读 · 0 评论 -
[MFC]设备描述表属性、绘图模式
1. 设备描述表的属性: 1) 其实就是CDC结构中的一些字段,这些字段会影响GDI画图时的一些表现; 2) 通常这些表现在使用具体的画图函数时无法设置,比如DrawText画字时字的颜色、LineTo画点划线时点和线段之间的填充颜色等,这些属性无法通过具体的画图函数来指定; 3) 以上谈到的这些属性都属于DC本身的全局性的属性,想要设定必须通过CDC的Set系列等函原创 2015-07-08 11:55:23 · 985 阅读 · 0 评论 -
[MFC]CFile类实现低级文件I/O
1. CFile类简介: 1) CFile封装了操作系统对文件读写的相关操作API,是MFC中一种较为低级的I/O操作手段,MFC常用CArchive类对数据进行串行化写入读出磁盘; 2) CFile的几个基本的数据成员: i. UINT m_hFile:即和CFile相关联的文件的句柄,实为文件描述符,是一个UINT型的值; ii. C原创 2015-07-08 21:00:59 · 1377 阅读 · 0 评论 -
[MFC]UDP通信的简单实现
1. UDP和TCP最大的区别: 1) TCP最大的特点就是面向连接、安全可靠,也就是说TCP通信必须要先建立连接,并且通信过程需要时时校验,如果数据有误需要重发; 2) UDP最大的特点就是面向无连接,不可靠,也就是说不用建立连接就直接向目标发送信息,并且通信过程中不做任何校验,如果数据丢失或者有误也不管; 3) 听上去UDP非常的无用,但其实不然,UDP最大原创 2015-07-21 15:00:56 · 12078 阅读 · 1 评论 -
[MFC]Colors程序(2):层叠菜单、上下文菜单
1. 层叠菜单: 1) 这在Windows中很常见,那就是打开一个菜单有时一个菜单,一层一层可以打开好多个; 2) 定义层叠菜单很方便,只要在资源脚本中的POPUP中不停嵌入POPUP即可,里面的MENUITEM还是按照原来的方式定义,非常方便,其余的一些细致工作Windows都会替你代劳: i. 层叠子菜单名字旁边绘画一个箭头; ii.原创 2015-07-14 17:37:41 · 1705 阅读 · 0 评论 -
[MFC]Socket基础——以TCP为例
1. Socket套接字的概念: 1) 套接字这个名称的背景: i. 拿最早的电话机来讲,刚有电话的时候如果想拨通另一端的电话,需要电话公司将两个电话所对应的插头插入两个线路互通的插孔中,而套接字就是这种插孔了; ii. 套接字其实应该叫“套字接”,即理解为“包着字节的接口”,由于计算机互联的协议都是字型协议(即字节、字的那种字),而应用程序只要插原创 2015-07-19 15:18:13 · 5057 阅读 · 0 评论 -
[MFC]TCP通信的简单实现
!!以下演示的是一个使用TCP协议的客户端和服务器端实现(即流式套接字),客户端请求连接,服务器端回送给客户端一句话;1. 服务器端:#include #include #include #pragma comment(lib, "WS2_32.lib") // 如果没有ws2_32.dll则显示链接静态库!!int main() { static const ch原创 2015-07-20 22:47:10 · 6769 阅读 · 4 评论 -
[MFC]映射模式、坐标转换、原点移动
1. 映射模式的概念: 1) 也是DC的重要属性之一,它和绘图时的尺寸有关; 2) 在没有映射模式的时候绘图只能以像素点为单位长度进行绘图,但是这样做有一个明显的坏处就是,不同显示器分辨率、屏幕大小各不相同,在一个屏幕上画1000像素长的线很长,同样像素点的长度换到另一个屏幕上看上去却可能很短,这无法达到不同屏幕绘制的图形效果相同的目的,因此要引入映射模式这个功能来解决上述问题原创 2015-07-08 13:11:45 · 5377 阅读 · 0 评论