MFC
文章平均质量分 67
行走江湖
方向:分布式计算、实时流计算、数据挖掘、后台开发、NoSQL、Hadoop/HBase、Unix/Linux、Java、C/C++、Python。
联系方式:http://t.qq.com/X-L2008
QQ:394102339
展开
-
自绘对话框标题栏
<br />本例中将涉及到对话框标题栏的自绘,双缓冲位图的显示以及位图按钮类的使用。<br />1. 标题栏自绘 <br /> 在网上搜索了很多关于标题栏自绘的例子,但是大都存在很多的问题,多是没有自绘彻底,比如出现闪烁,会出现默认风格最大化等按钮的显示,不过其中有份代码处理的比较好,至于出于什么地方想不起来了,下面会一并给出源代码(源代码的下载地址在评论部分给出 ),本例是在这份源代码的基础上作的改进,主要有以下几个方面:<br />(1)标题栏添加了颜色渐变的效果,使之看上去有立体感,其实就是转载 2010-09-08 15:52:00 · 620 阅读 · 0 评论 -
串行化的应用
串行化是什么?我们在编程中常常遇到这类问题,如何将对象保存到永久存储介质上(一般是硬盘),当程序下一次启动时在从永久存储介质上读取该对象。一般,要整个存储对象是不可能的,也没有必要,因为一个对象不仅有成员变量,也有成员方法,那我们要如何做到这一点,这就是这篇文章所讲的技术——串行化!串行化是将对象的所有特征保存起来,以便下次读取该特征时可以将该对象还原出来。一个对象要串行化,对应的类必须支转载 2012-05-27 12:03:19 · 592 阅读 · 0 评论 -
解决MFC屏幕闪动问题:双缓冲的实现
很多学员都会遇到这样的情况,在客户区绘图比较多时,或颜色与背景色相差较大时,客户区都会出现闪动,这是由于当屏幕刷新时,会先用默认的画刷清除背景,然后再在客户区画上图形,当颜色相差较大时,人眼会形成暂留,便会感觉闪动:解决方法:采用双缓冲实现,其原理形象的理解是采用两块画布,前面一块给用户看,后面一块用来画,当后面一块画好了后,便放到前面去,由于这是区域的复制,速度相当快,人眼是感觉不出来的,就转载 2012-05-27 12:01:33 · 2728 阅读 · 0 评论 -
MFC程序(SDI)一开始运行最大化详解
看到很多MFC初学者都有这样的问题:MFC单文档程序默认运行时窗口不是最大化,怎么才能使其一开始就最大化显示,其实对于这个问题,很多网友都解释的不清楚,或是不全面!其实这是在修改MFC的窗口界面的外观,修改MFC窗口的外观或是风格是要用到类风格(CS_XXXX)和窗口风格(WS_XXXX),学过MFC的学者都知道在WinMain函数中,最开始都定义了WNDCLASS窗口类,该类可以改变窗口的图转载 2012-05-27 12:04:35 · 1525 阅读 · 0 评论 -
CRectTracker(橡皮筋类)的应用
大家都知道Windows自带的画图软件中可以用虚线框选择图像的某个区域,之后便可以拖动、放大、缩小该区域,这是怎么实现的?下面我将为大家介绍橡皮筋类(CRectTracker),它将实现用虚线框选中一个区域,并可以拖动、放大、缩小该区域。1.新建一个单文档应用程序,命名为CRectTracker,完成。2.在CCRectTrackerView中新建一个CRectTracker类型的成员变量转载 2012-05-27 11:56:29 · 862 阅读 · 0 评论 -
CRectTracker类的使用
CRectTracker类的使用作者:二鸡蛋CRectTracker(俗称“橡皮筋”类)是一个非常有意思的类。你在Windows中经常看到这样的情况:它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用。如何通过编程来实现这种功能呢?这就是CRectTracker类的作用; (框选)转载 2012-05-27 14:28:57 · 462 阅读 · 0 评论 -
DLL(Dynamic Link Libraries) 专题
目录引言 调用方式 MFC中的DLL DLL入口函数 关于约定 关于DLL的函数 模块定义文件(.DEF) DLL程序和调用其输出函数的程序的关系 作者引言比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘转载 2011-04-28 10:04:00 · 418 阅读 · 0 评论 -
MFC 对话框编程要点
<br /> MFC 对话框编程要点 (一)对话框基本要点和生命周期 MFC对话框支持WYSIWYG编程模式,即What you see is what you get.。其类型分为模式对话框和非模式对话框 对话框由一个rc资源文件描述外观;与一个cpp类相连接(通过ID);对话框内的控件使用基于ID的变量映射来通讯。 模式对话框对象被定义后,通过调用DoModal()函数来显示对话框并进行相关操作,此函数当对话框被关闭时返回。其返回值标明了对话框是点击OK退出(1转载 2011-04-28 09:59:00 · 484 阅读 · 0 评论 -
学习MFC框架如何创建的过程
<br /><br />很久没有使用MFC了,以至于都忘记MFC框架复杂的窗口、文档、视的创建过程了。<br />下面我们跟踪一个MFC MDI的应用程序,来温习或学习一下。<br /> <br />使用AppWizard创建一个MDI应用程序,我创建的应用程序叫MDITest,这样MFC生成了如下的类:<br /> <br />类名<br />作用<br />CMDITestApp<br />派生于CWinApp的应用程序类。<br />CMainFrame<br />派生于CMDIFrameWnd的MD转载 2011-04-28 09:15:00 · 559 阅读 · 0 评论 -
MFC 多线程总结
<br />(一) MFC对多线程编程的支持<br /> <br /> MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。<br /><br /> 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而转载 2011-04-28 10:11:00 · 363 阅读 · 0 评论 -
一些来自CodeGuru的COM入门教程
<br />Step by Step COM Tutorial<br />Rating: <br />Saurabh Dasgupta - 03/06/2001<br />A step-by-step guide to creating COM components using Visual C++ - without the help of ATL or MFC<br />Beginner-Level COM Tutorial<br />Rating: <br />Naveed A转载 2011-04-28 10:02:00 · 467 阅读 · 0 评论 -
一个MFC应用程序的生命周期
(一)程序的进入点 MFC作为Win32 API的一种封装,它的程序进入点自然是WinMain。但是,这个WinMain也被封装起来,用户是看不到的,只是在编译器进行连接时会被自动连接。 下面我们就来寻找一下MFC程序被隐藏了的WinMain。搜索MFC的源文件,可以发现MFC的WinMain定义在 appmodul.cpp中。 此文件可以在VC的MFC src文件夹中找到 extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPre转载 2011-04-28 09:49:00 · 667 阅读 · 0 评论 -
VC 常见的108个问题
<br /> 1) 如何通过代码获得应用程序主窗口的 指针?<br />主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。<br />AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)<br />//使程序最大化.<br /><br />(2) 确定应用程序的路径<br />Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。<br />Ex转载 2011-04-22 18:19:00 · 656 阅读 · 0 评论 -
VC项目开发之单文档多视图实现
<br />多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。2)通过一个文档关联多个视图,窗口显示整个视图。第二种实现较第一种复杂,这里给出详细的实现方法。<br />Step 1:使用VC 6.0新建一个Project,命名为:MultiView。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainF转载 2011-04-22 15:30:00 · 457 阅读 · 0 评论 -
VC—主框架窗口绘制背景
<br />VC—主框架窗口绘制背景 转自skyremember的专栏<br />使用VC进行项目开发,特别是简单的MIS系统开发中,通常在用户没有进行操作之前显示的是主框架的窗口(用户点击操作菜单项再弹出处理窗口)。因此给主框 架窗口提供一个背景图片就显得很有必要(例如一用户满意的LOGO等)。但是对于主框架的背景的绘制不能简单地用ClassWizard重载 OnEraseBkgnd(CDC* pDC)函数的方法实现。<br />多文档窗口应用程序中的主框架窗口的背景区是一个MDIClient类的窗口,转载 2011-04-22 16:15:00 · 591 阅读 · 0 评论 -
VC 多文档用户界面设计
<br />用习惯了Delphi、VB、Windows Form(Visual C#)等称之为RAD(Rapid Application Development)的开发工具进行项目开发的都会很满足这些工具和平台提供的快速界面开发的功效:你可以很容易就可以实现一个MIS系统的管理界面,提供一个主框架,点击主框架上的某一个菜单项就打开一个处理事务的窗口,这些窗口可以重叠,可以最大/小化,一切看起来都像那么回事。但是当你在VC中进行开发的时候,发现整个世界都变了,虽然VC提供了MDI支持多文档视图的框架,但是每次转载 2011-04-22 15:36:00 · 649 阅读 · 0 评论 -
深入分析MFC文档视图结构(项目实践)
文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/View Architecture本身的复杂性加上VC产生的一系列代码足够让我们眼花缭乱,一时陷入云里雾里不可自转载 2011-04-22 15:29:00 · 509 阅读 · 0 评论 -
DLLMAIN() 详解
1 DLL的进入/退出函数1.1 DllMain简介跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于一个Dll模块,DllMain函数是可选的。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要转载 2010-12-13 21:32:00 · 692 阅读 · 0 评论 -
MFC双缓冲解决闪烁问题
最近在写一个图像编辑软件,环境是MFC,但是MFC的视图刷新机制使得图像闪烁得非常厉害(图像缩放时尤其明显),在网上查了一些资料,最好的方法是用双缓冲的方式显示,这里总结一下。 双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)转载 2012-09-16 13:11:48 · 1271 阅读 · 0 评论