VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板
VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板

目前位置: VCer资源中心 >>> VCer文章
子级分类: 软件工程 C++/MFC基础 Windows界面 网络与通信 图形图象处理 系统通信 数据库 文件系统 硬件/系统调用 开发工具 组件技术 其它技术
我来转发一篇文章!>>>


使得子控件大小随主窗口大小变化的宏
 
作者:不祥 lirongbao000张贴于2006-04-27 05:05:30.0,共阅读4437次,回复5
编写易于调试的VC代码
 
一 程序的设计   要避免错误,首先要从好的设计开始。对于程序的设计,需考虑到程序的两个特性:   1简单性   大多数常见的错误来源于程序设计中不必要的复杂成分。一个好的设计应该反映问题本身的要求,而不必为了刻意追求“满足将来的需要”而添加不必要的特性。实际上,简单优雅的设计比那些复杂的设计更能迎合未来的需求。   2 耦合性   耦合(decoupling)性用来衡量不同对象之间的依赖程度。松耦合的程序易于理解和实现,易于测试和维护,且这种程序包含错误的可能性小,错误也较容易发现和清除。 二 编程风格   编程风格是个人问题,有很大的随意性。一个好的编程风格不仅让代码易理解,也易于调试。好的编程风格包括:   1 清晰地书写代码   如果没有必要,尽量不要使用语言中的高级特性,因为这些特性不易于理解和调试。使用大多数程序员都能理解的语言成分来书写代码不易犯错且易于理解和维护。   2 编写结构良好的代码   当程序崩溃时所能得到的最基本的调试信息是源代码文件、问题所在行的行号和一个调用栈(call stack)。调用栈是调试程序时最有帮助的部分,它提供错误出现的上下文,也就是带参数的函数调用序列。你书写的代码结构越好,调用栈就能给你越多信息。   3 使用良好的标识符    一个好名字能使你的代码更容易被理解和维护。流行的匈牙利命名法(Hungarian Notation) ...
作者:michael bluejoe张贴于2007-01-23 17:00:05.0,共阅读3018次,回复4
虚函数表
 
每个含有虚函数的类有一张虚函数表(vtbl),表中每一项指向一个虚函数的地址,实现上是一个函数指针的数组。 虚函数表既有继承性又有多态性。每个派生类的vtbl继承了它各个基类的vtbl,如果基类vtbl中包含某一项,则其派生类的vtbl中也将包含同样的一项,但是两项的值可能不同。如果派生类重载(override)了该项对应的虚函数,则派生类vtbl的该项指向重载后的虚函数,没有重载的话,则沿用基类的值。在类对象的内存布局中,首先是该类的vtbl指针,然后才是对象数据。在通过对象指针调用一个虚函数时,编译器生成的代码将先获取对象类的vtbl指针,然后调用vtbl中对应的项。对于通过对象指针调用的情况,在编译期间无法确定指针指向的是基类对象还是派生类对象,或者是哪个派生类的对象。但是在运行期间执行到调用语句时,这一点已经确定,编译后的调用代码能够根据具体对象获取正确的vtbl,调用正确的虚函数,从而实现多态性。 分析一下这里的思想所在,问题的实质是这样,对于发出虚函数调用的这个对象指针,在编译期间缺乏更多的信息,而在运行期间具备足够的信息,但那时已不再进行绑定了,怎么在二者之间作一个过渡呢?把绑定所需的信息用一种通用的数据结构记录下来,该数据结构可以同对象指针相联系,在编译时只需要使用这个数据结构进行抽象的绑定,而在运行期间将会得到真正的绑定。这个数据结构就是vtbl。可以看到,实现用 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1262次,回复1
VC++中使用内存映射文件处理大文件
 
