mfc
开心罗
每天一小步
展开
-
std::min&std::max与mfc冲突问题
这个问题非常讨厌,时不时会冒出来。综合了网上的多种解决方法,总结了一下。在项目的 stdafx.h 文件中,确保包含自己写的头文件行放在文件尾部。然后在开头处加上三行,就好了。例子如下:// 需要加上以下三行#define NOMINMAX#undef max#undef min// 从这里开始就可以使用 std::min和std::max了#include "my原创 2015-10-11 17:09:24 · 788 阅读 · 0 评论 -
鸡啄米vc++2010系列46(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
一、为Ribbon Bar添加更多Ribbon控件 鸡啄米将在上一节实例的基础上,继续添加下拉菜单、Check Box、Combo Box等Ribbon控件。 1、首先把“Small Button”面板上的“Click”按钮改造成一个下拉菜单。“Click”按钮有一个Behavior属性Menu Items,默认为Empty,选中它右侧会出现一个浏览按钮,点转载 2015-05-22 15:31:07 · 1078 阅读 · 0 评论 -
鸡啄米vc++2010系列42(MFC常用类:CTime类和CTimeSpan类)
上一节中鸡啄米讲了MFC常用类CString类的用法,本节继续讲另外两个MFC常用类-日期和时间类CTime类和CTimeSpan类。 日期和时间类简介 CTime类的对象表示的时间是基于格林威治标准时间(GMT)的。CTimeSpan类的对象表示的是时间间隔。 CTime类和CTimeSpan类一般不会被继承使用。两者对象的大小都是8个转载 2015-05-22 09:44:24 · 659 阅读 · 0 评论 -
鸡啄米vc++2010系列43(MFC常用类:定时器Timer)
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器。定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后讲解。 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务。在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处转载 2015-05-22 09:56:41 · 970 阅读 · 0 评论 -
鸡啄米vc++2010系列41(MFC常用类:CString类)
上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类。 CString类简介 CString类作为MFC的常用类,当之无愧。可以这样说,只要是从事MFC开发,基本都会遇到使用CString类的场合。因为字符串的使用比较普遍,而CString类又提供了对字符串的便捷操作,所以它给MFC开发人员带来了高的开发效率,受到了开转载 2015-05-22 09:33:34 · 664 阅读 · 0 评论 -
鸡啄米vc++2010系列24(组合框控件Combo Box)
组合框控件简介 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直显示的,效果如下图: 下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框,列表转载 2015-05-18 15:04:35 · 1019 阅读 · 0 评论 -
鸡啄米vc++2010系列21(按钮控件Button、Radio Button和Check Box)
按钮控件简介 按钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选框(Check Box)等。命令按钮就是我们前面多次提到的狭义的按钮控件,用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌入位图。单选按钮使用时,一般是多个组成一组,组中每个单选按钮的选中状态具有互斥关系,即同组的单选按钮只能有一个被选中。 命令按转载 2015-05-18 10:58:04 · 1046 阅读 · 0 评论 -
鸡啄米vc++2010系列23(列表框控件ListBox)
列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一次只能选择一个列表项,而多选列表框可以同时选择多个列表项。 列表框也会向父窗口发送通知消息。这些通知消息及含义如下: LBN_DBLCLK :用户用鼠标双击了一列表项,只有具有LBS_转载 2015-05-18 13:37:24 · 1491 阅读 · 0 评论 -
鸡啄米vc++2010系列22(常用控件:按钮控件的编程实例)
因为Button控件在前面的例子中涉及到了,比较简单,本文就不作深入分析了,而是重点讲解单选按钮Radio Button、复选框Check Box的使用。 按钮控件实例的功能 首先介绍此实例实现的功能。此实例用来根据网站类型选择网站,并将选择的网站的名称显示到编辑框中。网站类型有“门户”、“论坛”和“博客”三种,为单选按钮。网站有六个:鸡啄米、新浪、天涯论坛转载 2015-05-18 12:53:36 · 1003 阅读 · 0 评论 -
鸡啄米vc++2010系列25(滚动条控件Scroll Bar)
滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。前面讲的列表框和组合框设置了相应属性后,如果列表项显示不下也会出现滚动条。滚动条分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。滚动条中有一个滚动块,用于标识滚动条当前滚动的位置。我们可以拖动滚动块,也可以用鼠标点击滚动条某一位置转载 2015-05-18 15:29:21 · 1456 阅读 · 0 评论 -
鸡啄米vc++2010系列40(文档、视图和框架:分割窗口)
分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图。 MFC分割窗口的方式有两种,动态分割和静态分割。 动态分割窗口通常用于创建同一个文档对应的多个视图,而且这些视图一般都是同一类型的视图,能够在用户编辑文档的不同部分时提供方便。 大家看下转载 2015-05-21 11:44:41 · 598 阅读 · 0 评论 -
鸡啄米vc++2010系列38(文档、视图和框架:概述)
文档、视图和框架简介 在VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)创建的单文档工程Example34中,我们可以看到MFC向导自动为我们生成了CExample34Doc类、CExample34View类和CMainFrame类,它们就分别是文档类、视图类和框架窗口类。 文档/视图结构是MFC提供的一种不错的设计,它将数据的处理和显转载 2015-05-21 11:04:22 · 585 阅读 · 0 评论 -
鸡啄米vc++2010系列39(文档、视图和框架:各对象之间的关系)
各个对象之间的关系 文档、视图、框架结构中涉及到的对象主要有:应用程序对象、文档模板对象、文档对象、视图对象和框架窗口对象等。根据上一节的概述,大家对它们的概念已经有所了解了,下面就对它们之间的关系进行总结和概括,并对各个关系中用到的类的成员函数进行介绍。 1. 应用程序对象保存了一个文档模板的列表。在任何对象中调用全局函数AfxGetApp都可以获得应用程转载 2015-05-21 11:28:16 · 433 阅读 · 0 评论 -
dll动态链接库入门2
1、一个简单的DLL 上一节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。 如图1,在VC++中new一个Win32 Dynamic-Link Library工程dllTest。注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是后面要讲述的MFC动态链接库。转载 2015-05-22 16:05:28 · 461 阅读 · 0 评论 -
鸡啄米vc++2010系列45(Ribbon界面开发:为Ribbon Bar添加控件)
VS2010为Ribbon界面开发提供了Ribbon Designer,通过它我们可以为Ribbon Bar添加各种Ribbon控件、设置控件属性和进行界面布局。 Ribbon的界面元素可以分为类别、面板和基本控件(按钮、文本编辑框等),类别由面板组成,面板又由按钮、文本编辑框等基本控件组成。 鸡啄米以实例的方式讲解Ribbon控件的添加方法和属性,这样比较转载 2015-05-22 15:30:01 · 797 阅读 · 0 评论 -
mfc operator new”: 没有重载函数接受 3 个参数
在debug模式下,mfc程序中使用标准库或者第三方库较容易出现这方面的问题。解决方法主要有两种,1、将对应的cpp文件中的#ifdef _DEBUG#define new DEBUG_NEW#endif注释掉2、在new前添加全局作用域::原创 2015-10-23 19:19:29 · 3525 阅读 · 0 评论 -
MFC多字符集
在vs2013 MFC中默认不支持多字符节,可以安装插件来解决。下载地址为:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=40770原创 2015-10-10 13:40:43 · 466 阅读 · 0 评论 -
MFC中CString,string,char*之间的转换
这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。图示指出三者之间的关系,并以标号对应转换的方法。1 stri原创 2015-10-10 13:30:08 · 720 阅读 · 0 评论 -
mfc路径层
转自:http://blog.csdn.net/sergery/article/details/9241521路径层 CDC::BeginPath,BeginPath 如何在Device Context中建立了一个路径层: 1)即调用BeginPath() 2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域 3)调用EndPat转载 2015-10-10 13:25:12 · 521 阅读 · 0 评论 -
MFC消除视图闪烁
1,加入类MemDC.h(我的文档\Resources\Skill_vc\Memdc.h)2,OnDraw中 CMemDC MemDC(pDC); 并将绘制部分的pDC更换为MemDC3,OnEraseBkgnd中 return TRUE; 直接返回真值注: 更改背景颜色重载 虚拟函数 OnPrepareDC, pDC ->SetBk原创 2015-10-10 13:38:48 · 867 阅读 · 0 评论 -
鸡啄米vc++2010系列29(树形控件Tree Control 上)
树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的窗口中就有用来显示目录的树形视图。树形视图中以分层结构显示数据,每层的缩进不同,层次越低缩进越多。树形控件的节点一般都由标签和图标两部分组成,图标用来抽象的描述数据,能够使树形控件的层次关系更加清晰。 树形控件在插入新的树节点时会稍麻烦些,回顾之前的列表框,插入新列表项时调用AddS转载 2015-05-19 15:35:41 · 742 阅读 · 0 评论 -
鸡啄米vc++2010系列28(列表视图控件List Control 下)
上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义。本节继续讲解下半部分,包括列表视图控件的创建、CListCtrl类的主要成员函数和CListCtrl类应用实例。 列表视图控件的创建 MFC同样为列表视图控件的操作提供了CListCtrl类。 如果我们不想在对话框模板中转载 2015-05-19 15:13:01 · 835 阅读 · 0 评论 -
鸡啄米vc++2010系列27(图片控件Picture Control)
本节主要讲一种简单实用的控件,图片控件Picture Control。我们可以在界面某个位置放入图片控件,显示图片以美化界面。 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。 图片控件静态和动态加载图片转载 2015-05-19 14:11:08 · 1219 阅读 · 0 评论 -
鸡啄米vc++2010系列27(列表视图控件List Control 上)
列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁、直观,在实际应用中能为用户带来方便。 列表视图控件是对前面讲到的列表框控件List Box的改进和延伸。列表视图控件的列表项一般有图标(Icon)和标签(Label)两部分。图标是对列表项的图形描述,标签是文字描述。当然列转载 2015-05-19 14:29:58 · 1092 阅读 · 0 评论 -
鸡啄米vc++2010系列30(树形控件Tree Control 下)
前面一节讲了树形控件Tree Control的简介、通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建、CTreeCtrl类的主要成员函数和应用实例。 树形控件的创建 MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控转载 2015-05-19 15:46:40 · 929 阅读 · 0 评论 -
鸡啄米vc++2010系列44(Ribbon界面开发:创建Ribbon样式的应用程序框架)
Ribbon界面就是微软从Office2007开始引入的一种为了使应用程序的功能更加易于发现和使用、减少了点击鼠标的次数的新型界面,从实际效果来看,不仅外观漂亮,而且功能直观,用户操作简洁方便。 鸡啄米将以图文结合的方式来说明利用MFC向导创建Ribbon样式的单文档应用程序框架的过程,其实Ribbon应用程序框架的创建有很多地方与普通单文档应用程序类似,所以如果有些步骤的选项转载 2015-05-22 15:28:07 · 904 阅读 · 0 评论 -
dll动态链接库编程入门1
比较大的应用程序都是由很多模块组成的,这些模块彼此协作,以完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其他软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE 文件中,会产生一些问题。一是增加了应用程序的大小,这样会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另外,在编写大的EXE 程序时,每次修改重建时都转载 2015-05-22 16:03:13 · 397 阅读 · 0 评论 -
mfc多视图的创建
该部分基础在理解mfc应用程序框架的基础上。通过窗口的分割可以得到多视图,但是在实际应用中更多的是以多文档的形式生成多视图程序的。多视图程序主要分为单一文档模板对应文档的多视图显示和多文档模板对应的文档的视图显示。下面以程序的形式展示:例1:单文档模板对应多视图新建项目Example1,当执行“窗口”|“斜体窗口”菜单命令时重新打开一个窗口 1、利用mfc向导创建多视原创 2015-05-14 17:28:08 · 849 阅读 · 0 评论 -
鸡啄米vc++2010系列34(菜单及CMenu类的使用)
鸡啄米在上一节中讲的是VS2010的菜单资源,本节主要讲菜单及CMenu类的使用。 CMenu类的主要成员函数 MFC为菜单的操作提供了CMenu类,下面鸡啄米就常用的几个成员函数进行简单的介绍。 BOOL LoadMenu(UINT nIDResource); 加载菜单资源,并将其附加到CMenu对象上。参数nIDR转载 2015-05-20 15:10:28 · 1048 阅读 · 0 评论 -
鸡啄米vc++2010系列14(一般属性页对话框的创建)
属性页对话框包括向导对话框和一般属性页对话框两类,上一节鸡啄米讲了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示。 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的。鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框。 一般属性页对话框的创建步骤: 1.创建属性页对话框资源转载 2015-05-13 15:07:51 · 525 阅读 · 0 评论 -
鸡啄米vc++2010系列12(属性页对话框)
前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框。另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将《VC++/MFC编程入门》改为《VS2010/MFC编程入门》。 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对转载 2015-05-13 11:13:18 · 789 阅读 · 0 评论 -
鸡啄米vc++2010系列2(项目文件分析)
用应用程序向导生成框架程序后,我们可以在之前设置的Location下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件夹,创建工程时的选项不同,工程文件夹下的文件可能也会有所不同。 如果已经以Debug方式编译链接过程序,则会在解决方案文件夹下和工程子文件夹下各有一个名为“Debug”的文件夹,而转载 2015-05-12 13:14:13 · 749 阅读 · 0 评论 -
鸡啄米vc++2010系列10(模态对话框及其弹出过程)
加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。趁热打铁,鸡啄米这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。 一.模态对话框和非模态对话框 Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不转载 2015-05-12 20:33:42 · 785 阅读 · 0 评论 -
鸡啄米vc++2010系列9(对话框控件的Tab顺序)
前面几节鸡啄米为大家演示了加法计算器程序完整的编写过程,本节主要讲对话框上控件的Tab顺序如何调整。 上一讲为“计算”按钮添加了消息处理函数后,加法计算器已经能够进行浮点数的加法运算。但是还有个遗留的小问题,就是对话框控件的Tab顺序问题。 运行加法计算器程序,显示对话框后不进行任何操作,直接按回车,可以看到对话框退出了。这是因为“退出”按钮是Tab顺序为1转载 2015-05-12 20:23:39 · 547 阅读 · 0 评论 -
鸡啄米vc++2010系列7(对话框:创建对话框类和添加控件变量)
前两讲中鸡啄米为大家讲解了如何创建对话框资源。创建好对话框资源后要做的就是生成对话框类了。鸡啄米再声明下,生成对话框类主要包括新建对话框类、添加控件变量和控件的消息处理函数等。 因为鸡啄米给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生转载 2015-05-12 15:48:39 · 1723 阅读 · 0 评论 -
鸡啄米vc++2010系列8(对话框:为控件添加消息处理函数)
创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。 MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。转载 2015-05-12 15:50:37 · 798 阅读 · 0 评论 -
鸡啄米vc++2010系列3(MFC应用程序框架分析)
MFC应用程序框架分析 一.SDK应用程序与MFC应用程序运行过程的对比 程序运行都要有入口函数,在之前的C++教程中都是main函数,而Windows应用程序的入口函数是WinMain函数,MFC程序也是从WinMain函数开始的。下面鸡啄米就给出用Windows SDK写的“HelloWorld”程序,与应用程序框架进行对比,这样能更好的了解框架是怎样运行的转载 2015-05-12 13:15:24 · 949 阅读 · 0 评论 -
鸡啄米vc++2010系列6(对话框添加控件)
创建对话框资源需要创建对话框模板、修改对话框属性、为对话框添加各种控件等步骤,前面一讲中鸡啄米已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件。 上一讲中鸡啄米创建了一个名为“Addition”的工程,目的是生成一个实现加法运算的应用程序。实现加法计算有几个必要的因素:被加数、加数、和。被加数和加数需要输入,和需要输出显示。那么这几个因素都需要相应的控件来转载 2015-05-12 15:39:10 · 908 阅读 · 0 评论 -
鸡啄米vc++2010系列5( 对话框:创建对话框模板和修改对话框属性)
鸡啄米在上一讲中介绍了MFC的消息映射机制,属于原理方面的知识。对于VC++编程入门学习者来说可能有些抽象,鸡啄米会把消息映射的知识渗透到后面的教程中。本节开始为大家讲解偏应用的知识-创建对话框。 对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。转载 2015-05-12 15:06:31 · 644 阅读 · 0 评论 -
鸡啄米vc++2010系列4(消息机制)
前面已经说过,Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。 什么是消息 窗口消息一般由三个部分组成:1.一个无符号整数,是消息值;(2)消息附带的WPARAM类型的参数;(3)转载 2015-05-12 13:58:34 · 628 阅读 · 0 评论