
MFC
Jimmy1224
这个作者很懒,什么都没留下…
展开
-
实现可串行化类的步骤
步骤我们知道CArchive类可以支持基本类型的串行化,还可以支持派生于CObject类的派生类,想要这个派生类支持可串行化,需要如下步骤即可:(1) 从CObject类派生或者从CObject类派生的某个派生类(2) 重写Serialize成员函数,把类的数据成员写入文件。(3) 在类声明中使用“DECLARE_SERIAL”宏(4) 定义不带参数的构造函数原创 2017-02-18 21:23:30 · 1977 阅读 · 0 评论 -
动态修改CMFCMenuBar及CMFCToolBar的文字及Prompt,ToolTip文字
1. 修改CMFCMenuBar菜单项的文字,分两种. A. 修改顶层有POP_UP属性的菜单文字,即类型单文档中的" 文件" ,"编辑","视图"等这类一直显示着的. 因为CMFCMenuBar基类是CMFCToolBar,所以有有如下代码: (特别注意: 在单文档中,此函数一定要在主窗口ShowWindow之后调用)[cpp] view转载 2017-02-20 22:53:06 · 1387 阅读 · 0 评论 -
利用MFC Document/View框架完成图形显示和保存功能
Document/View结构首先总结下MFC的Document/View结构相关的知识点:(1)在MFC中,文档类负责管理数据,提供保存和加载数据的功能;视类负责数据的显示,以及提供给用户对数据编辑和修改功能。(2)有关文件的读写操作在CDocument的Serialize函数中进行,有关数据和图形显示的操作在CView的OnDraw函数中进行,相关的函数都是虚函数,我们只需原创 2017-02-19 16:18:57 · 3356 阅读 · 4 评论 -
MFC的Document和View类之间访问
转自http://blog.youkuaiyun.com/qiangxyz/article/details/5836254 获得CWinApp获得CMainFrame获得CChildFrame获得CDocument获得CView在CWinApp中 AfxGetMainWnd()m转载 2017-02-19 14:40:28 · 1156 阅读 · 0 评论 -
《深入浅出MFC》– Document-View深入探讨
1.其实Document/View不是什么新东西,Xerox PARC实验室是这种观念的滥觞。它是Smalltalk环境中的关键性部分,在那里它被称为Model-View-Controller(MVC)。其中的Model就是MFC的Document,而Controller相当于MFC的Document Template。 2.Document在MFC的CDocument里头被实例化转载 2017-02-19 14:28:08 · 724 阅读 · 0 评论 -
MFC实现文件打开和保存功能实现
在大多数软件中,都有“打开”和“保存”这两个功能,以“记事本为打开功能”为例,其打开对话画框的界面如下:其保存对画框,与打开对话框界面基本一样,下面也给程序增加这样的对话框,我们可以使用MFC提供的CFileDialog类来完成;CFileDialg类CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致原创 2017-02-05 21:11:38 · 37083 阅读 · 0 评论 -
CFile文件操作示例
简单介绍CFile是MFC文件类的基类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。CFile与CArchive类共同使用,支持MFC对象的串行化。该类有三种常见的构造函数,其中一种声明形式如下:CFile(LPCTSTR lpszFileName,UINT nOpenFlags);参数: lpszFileName是指定的原创 2017-02-05 15:58:50 · 4163 阅读 · 0 评论 -
对CloseHandle用法的理解
很多程序在创建线程都这样写的:。。。ThreadHandle = CreateThread(NULL,0,.....);CloseHandle(ThreadHandle );。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?================================================Closing a thread han转载 2017-01-08 20:29:37 · 2790 阅读 · 0 评论 -
CDC、HDC、pDC之间的关系
1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd?pDC是类指针HDC是windows句柄通过pDC获得hdc:HDC hdc=pDC->GetSafeHdc();通过hdc获得pDC:CDC *pDC=new CDC;pDC->Attach(hdc);2.hDC和CDC有本质区别HDC是WINDOWS的一种数据转载 2016-12-25 22:30:50 · 2609 阅读 · 0 评论 -
兼容位图和兼容DC的理解
CreateCompatibleBitmap 函数功能:该函数创建与指定的设备环境相关的设备兼容的位图。通常情况下,如果是同一类设备,创建的DC的初始化环境是相同的,问题在于设备DC在变化,运行过程中一定会调整属性,如果再创建一个同类设备的DC,初始属性肯定不一样,不兼容的可能性是很大的,所以以某个运行时刻的DC为基准创建一个兼容DC,将复制当前时刻的DC属性,它的属性可以保证是相同的,转载 2016-12-22 23:00:26 · 1064 阅读 · 0 评论 -
窗口中显示bmp图片的过程
创建步骤我们首先大致了解下显示位图的基本步骤,主要有5步,如图1所示: 图1 位图显示步骤对每个过程的解释如下:1.创建位图 利用CBitmap类构造一个位图对象,然后利用LoadBitmap函数完成实际位图资源和对象的关联.2.创建原创 2016-12-21 22:34:05 · 3559 阅读 · 0 评论 -
创建一个bmp格式的简单方法
在MFC编程中会涉及到位图的显示,那么我们如何创建一个能够用于VS导入的bmp格式位图呢,方法如下:1.将JPG格式的图片用“画图”软件打开2.点击左上角的“下拉菜单”->另存为->"BMP图片格式"->类型选择“24位位图”3.点击“OK”即可PS:若我们直接将图片的后缀修改为bmp格式,我们的VS软件不能正常的导入到资源中,表现的现象就是Bitmap文件下面没有新增的b原创 2016-12-21 20:32:16 · 7424 阅读 · 0 评论 -
状态栏编程实例
状态栏介绍一般情况下,应用程序的最下方就是状态栏,主要应用于信息提示,如图1所示。 状态栏分为两部分,第一部分是左边最长的那部分就是提示行,当我们把鼠标移动到某个工具栏按钮或者菜单项时,这个部分就会显示对应的提示信息。这个提示信息是在菜单项或者工具栏按钮的Prompt属性中完成的。第二部分是其右边的三个窗格,主要用来显示Caps Lock,Num Lock和Scroll原创 2016-11-27 21:12:35 · 1980 阅读 · 0 评论 -
工具栏编程实例
工具栏是windows应用程序中一个非常重要的图形界面元素,它提供了一组顺序排列的带有位图图标的按钮。工具栏把常见的菜单命令集合起来,以按钮的形式提给给用户使用,目的是为了方便用户操作。一般情况下,当我们在菜单资源设计完成后,会为一些常用的菜单命令设置相应的按钮,摆放到工具栏,以便用户操作,菜单项的消息ID和工具栏对应按钮的消息ID是设置成一样,使得它们具有相同的消息响应函数。创建工具栏原创 2016-11-26 22:13:07 · 1023 阅读 · 0 评论 -
利用兼容DC和兼容位图实现图形重绘
我们在开发GDI程序时,会实现简单的画图功能,当我们放大或缩小窗口时,我们所绘制的图形元素就消失了。因为窗口在变化过程中发生了重绘,导致原先的图案消息,这里将解决这个问题。我们利用兼容DC完成图形重新绘制,从而保持图形不消失;这里将要绘制矩形,椭圆形,直线这三个图形为例;完成一个图形绘制需要三个关键信息:起点、终点、绘画类型,这里用CGraph这个类进行描述,Graph.h是类声明信息,Graph.原创 2017-02-12 15:38:48 · 1945 阅读 · 1 评论 -
IDR_MAINFRAME字符串资源含义
当我们在MFC单文档工程创建完成后,我们可以在其资源视图的MENU和String Table文件夹下都发现有IDR_MAINFRAME的ID号,说明一个资源ID可以标识多种资源;目前可以代表的资源有字符串资源、菜单资源;这里主要说明下IDR_MAINFRAME中各个子串的含义;我们创建的工程名是DocTemplate,在默认情况下,IDR_MAINFRAME所代表的字符串内容如下:原创 2017-02-12 21:44:39 · 6322 阅读 · 2 评论 -
认识CArchive类
序列化当我们创建对象的时候,对象就存在于内存中,当其生命周期结束后,这些被创建的对象就要被销毁;当对象被销毁后,我们就无法知道这些对象的值。MFC提供了CArchive类可以将对象数据保存到永久设备,比如磁盘文件。当应用程序重新启动后,CArchive类可以帮助我们从磁盘文件读取这些数据,然后在内存中重新构建对应的对象;这样就使得我们的对象数据永久存在,该过程称之为序列化(或者串行化)原创 2017-02-15 22:38:29 · 8709 阅读 · 0 评论 -
不同进程间消息互发
想一想,在平时的处理程序的时候,我们都是在一个进程中进行处理,所以,在处理字符串的时候,我们都不用考虑太多的问题,处理什么样的数据和数据的发送都会在同一个进程中进行。但是,假如要你负责一个程序要在两个不同的进程中交换数据,你会怎么办,你要想怎样做,一般的做法是这样,自定义一个消息,然后你就把这个数据放在这个消息附带的参数WPARAM wParam 与 LPARAM lParam 中,不过这转载 2017-07-02 10:47:41 · 733 阅读 · 0 评论 -
PeekMessage和GetMessage函数的主要区别
经网络资料查找以及MSDN资源查找,整合出PeekMessage函数和GetMessage函数的主要区别,内容比较全,也有应用代码说明。联系:在Windows的内部,GetMessage和PeekMessage执行着相同的代码,Peekmessage和Getmessage都是向系统的消息队列中取得消息,并将其放置在指定的结构。区别:PeekMessage: 有消息时返回TRUE,没有消息返回FAL原创 2017-06-17 18:02:52 · 1862 阅读 · 0 评论 -
windows消息处理机制
本文主要介绍了windows消息和消息处理机制原创 2016-08-19 22:19:18 · 1389 阅读 · 0 评论 -
SetWindowPos设置窗口的Z轴次序
MFC中的Z轴次序是就像数学中三维坐标轴体系中的Z轴,表示x方向,y方向的第三个方向;例如:我们利用快捷键“Ctrl+e”打开文件管理器,每按一次快捷键,则创建一个新的窗口;我们打开三个窗口,我们点击哪个窗口,则该窗口就呈现在最前面;这种效果就是设置窗口的Z轴次序可以达到。我们可以利用SetWindowPos进行设置,其函数声明如下:BOOL SetWindowPos(原创 2017-05-13 16:16:33 · 9495 阅读 · 1 评论 -
常见的消息映射格式总结
在MFC中想要完成消息映射,需要在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP两个宏之间进行消息映射声明才行, 例如://开始消息映射的定义(必须用在类实现中) BEGIN_MESSAGE_MAP(CMyClass, CBase)...ON_CONTROL_REFLECT(CBN_DROPDOWN, &CMyClass::OnCbnDropdown)ON_WM_MOUS原创 2017-03-24 21:26:32 · 1409 阅读 · 0 评论 -
CString类常用操作
1. 简介一个CString对象由可变长度的字符数组构造,由PXSTR m_pszData成员变量维护对象的地址信息。CString对象可以任意替换const char*和LPCTSTR类型的函数参数,而不需要强制转换。2. 构造函数Cstring构造函数有多种形式,常见的声明如下:CString( );CString( const CString& stringSrc );C原创 2017-03-21 22:41:32 · 1133 阅读 · 0 评论 -
MFC设置工具栏按钮Tip方法总结
本节主要介绍工具栏按钮显示Tip信息,对应添加工具栏的步骤见工具栏编程静态方法直接在资源视图里,对要修改的工具栏的某个按钮,在其属性对话框中,对Prompt属性进行修改;Prompt格式为“字符串1\n字符串2”,其中字符串1是状态栏提示信息,字符串2是工具栏提示信息,我们修改字符串2即可。例如:动态方法1. OnUserToolTip我们可以将框架类中的m_wndToolBar成员变量从CToo...原创 2017-03-19 12:41:17 · 5635 阅读 · 0 评论 -
模拟鼠标点击
原理当用户在对话框上进行一系列动作时,背后的行为就是一个动作产生一个消息,从而引发一系列消息响应,我们可以利用PostMessage或SendMessage函数去发送相对应的消息,就可以完成模拟操作了。PostMessagePostMessage消息原型:BOOL PostMessage(HWND hWnd,UINT Msg, WPARAM wParam, LPARAM lParam); 参数:原创 2017-03-17 22:15:22 · 8195 阅读 · 3 评论 -
ToolTips Notifications
以下表格展示的是Tooltip通告信息,在有必要的时候可以去响应这些消息,完成特殊需求。原创 2017-03-18 17:13:30 · 697 阅读 · 0 评论 -
对话框基础知识(二)--访问控件的五种方式
背景描述: 我们用实现这样的一个功能,在Num1和Num2编辑框中输入数据,点击求和按钮后,在Sum编辑框中显示这两个数的和,对话框界面如图1所示。准备事项: 1.添加与这个对话框相关联的类,具体方法参见《对话框基础知识(一)》; 2.从工具箱从拖拽3个编辑框控件和3个文本控件,同时增加一个“求和”按钮 3.在所关联的对话框类中响应“求原创 2016-10-23 21:25:32 · 849 阅读 · 0 评论 -
CToolBar的使用介绍
CToolBar控件是MFC提供的一个类,实现了一般窗口应用中的工具条。通常用于SDI或者MDI程序中,对话框程序中通常不使用工具条。一、代码中的工具条工具条是一个CToolBar类对象,通常作为成员对象嵌入程序的CMainFrame类中,也就是说嵌入主框架窗口中。因此,MFC生成框架窗口的时候同时生成工具条,销毁框架窗口的时候同时销毁工具条。下面是一个多文档 (MDI) 程序的代转载 2016-11-23 23:01:44 · 4069 阅读 · 0 评论 -
改变控件的背景颜色和字体颜色
在默认情况下, 我们看到的对话框及其控件的背景和字体颜色都是浅灰色的,为了美化界面我们可以使用MFC中的WM_CTLCOLOR消息,它的响应函数是Cwnd类的OnCtlColor.。该函数声明如下:afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );返回值:OnCtlColor必须返回一个刷子句柄,该刷子将被用原创 2016-12-07 23:09:34 · 3867 阅读 · 0 评论 -
说明为什么Button控件不能使用CustomDraw技术
在MFC 4.7版本后实现了CustomDraw技术,使得对许多普通控件的自绘变得非常灵活和简单,我们通过修改传入的结构体成员来对控件做细微的定制,对于不关心的绘制阶段我们不做任何处理;CustomDraw自绘技术不同于OwnerDraw技术技术,OwnerDraw要求程序员员去绘制控件的整个阶段。CustomDraw技术仅支持以下这些:Header controlsList-view原创 2016-12-18 19:33:58 · 813 阅读 · 0 评论 -
WM_CTLCOLOR消息
参考文章:白乔原创:VC之美化界面篇 在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄,用于在控件具体的绘制之前擦除其客户区。 WM_CTLCOLOR映射消息处理函数为afx_msg HBRUSH OnCtlColor(CD转载 2016-12-04 21:40:35 · 1235 阅读 · 0 评论 -
理解operator HBRUSH( ) const的实现原理
问题引出在MFC中有个WM_CTLCOLOR消息,它的消息响应函数是CWnd类的OnCtlColor,其函数声明和注释如下:afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );返回值:OnCtlColor必须返回一个刷子句柄,该刷子将被用于画出控件的背景。参数:pDC 包含了子窗口的原创 2016-12-04 14:49:55 · 1427 阅读 · 1 评论 -
对话框基础知识(一)
本文主要介绍了对话框基本知识,包括对话框绑定的类,对话框创建和显示,以及三个对话框相关的响应函数使用说明,最后给出具体代码。原创 2016-10-23 14:42:21 · 2761 阅读 · 0 评论 -
OnPaint和OnDraw的区别
本文主要介绍了OnDraw和OnPaint的区别和联系转载 2016-09-25 22:06:19 · 823 阅读 · 0 评论 -
文本编程之插入符
本文主要介绍了插入符文本相关的操作原创 2016-09-25 18:14:10 · 2478 阅读 · 0 评论 -
Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
本文主要介绍了MFC、Win32(SDK程序,控制台程序)的区别和联系。原创 2016-08-26 23:07:41 · 9486 阅读 · 1 评论 -
MFC之消息映射机制实现方法
本文分析了完成消息映射的的应有步骤以及消息映射机制的原理性分析。原创 2016-09-04 19:04:46 · 3994 阅读 · 0 评论 -
MFC之画刷绘图
本文主要介绍了MFC画图功能的实现,包括RGB颜色画刷、位图画刷、透明画刷的演示原创 2016-09-15 16:13:23 · 6196 阅读 · 0 评论 -
MFC框架程序剖析
本文主要介绍了MFC单文档应用程序的封装原理和执行过程,这样有主要需要MFC程序。原创 2016-09-02 21:04:24 · 7054 阅读 · 4 评论 -
VS2008如何自动添加消息映射
利用向导完成消息响应函数添加转载 2016-09-02 22:48:50 · 2197 阅读 · 0 评论