引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。 内存映射文件 内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对该文件进行操作之前必须首先对文件进行映射,就如同将整个文件从磁盘加载到内存。由此可以看出,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文件缓存操作均由系统直接管理,由于取消了将文件数据加载到内存、数据从内存到文件的回写以及释放内存块等步骤,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。另外,实际工程中的系统往往需要在多个进程之间共享数据,如果数据量小,处理方法 ...
作者:流水 liushuiwu张贴于2008-10-12 03:35:17.0,共阅读207次,回复0
CreateEvent
 
  函数功能描述:创建或打开一个命名的或无名的事件对象   函数原型:   HANDLE CreateEvent(   LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性   BOOL bManualReset, // 复位方式   BOOL bInitialState, // 初始状态   LPCTSTR lpName // 对象名称   );   参数:   lpEventAttributes:   [输入]一个指向SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是否可被子进程继承。如果lpEventAttributes是NULL,此句柄不能被继承。   Windows NT/2000:lpEventAttributes的结构中的成员为新的事件指定了一个安全符。如果lpEventAttributes是NULL,事件将获得一个默认的安全符。   bManualReset:   [输入]指定将事件对象创建成手动复原还是自动复原。如果是TRUE,那么必须用ResetEvent函数来手工将事件的状态复原到无信号状态。如果设置为FALSE,当事件被一个等待线程释放以后,系统将会自动将事件状态复原为无信号状态。   bInitialState:   [输入]指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为无信 ...
作者:流水 liushuiwu张贴于2008-10-12 02:13:25.0,共阅读146次,回复0
atoi,atol,strtod,strtol,strtoul实现类型转换
 
atoi,atol,strtod,strtol,strtoul实现类型转换 atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’’)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include<stdlib.h> 定义函数 int atoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’ ...
作者:流水 liushuiwu张贴于2008-10-11 05:09:25.0,共阅读264次,回复0
终于搞懂了,预编译头文件(precompiled header)
 
预编译头文件今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有, 就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。 结果不能编译了,我靠: fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\': No such file or directory 怎么rebuild all都不行。 上网查了一下,才搞懂了: ----------------总结------ 如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么 1。把这些头文件全部写到一个头文件里面去,比如写到preh.h 2。写一个preh.c,里面只一句话:#include "preh.h" 3。对于preh.c,在project setting里面设置creat precompiled headers,对于其他 .c文件,设置use precompiled header file // 哈哈 我试了一下,效果很明显,不用precompiled header,编译一次我可以去上个厕所,用 precompiled header,编译的时候,我可以站起来伸个懒腰,活动活动就差不多啦 ---------转载的 ...
作者:不祥 pyl2001张贴于2004-03-09 19:32:16.0,共阅读24859次,回复10
一个程序中运行可执行文件相关函数详解及示例
 
一个程序中运行可执行文件相关函数详解及示例 WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 函数原型: BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。 LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); lpApplicationName:指向一个NULL结尾的、用来指定可执行模块的字符串。 这个字符串可以使可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。 这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于 lpCommandLine ...
作者:流水 liushuiwu张贴于2008-10-10 03:45:02.0,共阅读234次,回复0
白乔原创:实战软件DIY[5]
 
4. 实战体验 经过详细的实战部署和系统设计,后面就是真枪实弹的实战了。我们按照软件实现(编码)——帮助文档——安装程序——软件打包——软件测试的顺序一一介绍。 4.1 版本管理 且慢!还是不要急着编码,在进入具体的软件实现阶段,作为常识,你应该掌握一下关于版本管理的概念。 版本管理是软件配置管理(Software Configuration Management,简写为SCM)的一个重要环节。版本管理不属于软件开发过程中某个特定的阶段,而是贯穿于整个软件开发过程中的,在软件开发过程中所有的分析、设计文档和源代码都必须有严格的版本管理来保证。 版本管理的工具软件很多,在众多的成熟产品和试验产品中,笔者推荐目前使用比较广泛、有较大用户前景且又能较易获得的版本管理器产品Microsoft公司的Visual SourceSafe(VSS)。VSS是Microsoft Visual Studio产品家族的一员,图8示出了使用Visual SourceSafe对FlashNow!进行版本管理的实况。 图8 使用Visual SourceSafe进行FlashNow!版本管理 运用VSS进行版本控制管理的非常有效而且代价较小的解决方案是: 在一台Windows NT服务器或者是一台较为独立的Windows98/95 PC上安装VSS6.0的服务器端软件,创建一个 ...
作者:不祥 bluejoe张贴于2004-04-25 11:43:49.0,共阅读4655次,回复4
白乔原创:VC之美化界面篇
 
