C/C++
文章平均质量分 89
BoyMgl
E-mail:miguoliang61620@gmail.com
展开
-
修正Windows中公共组件RichEdit的一个Bug
前言无可厚非,Windows是一款功能十分强大的系统软件,因此,其复杂程度可想而知,来自各个方面的Bug报告之多自然也不足为奇,好在微软能够及时修复。下文件要提到的这个Bug是笔者在编写一款文本编辑器时遇到的,并进行了修复,希望能对大家有所帮助,同时也希望微软公司进行修复。环境介绍Windows版本:Windows XP Home Edition SP2RichEdit版本:Rich Edit 3原创 2005-07-03 10:22:00 · 788 阅读 · 0 评论 -
IPLE 开发笔记 2
2008 年 9 月 29 日 国庆放假了,云南作为旅游大省,这个时侯真不适合出去凑热闹,所以安心呆在宿舍里准备简历,看看书吧~对于多图片处理,界面上不打算采用MDI管理窗口,也不打算多线程管理,因为线程控制实在有点复杂,毕竟多个线程是共享进程地址空间的,为了避免访问冲突,改用多进程的方式架构应用程序,即每次打开一个图片都新建一个进程,这样就不会有进程内的访问冲突了,就像Google原创 2008-09-29 17:20:00 · 439 阅读 · 0 评论 -
IPLE 开发笔记 4
10 月 18 日天生不擅长考试,但是很喜欢与人交流,为广州站的面试不想做过多的准备,只是梳理一下自己喜欢的方向的知识,我想这样自己会轻松一些,而且效率高。接着谈IPLE吧,本打算以原先那个函数库发布系统的,但是在成都的时候发现这个库的API设计造成了编码的麻烦,所以重新设计了API,只是改变一下参数列表,上次那个开发笔记已经提到过了,《编程匠艺》的思想和我相近,都是追求编码的质量,既然原创 2008-10-18 22:11:00 · 477 阅读 · 0 评论 -
IPLE 开发笔记 5 -- 关于巨型的一些新问题
10 月 20 日昨晚看了一部电影《通缉令》,里面有这么一句话:“子弹会走直线是因为你一开始就认为它是走直线的,现在你需要改变你的想法。”这句话给了我很大的启发,关于解决海量数据,我们需要更多的创新,因为一种狭义上的最优方法放到广义上也许就可能一点都不适用了。有限制的软件用起来是不爽的,所以我们要不断追求卓越~ 新一套的API就快完成了,但是就在这个时候还是面临着下面几个难题:1原创 2008-10-20 12:49:00 · 460 阅读 · 0 评论 -
IPLE 开发笔记 3
2008 年 10 月 5日 明天就收假了,实在不愿上课,因为还要赶好几场外省的招聘会。这几天一直在准备简历,投了微软,谷歌,百度,腾讯,请各个公司注意查收我的简历。这个假期有三天是忙通宵改简历,好累啊! 说说IPLE吧,简历里把IPLE也加进去了,虽然连一个测试版都没有,但是马上就会有了。 闲暇之余我就在实现我的那个纵向卷轴,因为理论上不是最优解决内存问题,干脆直原创 2008-10-05 21:17:00 · 499 阅读 · 0 评论 -
IPLE 开发笔记 6 -- Debug 日志加入
10 月 24 日Debug日志记录功能引入了IPLE,因为我喜欢采用防守式编程,任何地方都可能出现错误,看上去虽然非常保守,但是软件的稳定性确实要第一考虑!!而且,在程序中处理可能出错的情况,可以一定程度上减轻后面的测试工作。其他的不多说,现在整个系统还是处于接口的定义状态,也就是只写函数,不写函数实现,然后主程序直接调用这些函数,逻辑上检查无误了,再去写函数实现,面向接口编程就是这么原创 2008-10-24 11:43:00 · 450 阅读 · 0 评论 -
Vista 下 AnimateWindow 的问题
AnimateWindow函数是标准的Win32 API 函数,Win98 以上操作系统都可借助他来实现动感的窗口切换操作,在Vista下虽然也能实现,但是有一点让笔者不爽,那就是窗口阴影并不受AnimateWindow控制,实验表明,当淡出时阴影会先于淡出操作消失,很容易被肉眼识别,影响整体效果,所以Vista 下不建议使用 AnimateWindow。原创 2008-10-25 22:06:00 · 618 阅读 · 0 评论 -
HTTP协议处理框架 - 最简单的GET请求拼装和Response解析
框架头文件:/************************ * HTTP Parser framework * 2010-01-11 ************************/#ifndef __SIMPLE_HTTP_H__#define __SIMPLE_HTTP_H__#define GET_REQUEST_SIZE 1024#defi原创 2010-01-13 11:02:00 · 1706 阅读 · 3 评论 -
短小精悍的例子 -- C++中使用pair和make_pair在vector
这样做非常方便我们的开发,减少了代码量bool strict_weak_ordering(const std::pair a, const std::pair b) { return a.first < b.first; } int main() {原创 2010-01-27 17:13:00 · 3067 阅读 · 0 评论 -
Linux下遍历某文件夹下文件(不迭代进入子目录)
原文地址:http://www.wangzhongyuan.com/archives/487.html 以下是一个Linux/Unix下显示某一目录下文件列表的C程序,相当于最基本的ls命令的功能,显示的内容报告该目录下的子目录以及文件名: #include #include #include #include int main(int argc,char转载 2010-02-01 16:02:00 · 1974 阅读 · 0 评论 -
短小精悍的STL的sort例子
可以自定义比较函数,很实用,举一反三,加速你的产品迭代! struct data_node { int index; int value; } bool less_second(const data_node &m1, const data_node &m2) {原创 2010-01-13 10:50:00 · 501 阅读 · 2 评论 -
新书到手
今天逛书店有了意想不到的收获:《Windows 核心编程 (第五版·英文版)》,【美】Jeffrey Richter & 【法】 Christophe Nasarre,人邮,128.00 元《编程匠艺 -- 编写卓越的代码(中文版)》,【美】Pete Goodliffe, 电工, 79.00 元 第一本 非常经典,涵盖了Windows XP,Vista,Server 2原创 2008-09-29 17:09:00 · 466 阅读 · 0 评论 -
IPLE开发笔记 1
2008年9月27日 最近一直被巨型文件的处理所困扰着,比如4GB以上的位图文件,完全加载到内存中是完全不可能实现的,这个时候不得已采用了Windows的内存文件映射内核对象,而且对于单色图、16色图即使单纯的使用内存文件映射也无济于事,因为每个像素都不是整字节存储的,所以要现转换成整字节方式,这个时候就要创建临时文件。但是创建临时文件有个不好的地方,就是在显示图片时你还要给他转回去,麻烦原创 2008-09-27 14:45:00 · 438 阅读 · 0 评论 -
使用C++时应注意的小问题
使用C++时应注意的几个小问题关键字class与struct差别:我们知道在C++中定义类,关键字class和struct是等效的,但是在类定义中采用默认访问权限的方式声明成员函数/变量时,你会发现两者还是有所差别的,如下表: 默认访问权限原创 2006-04-29 15:06:00 · 1236 阅读 · 0 评论 -
查找组合可能的算法
引言 前些天朋友提出这么一个问题来,我编了一个算法给他,使用的是广义树存储结果,这样方便日后的查找工作,写成文章贴出来。 数据结构 广义树,具体数据结构参考代码,主要是通过存储下一种选择的可能性来去除由排列引起的重复结果,并通过此法存储整个结果。 准备工作 首先要对备选集合进行由小到大的排列,当然标示符也要重排,方便我们缩小备选范围。 算法描述原创 2008-07-26 09:18:00 · 1119 阅读 · 0 评论 -
Huffman表生成算法
引言 最近在解码JPEG,里面提到了Huffman表的使用,我开始很疑惑,为什么不直接用Huffman树?而且存的也好奇怪,一共十六个字节,每个字节存的是不同码长的编码个数,这对生成Huffman树来讲非常不方便,虽然笔者也编出了这样的程序,但是看着古怪的代码,那个恶心啊,就不说了,免得影响晚饭,起初笔者认为生成Huffman表首先要先生成Huffman树,但是太麻烦了,代码越写越不美原创 2008-07-29 16:42:00 · 2868 阅读 · 2 评论 -
彻底解决窗口闪烁问题
引言在绘制只自定义控件和画图时,倘若我们执行改变窗体大小等频繁激发窗体WM_PAINT事件的操作时,会发现自定义的控件会发生闪烁的情况,这很容易给人带来不专业的感觉,笔者经过研究发现了其中的问题所在,在此撰写成文,供大家参阅。网上的类似文章笔者在网上也搜索过很多类似问题的解决方法,其中方法大多归为如下几类:1、注册窗体类时去掉CS_VREDRAW 和 CS_HREDRAW2、在原创 2008-05-18 13:01:00 · 840 阅读 · 0 评论 -
关于 IMAPLAB
引言IMAPLAB 是笔者开发的一款数字图像处理软件,作为数字图像处理实验的平台,正在不断的完善中,在这里写一些开发笔记,希望里面的一些思想能和大家共享,一些不足得到大家指点。开发语言:C++开发平台:Plain Win32 APIs开发工具:Microsoft Visual C++ 2008 Express Edition操作系统:Microsoft Vista Home B原创 2008-05-20 21:45:00 · 795 阅读 · 3 评论 -
空间域数字图像处理技术(1)-反色
引言求反色是最简单的数字图像处理方法了,之所以还要写出来,是方便大家了解数字图像处理的一些预备工作。如何将图像存储在内存之中这里假设我们要处理的图像并不是很巨大,完全可以完全将其放置在内存中,其实存储图像很简单:灰度图像:一维数组方式,每个字节存放0-255来表示灰度级32位彩色图像:一维数组方式,连续的三个字节分别存放B,G,R三种颜色的值如何求反色新原创 2008-09-01 12:39:00 · 1224 阅读 · 2 评论 -
Linux/Unix 系统编程 -- 等待某个子进程结束的wait方法
如果我们有很多个子进程,那么,当任何一个子进程结束的时候wait都会返回。如果我们像等待其中某一个特定的进程结束(假定我们知道那个进程的进程ID),在老版本的Unix系统上,我们能够调用wait函数,并且比较它返回的进程ID和我们想得到的进程ID。如果这个结束的进程不是我们期望的进程,那么我们不得不保存这个进程ID和结束状态,然后再一次调用wait函数。我们需要继续做这样的事情直到我们期望的进程结原创 2008-09-18 09:13:00 · 614 阅读 · 0 评论 -
Linux/Unix 系统编程 -- 关于缓冲设置时容易出现的错误
以下这段程序是笔者在阅读《Unix环境高级编程(第二版)》时看到的一个例子,感觉非常有说明意义,这种内存控制错误在初学者,甚至是一些老手中都会出现,所以拿出来给大家分享一下,也提醒自己注意。 这里出现的问题是,当open_data返回时,它所占用的栈空间将被释放用于下一个函数的调用。但是标准I/O库将仍然使用这一块缓冲。混乱必定会导致错误的出现。为了更正这里的问题,我们应该把databu原创 2008-09-17 18:23:00 · 499 阅读 · 0 评论 -
C/C++ 中的移位操作拾遗
引言最近笔者一直在做JPEG的解码工作,发现用完全使用哈夫曼树进行解码比较费时,而使用表结构存储编码和值的对应关系比较快捷,但是也存在比较难处理的地方,比如解码工作通常是以位为单位的操作,这里必然会涉及到移位操作,而笔者之前对位的操作很少,经验很欠缺,经过这次历练终于发现了一个自己曾经忽视的东西,那就是C/C++中的移位操作容易出错的情况。1、什么样的数据类型可以直接移位char、sh原创 2008-07-06 22:54:00 · 7039 阅读 · 2 评论 -
IPLE 开发笔记 4
10 月 16 日昨天刚从成都赶回来,是去参加腾讯的招聘会了,比较忙,一共在成都待了5天,身心疲惫不堪,IPLE的开发基本也处于停滞状态,但是仍然在旅馆里有了很大发现,并进行了代码的重构。经过总结得出了一点API设计经验,即传标识符,不穿指针。// 最初的设计 void demoAPI(PBYTE pFileData, int width, int height);原创 2008-10-16 20:46:00 · 573 阅读 · 2 评论 -
立即发送数据包的方法,摘自PostgreSQL
TCP_NODELAY 标志:立即发送包,默认情况下是小包拼成大包发送。原创 2010-07-05 16:11:00 · 852 阅读 · 0 评论