- 博客(32)
- 资源 (1)
- 收藏
- 关注
转载 WM_PAINT WM_ERASEBKGND
<br /><br />当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再发送WM_PAINT消息.<br /> 如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase 为TRUE,如果处理WM_ERASEBKGND时返回TRUE,BeginPaint标记pt.fErase为FALSE.<br /><br />
2011-01-06 22:26:00
619
转载 MFC程序的消息处理顺序
<br />MFC应用程序中处理消息的顺序:<br />1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc<br />2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数<br />3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数<br />4.OnWndMsg()
2010-12-22 10:27:00
644
转载 H264-MPEG4——压缩格式的变革
h.264 和 mpeg-4 的关系:h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分。 mpeg-4的初衷是将dvd质量的图像码流从每秒6兆降低到1.5兆,将高清电视的码流从每秒几十兆降低到6~8兆。要实现这样的编码压缩水平,就要用到一种叫avc(advanced video codec)的技术。国际电联(itu)将这项技术命名为h.264标准,mpeg 把这项技术放到mpeg-4标准里的第10章(part 10)。这就是mpeg-4和h.
2010-12-22 10:21:00
734
转载 H264-MPEG4——压缩格式的变革
<br /> h.264 和 mpeg-4 的关系:h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分。<br /> mpeg-4的初衷是将dvd质量的图像码流从每秒6兆降低到1.5兆,将高清电视的码流从每秒几十兆降低到6~8兆。要实现这样的编码压缩水平,就要用到一种叫avc(advanced video codec)的技术。国际电联(itu)将这项技术命名为h.264标准,mpeg 把这项技术放到mpeg-4标准里的第10章(part 10)。
2010-12-22 10:21:00
651
转载 DLL导出资源问题的解决
<br />以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上AFX_MANAGE_STATE(AfxGetStaticModuleState())。一直不明白这样做的含义,也一直没有这样做,而且代码也工作得好好的,所以感觉这好像一句废话。 <br />最近的项目中,需要在DLL里使用MFC生成界面,这才发现一旦资源放在不同的动态库里,而且还和多线程搅和在一起的时候,事情就变得异常的复杂,以前对MFC的一知半解已经不足与应付了。程序莫名的崩溃,莫名的ASSERT
2010-12-22 10:18:00
686
转载 float,double等精度丢失问题
问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么?来自MSDN的解释:http://msdn.microsoft.com/zh-cn/c151dt3s.aspx为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式。 这是 CPU 所采用的浮点数据表示形式的副作用。 为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果。 导致此行为的原因是下面之一:十进制数的二进制表示形式可能不精确。使用的数字之间类型不匹配(例如,混合使用浮点型和双精度型)。为解决此行
2010-10-30 09:43:00
1566
转载 OnEraseBkGnd与OnPaint的区别与联系
<br /><br />在OnEraseBkGnd中,如果你不调用原来缺省的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面,由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况下是白刷),而随后你又自己重画背景造成屏幕闪动.<br />OnEraseBkGnd不是每次都会被调用的.如果你调用Invalidate的时候参数为TRUE,那么在O
2010-10-17 16:59:00
1010
转载 Invalidate与UpdateWindow的区别
<br /><br />Invalidate让客户区无效,处于可以重画的状态,并不会立即重画;UpdateWindow可以立即重画,但是它要先判断客户区是否为空(即是否为无效),不空UpdateWindow不执行,为空才执行重画。<br />Invalidate与UpdateWindow的区别如下:<br />void Invalidate( BOOL bErase = TRUE );<br />该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个窗口由非前台窗口变成了前台窗口
2010-10-17 16:57:00
755
转载 C/C++中time.h
1.概念在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间
2010-10-17 16:51:00
648
转载 内存越界
<br /> <br />1. 原理分析<br />经常有些新C++程序员问:C++的类的成员个数是不是有限制,为什么我加一个变量后程序就死了?或者说:是不是成员变量的顺序很重要,为什么我两个成员变量顺序换一换程序就不行了?凡此种种之怪现象,往往都是内存访问越界所致。<br /><br />何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明申请的是100字节的空间,但是你由于某种原因写入了120字节,这就是内存访问越界。内存访问越界的后果是:你的写入破
2010-09-23 16:03:00
1827
转载 Sizeof 使用
<br />对于很多C++新手而言,对象或变量的sizeof信息总是让人捉摸不透,以下程序列举了几个典型的sizeof信息,希望能解答大家在使用sizeof时的疑问。<br />在列举这几个例子前需要说明以下几点:<br />1、在Win32平台上,指针长度都是4字节,char*、int*、double*如此,vbptr(virtual base table pointer)、vfptr(virtual function table pointer)也是如此;<br />2、对于结构体(或类),编译器会自动
2010-09-23 16:00:00
885
转载 DirectShow编程(3.8) - 关于DirectShow - 插件发布者(Plug-in Distributors)
<br /><br />3.8. 插件发布者(Plug-in Distributors)<br /> Plug-in Distributors(PIDs)是扩展filter graph manager的一种方法。一个PID是filter graph manager在运行时聚合的一个COM对象。应用程序通过filter graph manager来进入PID。<br /> 当filter graph manager被要求查询一个它不支持的接口时,它会搜索注册表项:<br />
2010-09-23 15:54:00
508
转载 DirectShow编程(3.6) - 关于DirectShow - DirectShow中的时间和时钟
<br />3.6. DirectShow中的时间和时钟<br /> 这一节主要概述DirectShow体系中时间和时钟。<br />3.6.1. 参考时钟<br /> Filter Graph Manager的一个功能,能够以同一个时钟来同步所有在graph中的filter,称作参考时钟(reference clock)。<br /> 任何暴露了IReferenceClock接口的对象都能够作为一个参考时钟来使用。参考时钟可以由一个DirectShow filter来提供,例
2010-09-23 15:53:00
554
转载 DirectShow编程(3.7) - 关于DirectShow - Graph动态重建(Dynamic Graph Building)
<br /><br />3.7. Graph动态重建(Dynamic Graph Building)<br /> 如果你需要修改一个已经存在的filter graph,你可以停止,修改后再重新启动它。这通常是一种最佳的解决方法。但是,在某此情况下,你可能需要在一个graph处于运行状态时来修改它,比如:<br /> *应用程序在进行视频回放时需要插入一个(视频滤镜filter)Video effect filter;<br /> *source filter在播放的过程中改
2010-09-23 15:53:00
694
转载 DirectShow编程(3.5) - 关于DirectShow - DirectShow中的事件通告
<br /><br />3.5 DirectShow中的事件通告<br /> 这一节主要描述在directshow filter graph中事件是怎样发生的,以及应用程序如何接收事件通告并响应它们。<br />3.5.1 概述<br /> 一个filter通过发送一个事件通来通知filter graph manager某个事件已经发生。这些事件可以是一些预知的事件比如流结束事件,也可以是一些异常如render流时失败。一部分事件由filter graph manager自己处理
2010-09-23 15:52:00
567
转载 DirectShow编程(3.4) - 关于DirectShow - Filter Graph中的数据流
<br /><br />3.4. Filter Graph中的数据流<br /> 这一节主要描述媒体数据是如何在filter graph中流动的。如果你只是为了编写DirectShow应用程序,你不需要知道这些细节,当然,知道这些细节对于编写directshow应用程序仍然是有帮助的。但是如果你要编写directshow filter,那么你就必须掌握这部分知识了。<br />3.4.1. DirectShow数据流概述<br /> 在这一部分先粗略地描述一下DirectShow中数
2010-09-23 15:51:00
524
转载 DirectShow编程(3.3)- 关于DirectShow - 构建Filter Graph
<br /> <br />3.3. 构建Filter Graph<br />3.3.1. 用于构建Graph的组件<br /> DirectShow提供了一系列用于构建filter graph的组件,包括:<br /> *Filter Graph Manager。这个对象用于控制filter graph,支持IGraphBuilder、IMediaControl和IMediaEventEx等许多接口。所有的directshow应用程序都需要在某些地方用到这个对象,虽然在有些情况下,是
2010-09-23 15:50:00
540
转载 DirectShow编程(3.2)- 关于DirectShow - Filter Graph和它的组件
<br /><br />3.2. Filter Graph和它的组件<br /> 这一节描述了DirectShow的主要组件,为DirectShow应用程序和DirectShow Filter开发者提供一个介绍。应用程序开发者可以忽略掉很多底层部分,但是,了解底层对于理解DirectShow架构还是很有帮助的。<br />3.2.1. 关于DirectShow Filter<br /> DirectShow使用一个模块化的架构,每个处理过程都由一个叫做filter的COM对象来实
2010-09-23 15:48:00
488
转载 Microsoft CryptoAPI加密技术(二)
<br /> <br />Microsoft CryptoAPI加密技术(二)<br />作者:Cuick<br />下载本文示例源代码<br /><br />上次我们讲了Microsoft CryptoAPI的构成以及会话密钥的使用。接下来我们将看一下公私密钥对的使用、HASH算法、数字签名等技术。<br />一、 公用密钥加密技术<br /><br />公用密钥加密技术使用两个不同的密钥:公钥和私钥。私钥必须安全的保管好不能被外人知道,而公钥可以告诉任何人,只要他需要。通常公钥是以数字证书的形式
2010-09-23 15:45:00
607
转载 Microsoft CryptoAPI加密技术(一)
Microsoft CryptoAPI加密技术(一)作者:Cuick下载本文示例源代码在这个信息爆炸的时代,我们不得不对信息的安全提高警惕。加密作为保障数据信息安全的一种方式,越来越受到人们的关注。下面,我将把自己对Microsoft CryptoAPI的一些肤浅的理解与大家共享,有什么不妥之处望不吝赐教。一、 加密方法:当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,密码学已经取得了巨大的进展。大体来说有以下几种形式。1、
2010-09-23 15:38:00
530
转载 字符编码
<br />(一)Unicode与UCS的历史恩怨 <br /> ASCII及相关标准<br /> 地球人都知道ASCII就是美国标准信息交换码的缩写,也知道ASCII规定用7位二进制数字来表示英文字符,ASCII被定为国际标准之后的代号为ISO-646。由于ASCII码只使用了7个二进制位,也就是说一个字节可以表示的256个数字中,它仅使用了0~127这128个码位,剩下的128个码位便可以用来做扩展,用来表示一些特定语言所独有的字符,因此对这多余的128个码位的不同扩展,就形成了一系列ISO-8859
2010-09-23 15:20:00
1027
转载 C与C++
C语言是C++的子集,C++是C语言的超集。C++是在C语言的基础上,添加了面向对象和泛型编程的功能后,扩展而成的。C语言是一种可移植的系统语言,起源于Unix操作系统的开发。C语言是一种灵活高效的高级程序设计语言,但是同时也具有一些面向机器的低级语言特征,所以有人称它是一种中级语言。1)起源虽然早在1957年4月IBM(John W. Bacus)就推出了第一个高级程序设计语言FORTRAN(FORmula TRANslation公式转换),1958年GAMM/ACM(John W. Backus、Pet
2010-09-23 14:42:00
1295
转载 DLL(Dynamic Link Libraries) 专题
目录引言调用方式MFC中的DLLDLL入口函数关于约定关于DLL的函数模块定义文件(.DEF)DLL程序和调用其输出函数的程序的关系作者引言比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;
2010-09-23 14:14:00
659
转载 getsockopt/setsockopt 函数说明
<br /><br />【 getsockopt/setsockopt系统调用】 <br /> <br />功能描述: <br />获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。<br /><br />用法: <
2010-09-11 21:59:00
5308
转载 getchar()和EOF总结
大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming Language(SecondEdition)<br />第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。<br /><br /><br />其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU
2010-09-10 20:02:00
635
转载 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
<br />参考文献:http://www.fsf.org/licensing/licenses/<br /> <br />现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。<br />这里我们来看四种最常用的开源协
2010-09-10 16:19:00
551
转载 DirectShow编程(3.1)- 关于DirectShow - DirectShow体系概述
<br />3. 关于DirectShow<br />3.1. DirectShow体系概述<br /> 多媒体的难题<br /> 处理多媒体有几个主要的难题:<br /> *多媒体流包含了巨大的数据量,而这些数据都必须非常快地被处理<br /> *音频和视频必须同步,因此它们必须在同一时间开始或停止,并以同一速率播放<br /> *数据可能来自很多的源,如本地文件、网络、电视广播和视频摄像机<br /> *数据有各种各样的格式,如AVI、ASF、MPEG和DV<br /
2010-09-09 19:57:00
554
转载 DirectShow编程(2)- 开始DirectShow旅程
2. 开始DirectShow旅程 这个章节的内容主要是编写DirectShow应用所需的一些基本概念,可以把它当作一个高级介绍,理解这些内容只需具备一般的编程和有关多媒体的知识。2.1. 设置DirectShow开发的编译环境 这节内容描述了如何来编译DirectShow应用。你可以使用命令行形式来编译一个工程,也可以在Microsoft Visual Studio集成环境下(包含VC++)实现。 头文件: 所有的DirectShow应用都需要Dshow.h这个头文件,某些Dire
2010-09-09 19:54:00
417
转载 DirectShow编程(1)- DirectShow介绍
<br /> 最近一段时间,在编写DirectShow应用程序时常常遇到一些问题,原因是对DirectShow技术没有较全面地掌握,对各个接口间的关系以及filter与filter之间连接的内部过程等都只是一知半解,除了再仔细地看看DirectShow的基类库源文件之外,觉得也很有必要从头到尾看一遍DirectShow的MSDN文档。在看时顺便有选择地翻译出来,一来以便以后再看时可以轻松点,二来也敦促自己不能不求甚解早早看看了事。在翻译的过程中也加了一些自己的补充,因为觉得某些MSDN章节实在是过于简单还有
2010-09-09 19:51:00
517
转载 谈谈父窗口和所有者窗口
<br />一、概念和区别<br /> 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。<br /> 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-child关系。前者称之为拥有/被拥有关系,后者称之为父/子关系。在这篇文字中,我把owner窗口称之所有者窗口。
2010-09-09 17:57:00
586
转载 C++容器 java集合
<br />一、集合类<br /> 对象的集合,指如链表,数组,队列这一类的数据结构。在C++标准库中把这些成为Container, 在Java中称为Collection。<br /> <br />C++STL常用Container: vector, list, map, set, queue, stack, priority_queue<br />Java基础类:ArrayList, HashMap, HashSet<br /> <br />注意:<br />在C++中采用了模板适应各种类型。Java中没
2010-08-30 14:16:00
1579
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人