本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理; 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3. 熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1. 美化界面之开题篇 相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面: 图1 瑞星杀毒软件的精美界面 程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 “受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。 2. 美化界面之基础篇 美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免…… 2.1 Windows下的绘图操作 熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的 ...
作者:不祥 bluejoe张贴于2004-03-04 15:11:18.0,共阅读42112次,回复24
学习C/C++的经验谈
 
工作已经有三年半,算上学校里的时间,大约已有7年的C语言和5年的C++使用经验;熟练使用C/C++也有3年以上;现在的我自认为是可以称得上精通C/C++,基本现在市面上广泛被推崇的经典书籍,如:《C++ Primer》、《高级C++编程技术》、《STL原码剖析》、《Effective C++》、《C编程陷阱》、《Thinking in C++》等等,这些书只有《高级C++编程技术》和《C编程陷阱》在早些时候是通篇看完的(也是因为它们都比较薄),其它的现在基本上都已经不能启发我了,这些书虽然内容各不相同,但针对的读者水平是一样的,应该是已经学会编程语言,能够独立编程但尚未精通,在某些方面存在一定问题或欠缺的人; 对于书籍,我现在的追求又回到了纯理论,基本上是远离编程语言和计算机,比如,小波变换和《Algorithm I-IV》; 言归正传,关于很多人疑问的先学什么后学什么的问题,我认为:如果你选择C++作为最终的工具,或者是以C++为主的,那么我强烈建议你先学习C语言; 首先要说明的是,C和C++是两件截然不同的东西,学习C++可以完全没有C的基础,或者说可以完全不用先学C;但是,这样你是永远也不可能成为真正的C++大师的;你最多只能成为一个C++的熟练工人;C和C++有一个共同的奥义:内存管理,而你不学习C,单从对C++的理解 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读2382次,回复4
清华大学MTK手机设计培训班招生
 
...清华大学MTK手机设计培训班招生 MTK是目前国内手机应用最多的软件平台,熟悉MTK手机开发的软件工程师严重缺乏,收入不菲。无论是从事手机设计、手机应用软件开发或者手机增值应用,MTK软件工程师都大有用武之地 清华大学移动软件培训中心与多家国际知名手机设计企业合作,使用目前最流行的MTK平台,以一款市面出售的MTK手机为教学案例,由浅入深地讲授手机的开发工具、开发流程以及开发技巧。并且提供开发资料以及工程代码、商用代码及分析,这种深度的培训在国内还没有先例,已有多家公司向我中心预定人才,毕业学员我们负责推荐工作。 我们还特别为手机增值应用开设了速成班,可以在短时间内掌握在MTK手机上进行增值应用开发的技术。 现有标准班和周末速成班招生,速成班4月12日开课,大专以上学历均可参加 billdu@tsinghua-embed.cn 报名热线:010-62789019 详情请看 www.tsinghua-embed.cn
作者:handstar handstar张贴于2008-04-03 13:57:16.0,共阅读566次,回复0
数组和指针的剖析
 
