摘要: 转载请注明原文链接:http://www.cnblogs.com/xianyunhe/archive/2011/12/18/2292043.htmlMFC框架中内置了打印框架,已实现单页的打印,如果视图中只有一页图形,并依据像素打印视图,不需要添加任何代码就可直接使用,非常方便。侯捷的《深入浅出MFC》中对MFC的打印框架进行了剖析,详细讲解各函数之间的调用关系,但对多页打印,却并未讲解。下面研究如何实现多页打印。1、页面布局在界面区域较大时,我们需要多页打印,如Excel表的打印。当横向和纵向都无法打印在一页时,页面的布局可逐行排列,也可以逐列排列。页面布局的两种示意图如下所示。(1)逐行排 阅读全文
posted @ 2011-12-18 20:56 闲云鹤 阅读(4331) 评论(0) 推荐(0) 编辑
摘要: 转载请注明原文链接。原文链接:http://www.cnblogs.com/xianyunhe/archive/2011/12/06/2278550.html文件和文件夹的创建、复制、删除、重命名等操作是经常要用到的,作者根据自己的经验,并查询了MSDN,特意总结了常用文件和文件夹的相关操作,重点讨论了复制整个文件夹和删除整个文件夹1、文件操作基本函数WinBase.h中声明了Windows平台下的基本的API函数,包括文件和目录的基本操作。下面列出部分常用的文件操作相关函数。函数说明DeleteFile删除单个文件,不能删除目录和只读文件CopyFile复制单个文件MoveFile移动移动文 阅读全文
posted @ 2011-12-06 22:45 闲云鹤 阅读(15176) 评论(2) 推荐(8) 编辑
摘要: 转载请注明原文链接。原文链接:http://www.cnblogs.com/xianyunhe/archive/2011/11/27/2265165.html在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下:http://www.cnblogs.com/xianyunhe/archive/2011/11/20/2255811.html双缓存的主要思路是:先把图形绘制到内存DC中,然后再把内存DC中的所有图形一次性的复制到屏幕DC中。在前文的实现示例中,我们把直接往DC中绘制图形的函数封装为DrawDirect,把通过双缓存来实现图形绘制的函数封装为DrawWithBufferEff 阅读全文
posted @ 2011-11-27 19:07 闲云鹤 阅读(2357) 评论(0) 推荐(2) 编辑
摘要: 转载请注明原文链接。原文链接:http://www.cnblogs.com/xianyunhe/archive/2011/11/27/2265148.html指向一般函数的指针可实现对参数类型、参数顺序、返回值都一样的函数进行封装,指向类的成员函数的指针可实现对一个类中的参数类型、参数顺序、返回值都一样的函数进行封装。对于函数之前,前面已经进行了讨论,该文章的链接为:http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html那么,如何能实现对不同类的成员函数进行统一调用呢?我们首先想到的应该会是函数模板和类模板。下面就一个例 阅读全文
posted @ 2011-11-27 17:16 闲云鹤 阅读(8572) 评论(4) 推荐(2) 编辑
摘要: 转载请注明原文网址:http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针和一般函数的指针的表现形式不一样。1、指向一般函数的指针函数指针的声明中就包括了函数的参数类型、顺序和返回值,只能把相匹配的函数地址赋值给函数指针。为了封装同类型的函数,可以把函数指针作为通用接口函数的参数,并通过函数指针来间接调用所封装的函数。下 阅读全文
posted @ 2011-11-26 23:45 闲云鹤 阅读(57027) 评论(12) 推荐(12) 编辑
摘要: 转载请注明原文网址:http://www.cnblogs.com/xianyunhe/archive/2011/11/20/2255811.html1、闪屏的问题在GDI的绘图系统中,每调用一次区域绘图操作,如FillRect、BitBlt等,图形显示系统就会在屏幕中对指定的区域进行一次刷新操作。如果频繁的进行区域绘制操作的操作的话,我们就会发现,屏幕会出现闪屏。使用下面的代码对闪屏的问题进行测试,在XP系统闪屏尤其严重,在Win7系统,闪屏问题有所改善。Win7系统在绘制效率上有所提升。void CDoubleBufferView::DrawDirect(CDC* pDC){ ASSERT_ 阅读全文
posted @ 2011-11-20 10:37 闲云鹤 阅读(10982) 评论(7) 推荐(2) 编辑
摘要: 转载请注明原文网址:http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html通过VC实现对Excel表格的操作的方法有多种,如:通过ODBC数据库实现,通过解析Excel表格文件,通过OLE/COM的实现。本文主要研究通过OLE/COM实现对Excel表格的操作。本文源码的应用环境说明:Windows XP SP3Microsoft Visual Studio 2010Microsoft Office Excel 20071、添加OLE/COM支持。首先,应用程序必须添加对OLE/COM的支持,才能导入OLE/COM组件。 阅读全文
posted @ 2011-09-25 21:23 闲云鹤 阅读(88018) 评论(10) 推荐(9) 编辑
摘要: VARIANT变量是COM组件之间互相通信的重要的参数变量之一,它可以容纳多种不同的类型,如short、long、double等,包括各类指针和数组。组件之间的互相调用是比较耗时的,尤其带当组件位于不同进程中时,因此,减少传递次数是提高效率的一种有效方法。其中,Excel表格的操作就可能涉及到大量数据,一次传递一个二维数组是提高对Excel表的操作效率。下面以两种不同方式来实现VARIANT二维数组的操作。1、使用SAFEARRAY实现二维数组SAFEARRAY安全数组可以实现多维数组,SAFEARRAY实现的步骤可以大致分为三步。(1)创建SAFEARRAY安全数组,包括设置数组元素的类型、 阅读全文
posted @ 2011-09-13 14:41 闲云鹤 阅读(22740) 评论(0) 推荐(2) 编辑
摘要: 转载请注明原文网址:http://www.cnblogs.com/xianyunhe/archive/2011/09/02/2163842.html目前很多软件都是要出口到多个国家,因此,为软件提供多国语言支持就成为了一个基本条件。为软件提供多国语言的支持的具体实现方法有很多,但基本原理都差不多,就是实现代码和语言包的独立,代码根据设定的语言选择语言包。其中,MFC的资源文件就提供了对多国不同语言的支持功能,如果使用MFC开发,直接用资源文件自带的多国语言支持,可以省去不少的麻烦。下面就介绍给MFC程序添加中英文的支持,开发环境为VS2010。1. 新建工程新建了一个对话框工程,工程名称为Mu 阅读全文
posted @ 2011-09-02 15:29 闲云鹤 阅读(33715) 评论(11) 推荐(1) 编辑
摘要: 前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时。因此,特意整理了一下Linux自动登陆的设置方法。本文的测试环境为Centos 5.5。1、设置GDMGDM是GNOME显示管理器,通过设置其配置文件/etc/gdm/custom.conf可以设置帐号自动登陆。设置方法如下:在/etc/gdm/custom.conf文件中添加以下内容[daemon]AutomaticLogin=usernameAutomaticLoginEnable=True其中,username是要自动登陆的用户名。说明:username不能是roo 阅读全文
posted @ 2011-08-08 18:44 闲云鹤 阅读(17234) 评论(0) 推荐(0) 编辑