数组和指针的剖析 指针到底是什么呢。指针其实可以比作相当于一个寄存器,我们暂且可以这样理解。因为一个寄存器中一般存放的都是一个4字节的内存地址。所以我们的指针同样也是存放的一个内存地址。我们其实在访问指针就是间接的访问内存地址。 转为汇编中相当于 dowrd ptr [指针] 。这样访问的就是指针地址中存储的数据。 很多人说指针和数组时相同的,因为他们认为 例如。 char *string = "hello world"; 他们通过string [0] 就可以访问到字符’h’。其实这时存在一个间接的作用。这里我们假设string的内存地址时 00405128。例如这里我们通printf("%c", string[0])。 那么此时程序则会将 dword ptr [string+1] 压入堆栈。 不过因为堆栈一般是通过寄存器操作的所以 mov eax ,dword ptr [string+1] 。因为一般我们汇编中要进行访问内存中的数据的时候,数据地址需要加上 []。 例如 mov eax, 3 和 mov eax, [3] 。显然不同,前者是将立即数3传递到eax寄存器中。后者是将地址3中开始的32位值 传递给eax寄存器。因为一般 ...
作者:xyblack xyblack张贴于2008-03-25 03:41:31.0,共阅读915次,回复0
白乔原创:实战软件DIY
 
开发一个属于自己的软件?让流行软件的包装打上你的名字?也许这是最令你感到振奋的事情了。然而,这并不是很容易做到的事情。如何从一个好的思路出发,到软件的最终出品,个中艰辛足以让你感到迷茫……本文将围绕笔者自行开发的免费软件《FlashNow!动画浏览器》的具体开发过程,循序渐进,深入浅出,向读者朋友简单介绍软件开发的相关知识。 需要指出的是,软件开发是一件很严谨的事情,据说需要完整的系统的软件工程理论知识;对于软件开发,每个人也会有自己钟爱的开发方法和习惯(正如有的人偏爱于用左手写字一样)。本文不想花多大的篇幅讲述令人头疼的软件工程、软件管理的概念,毕竟我们更多的潜在的“开发商”群还基本上就是那些古里古怪的只热衷于物理代码的程序员们,而程序员的特点,很简单,除了激情十足,就是懒散。抽象的概念总会让人头疼,本文所想做到的,就是根据笔者实战的具体过程,向读者朋友们推荐一种实际可行的方法,而绝不是理论。跟着我来,Do It Yourself!我真诚的希望:通过本文,读者朋友能够学到一点真正有用的东西。 0. 前言 开发一个属于自己的软件?让流行软件的包装打上你的名字?也许这是最令你感到振奋的事情了。然而,这并不是很容易做到的事情。如何从一个好的思路出发,到软件的最终出品,个中艰辛足以让你感到迷茫……本文将围绕笔者自行开发的免费软件《FlashNow!动画浏览器》的具体开发过程, ...
作者:不祥 bluejoe张贴于2004-04-25 11:36:21.0,共阅读4605次,回复14
Visual C++.NET编程讲座之六
 
Visual C++.NET编程讲座之六   第六讲 对话框的功能实现   对话框就好比是一个容器,只有将一些控件添加在这个容器中,才能实现用户与对话框之间的交互。下面我们将前面的对话框设计成如图13所示的界面,其功能是用来让用户调整视图客户区的背景颜色,设置的效果可在下方的矩形框中预览。 图13 设计的"设置"对话框   1. 界面实现的技巧   在图13所示的对话框中所用到的控件有:组框 、静态文本 、编辑框 、旋转控件 和图片控件 。   需要说明的是:   ① "静态文本"、"组框"和"图片控件"都属于静态控件,一般不接收用户输入也没有事件映射,其中"组框"控件可以把一些控件人为地划分成一组,使界面更加清晰。"静态文本"和"图片控件"分别用来显示文本内容和图像资源(如图标、位图等)。   ② "编辑框"是一个让用户从键盘输入和编辑文本的矩形窗口,用户通过它可以输入各种文本、数字或者口令,也可使用它来编辑和修改简单的文本内容。当编辑框被激活且具有输入焦点时,就会出现一个闪动的插入符,表明当前插入点的位置。   ③ "旋转控件"(也称为上下控件)是一对箭头按钮,用户点击它们来增加或减小某个值。一个"旋转控件"通常附着于另一个控件,被附着的控件称为"伙伴窗口"。通常"旋转控件"和"编辑框"一起构成一个用于数字输入的"数字编辑框"。 ...
作者:不祥 qiaoyongbo张贴于2008-02-23 15:11:08.0,共阅读778次,回复0
Visual C++.NET编程讲座之五
 
...Visual C++.NET编程讲座之五 对话框的界面世界   摘要   本讲先来讨论对话框界面设计的一般过程和技巧,然后创建对话框类并用模式和无模式的方式来显示对话框。   对话框的界面设计过程   对话框是Windows应用程序中最重要的用户界面元素之一,它是通过对话框上的各种控件来和用户进行交互的。所谓"控件",是指具有一定功能的界面单元,如按钮、编辑框、列表框、组合框等。在这里,我们先来讨论对话框的界面设计过程。   1. 添加对话框资源   (1) 启动Visual Studio .NET,打开上一讲的单文档应用程序项目Viewer。   (2) 打开"项目"菜单,单击"添加资源",弹出"添加资源"对话框,如图1所示。 图1 "添加资源"对话框   (3) 在该对话框中,"导入"按钮是从外部导入一个已有的资源,"自定义"是用来创建一个新的资源类型。在"资源类型"中选定"Dialog",然后单击"新建"按钮。这时"添加资源"对话框消失,回到Visual C++ .NET开发环境。可以看到,系统为对话框资源自动赋给它一个默认的标识名称IDD_DIALOG1,且有两个按钮:"确定"和"取消",在左侧对话框编辑器窗口中,还会自动弹出工具箱窗口。   (4) 单击工具箱窗口上的" ",使工具箱窗口停靠在开发环境的左侧,不再会自动隐藏。   (5) 在对话框的空白处,单击鼠标 ...
作者:不祥 qiaoyongbo张贴于2008-02-23 15:08:02.0,共阅读710次,回复0
Visual C++.NET编程讲座之三
 
...第二讲 文档数据的读取和显示   摘要   本讲先来介绍程序各个类的关联机制,然后讨论文档的读过程及读操作,最后讨论文档数据的显示方法和技巧。   程序中各用户类的关联   在上一讲中,我们使用MFC应用程序向导创建一个单文档项目TextViewer。现在,我们打开该项目。可以看出,向导为TextViewer项目创建了以下几个类:   应用程序类CTextViewerApp,应用程序必须的运行入口,在上一讲已经讨论过。   主框架窗口类CMainFrame,用来负责窗口的标题栏、菜单、工具栏及状态栏等界面元素的操作。   文档类CTextViewerDoc,用来负责文档数据的读取和保存   视图类CTextViewerView类,用来显示文档显示,并可响应各种类型的输入(例如键盘输入)以及实现打印和打印预览等。   还有一个对话框类CAboutDlg,用来显示该应用程序的版本信息,是一个"关于"对话框。   需要说明的是,Visual C++ .NET将各个类的声明保存在头文件中,即以.h为扩展名,而将类的实现代码保存在以.cpp为扩展名的实现文件中。   那么,在MFC中上述的主框架窗口类、文档类和视图类的关系是怎样呢?我们来看一下。   将解决方案管理器切换到"类视图",展开CTextViewerApp类的所有节点,双击 ...
作者:Adding qiaoyongbo张贴于2007-12-21 15:30:15.0,共阅读803次,回复1
白乔原创:DOS时代-汉字的处理技术(三)
 
2.使用点阵字库来写字 读者看到上一节的内容,恐怕会产生一种担忧:如果要写出十几个,甚至上百个字,那该需要花多少时间来拼写点阵字模呢? 我们应该感谢那些致力于UCDOS等中文操作系统的开发人员,他们在为我们提供了完美的操作系统的同时还为用户和他们的软件本身提供了属于不同字体而又庞大的汉字库(分别取名为HZK16, HZK16K,HZK16F等等),他们一笔一划地为我们创造了一个又一个行业标准,避免了用户的大量劳动。 这些字库已成为标准字库,只要熟悉其中的结构特点,就不难写出不同的汉字来。首先,标准字库是二进制文件,那些好奇的读者是无法通过文本编辑器来直接观看它是否包含有那么多的0还是1的。利用C语言的fopen()函数时,必须指明打开方式为"rb",这是非常重要的。 其次,标准字库的数据内容是按位存放的,一个字节只存一个0或1是相当浪费的,这样一个16 * 16汉字就会占用265字节!实际上一个字节的每个位都可以用来标志1和0,这样一个16 * 16汉字只占用16*16/8=32个字节。很多初学者朋友在练习中总得莫名其妙地填上一个16点阵字模信息占用32Bytes,就是这个原因。 最后,这些汉字堆砌在一起到底是按什么顺序的呢?这就有必要了解区位码的含义。人们将汉字与一些字符分成94个区(区码1-94),每个区内含有94位(位码1-94),这正如我们开辟了一个word[94 ...
作者:不祥 bluejoe张贴于2004-05-24 21:21:05.0,共阅读5679次,回复2
白乔原创:VC之控件篇[4]
 
1 常见控件推荐 FlashPlayer程序至此打造完毕,以下向大家推荐一些比较有用的控件: 1.1 MsChart控件 控件名称:Microsoft Chart Control 6.0 (sp4) 控件类:CMsChart 控件简介:MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表,包括各种二维、三维的饼图、折线图、直方图、折线图、面积图等。 应用图例: 图40 MsChart控件应用图例 1.2 DataGrid控件 控件名称:Microsoft DataGrid Control 6.0 (sp5) 控件类:CDataGrid 控件简介:DataGrid控件是由微软提供的数据表格控件,需要与ADODC控件配合使用。通过使用DataGrid控件,可以很方便地实现数据表记录的浏览、增加、删除和修改功能。 应用图例: 图41 DataGrid控件应用图例 1.3 MsComm控件 控件名称:Microsoft Communications Control version 6.0 控件类:CMsComm 控件简介:MSComm 控件提供了一系列标准通讯属性和方法,使用它可以建立起应用程序与串行端口的联接。 应用图例: 图42 MsComm控件应用图例 以上画面来源于笔者自行制作的手机通讯软件FreePhone ...
作者:不祥 bluejoe张贴于2004-04-15 23:13:17.0,共阅读12780次,回复5
在VC中加载GIF动画
 
在VC中加载GIF动画 有一个CPictureEx类,用于加载GIF动画,不过该类是mfc封装类,对于不使用mfc的c++程序员来讲,不能使用。为了让该类能够让更多的人方便的使用,使其不再被局限于MFC,本人花时间改造了一下这个类,改造后,该类可以应用于任何MFC、 WTL/ATL及其它WINDOWS API编程。 由于原来的CPictureEx是继承于CStatic类,本人改造后,在CPictureEx中直接封装了一个窗口句柄HWND。 假设您在一个弹出式Dialog对话框中加载gif动画,您要做的就是在对话框中放一个控件,可以是BUTTON、STATIC等等。假设您加的这个控件的ID是IDC_FLASH,您的对话框窗口句柄是hDlg,则要使用CPictureEx,将非常简单。详情参见源代码。 PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的是可以做出动画,而且轻而易举,确实很COOL。 下面是详细的编程过程: 1. 新建项目:在VC6中用MFC新建一个基于对话框的GifDemo应用程序,接受所有缺省选项即可; 2.在项目中插入文件:把PictureEx.h,PictureEx.cpp文件copy 到项目 ...
作者:Oleg qiaoyongbo张贴于2007-12-20 15:36:17.0,共阅读1579次,回复3

页次: 1/10页 记录总数189 9 7 [ 1 2 3 4 5 6 7 8 9 10 ] 8 :