
编程:C++/VC
文章平均质量分 75
铁文
这个作者很懒,什么都没留下…
展开
-
代做各种报表和打印程序
示例程序下载地址:http://download.youkuaiyun.com/detail/tiewen/7426811截图:原创 2014-06-03 20:18:03 · 1267 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第12章 非常规策略
第12章非常规策略 当你在调试中陷入困境时,有时候必须采取一些非常规的手段。本章将要介绍一些调试技术,当你正常调试过程不能成功解决问题时可以尝试使用这些技术。 首先,我想给我所谓的“非常规策略”(desperate measures)下—个准确的定义是很重要的事。我们先来说说非常规策略不是什么:非常规策略不等于最后的方法。这些技术不是当你放弃了所有的希望、不能想出其他任何办法的转载 2013-04-25 13:09:24 · 1480 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第11章 COM调试
第11章 COM调试 调试COM代码对很多开发人员来说是很件令人沮丧的事情,特别是如果你对Windows平台,尤其是COM编程不熟悉的话。成功地解决一个错误常常需要涉及到很多领域的知识和技巧,包括: •对操作系统构造的深刻理解,例如进程、线程和DLL等。 •对与COM编程有关的规则的深刻理解,例如引用计数,内存分配和线程。 •对与网络和安全有关的细节及其含义转载 2013-04-25 10:15:22 · 4055 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第8章基本调试技术
第三部分调试技术第8章基本调试技术 本章回答了很多Windows下调试程序的常见问题,主要是基本的调试技术。所以它看起来可能有点像Windows调试常见问题解答,其中很多是我在调试新闻组里见到的问题。8.1普通调试技术我应该采取什么步骤使得我调试代码的能力最大? 请釆取以下步骤: •重定位你的程序的可执行代码以防止虚拟地址空间冲突。关于虚拟地址空间冲突和重转载 2013-04-15 13:03:50 · 3030 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第10章 调试多线程程序
第10章调试多线程程序 线程。当一个可怜的灵魂不得不在多线程环境中重现并诊断一个问题时,一个像线程这样优雅的结构所带来的痛苦之大是令人惊奇的。无论设计多么简单而直接,在程序中多引入仅仅一个线程都会带来令人吃惊的调试困难。所以,不管什么时候,做出在程序中使用多线程的决定都必须慎之又慎。 如果你没有计算多线程将给程序的正确性带来的影响和调试时将耗费的额外时问,最好不要莽撞地引入多线转载 2013-04-23 14:25:58 · 6951 阅读 · 0 评论 -
Windows程序调试----第二部分 调试工具----第7章 使用Visual C++调试器调试
本书由铁文手打整理,仅为方便个人查阅摘录如喜欢本书,请购买正版 第7章使用Visual C++调试器调试 如果要寻找并消除错误,Visual C++调试器将是你最好的朋友。它有好几个著名的特性使得它很高效,也很好用,下面是我喜爱它的一些原因: •Visual C++调试器完全嵌入到了Visual C++开发环境,允许用户直接从源代码窗口使用调试器进行设置断点和转载 2013-04-11 16:21:44 · 5810 阅读 · 1 评论 -
Windows程序调试----第二部分 调试工具----第6章 在Windows中调试
本书由铁文手打整理,仅为方便个人查阅摘录如喜欢本书,请购买正版 第二部分调试工具第6章在Windows中调试 也许你以前还没有遇到过下面所述的事情,但迟早有一天它会发生在你身上。你把你的程序给某个重要的人物使用,比如你最重要的客户或者是你公司的老板,不幸的是,程序在他们那里运行时崩溃了。他们记不起他们执行了些什么操作,但有一点是肯定的,这个错误很严重,而且,程序的崩溃导致转载 2013-04-09 16:59:27 · 3768 阅读 · 0 评论 -
Windows程序调试----第一部分 调试策略----第3章 使用断言
第3章使用断言 在第2章“编写便于调试的C++代码”中,我介绍了早期Windows程序中的调试。在ANSI C出现之前,C语言的类型功能并不强大,也不支持函数原型。Windows程序都是在16位存储介质基础上开发的,这里函数指针为长指针,而数据指针为短指针。程序员必须像人工编译器一样,一行行地检查代码,保证所有的函数参数的数据类型都能匹配,指针长度都正确,并且在必要的时候进行强制类型转换转载 2013-03-27 15:14:36 · 3548 阅读 · 0 评论 -
Windows程序调试----第一部分 调试策略----第4章 使用跟踪语句
第4章使用跟踪语句 在20世纪70年代中期,C编程语言作为一种低层、多用途的编程语言出现。我并不知道第一个有意义的C语言程序是什么样的,但我可以信誓旦旦地说它是有bug(错误)的,而且作者肯定是使用printf命令行语句来对那些bug进行调试的。同样地,Microsoft Windows在80年代中期作为IBM个人计算机的图形用户接口出现,我同样不知道第一个有意义的Windows程序转载 2013-03-28 14:19:52 · 2332 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第9章 内存调试
第9章内存调试 能够方便高效地进行动态内存分配,是C++编程语言的重要优点之一;而调试时容易错误使用动态分配的内存也是其最大的缺点之一。Windows程序也可能同样存在与系统资源泄漏或者堆栈相关的内存问题。内存问题是Windows程序错误的常见来源之一、而且如果没有合适的工具进行调试:它们将是最难以追踪到的错误之一。 动态内存分配错误有以下两种基本类型:内存错误和内存泄露。当一转载 2013-04-19 13:26:31 · 5458 阅读 · 1 评论 -
Win95+VC6+IE4+MSXML3时的XMLHTTP解决方法
首先,在Win95+VC6+IE4+MSXML3下,使用MSXML3的XMLHTTP在open时会发生错误(抛出异常,异常码为EFAIL,异常描述为空),个人认为是wininet和urlmon的问题(本人并未深入确认,本想安装IE5/5.5再测试,但无奈该版本太古老,找不到安装包,只能找到所谓绿色版)。既然MSXML3的XMLHTTP无法使用,只好使用CInternetSession自行编写了原创 2013-07-29 19:14:49 · 1494 阅读 · 0 评论 -
VC6中cpp文件名不能包含.obj
今天整理了一下以前的代码,为类和函数增加命名空间,并且将文件名更改为命名空间以.号连接。改完之后发现一个函数Joytech::Asyn::Object::Wait死活通不过链接。反复查看代码,并没有发现错误。后来经过研究,发现Joytech::Asyn::Object空间下的任何函数和类都无法通过链接。将Joytech::Asyn::Object空间下的函数和类移动到全局命名空间,仍然未能通过链接原创 2013-07-31 17:30:44 · 1361 阅读 · 0 评论 -
修改文件版本信息(PE文件版本信息、资源Version)
修改PE文件版本信息(简单演示)原创 2014-04-14 17:46:58 · 16224 阅读 · 7 评论 -
色谱工作站(2)
对上篇中提到的问题,还有一种解决办法。在C#中,除了public、protected和private访问修饰符之外,还有一种,叫internal,并且还能和protected组合成protected internal。声明的可访问性含义public 访问不受限制。protected 访问仅限于包原创 2014-03-03 10:07:37 · 1043 阅读 · 0 评论 -
色谱工作站
最近在重构色谱工作站程序,发现有几个类有重复性的代码(为了方便说明问题,去掉了不相关的代码):class CAnalysisSample{protected: CAnalysisSample(CAnalysisSystem* pSystem):m_pSystem(pSystem){}public: inline CAnalysisSystem* GetSystem()原创 2014-02-28 11:30:22 · 1368 阅读 · 0 评论 -
进度反馈慎用SendMessage
由于工作需要,编写了一个解析300M字符串的MFC小程序。为了显示出当前的解析进度,使用了MFC的消息:void WorkThreadFunction(){ UIWnd->PostMessage(WM_PROGRESS, BEGIN, NULL); while(notEnd()) { ...... UIWnd->PostMe原创 2013-08-27 17:19:37 · 997 阅读 · 0 评论 -
VC6下CreateThread的回调函数无法直接用函数模板生成,需要一层分装
CreateThread的回调函数格式为:DWORD WINAPI XXX(LPVOID lpv)使用示例:DWORD WINAPI CB(LPVOID lpv){ return 0;}CreateThread(NULL, NULL, CB, NULL, NULL, NULL);当把CB更改为模板函数时,会发生错误:error C2664: 'CreateTh原创 2013-08-08 09:52:57 · 1390 阅读 · 0 评论 -
boost::bind/function的索引占位符的实现
boost::bind/function的索引占位符的实现说明:如果代码中的对boost库的使用有误(如大小写不匹配,丢失连字符等),请勿奇怪。本文仅用于讲解,请把它们当成伪码。所谓索引占位符,就是指在执行bind时,传入的参数不是具体的数值,而是一个能够起到索引作用的对象,该对象能够从传递给(bind函数返回的函数对象的)函数调用的实参中取得对应的数值,如:int callback(原创 2013-08-07 15:15:24 · 2409 阅读 · 1 评论 -
索引占位符的一些操作
索引占位符的一些操作在boost中,索引占位符有9个:_1,_2,..._9上一篇中,展示了如何取得最大的索引号,TMaxIndex::Value为1,TMaxIndex::Value为9,TMaxIndex::Value为0;TMaxIndex::Value为TMaxIndex::Value、TMaxIndex::Value、TMaxIndex::Value...中的最大值本篇将原创 2013-08-07 16:18:55 · 1253 阅读 · 0 评论 -
在VC6中实现Boost::Bind/Function
在VC6中实现Boost::Bind/Function由于VC6不支持偏特化,所以直接使用Boost::Bind/Function只会导致编译错误。下面来看看如何自行实现Bind/Function功能。首先看看Bind/Function的使用方式:1. 绑定函数并调用int callback(int a, int b){return a + b;}int result1 =原创 2013-08-06 17:17:31 · 1306 阅读 · 0 评论 -
Windows程序调试----第一部分 调试策略----第2章 编写使于调试的C++代码
第2章编写使于调试的C++代码 毫无疑问,当你在写C++代码的时候,你的头脑中会考虑很多事情。代码是否正确,是否执行得是够快,是否可靠,是否便于维护,工程是否会按时完成,人们是否会喜欢这个结果?然而,调试这段代码的能力应该也在你的考虑之列。 C++是一种非同寻常的编程语言,有惊人的产生错误和避免错误的能力。在这一章里,我列举几种技术帮助你从战略上书写便于调试的C++代码。这些技转载 2013-03-19 14:20:28 · 2714 阅读 · 0 评论 -
Boost程序库完全开发指南----第6章 正确性与测试
第6章正确性与测试 测试对于软件开发是非常重要的,程序员——尤其是C++程序员更应该认识到这一点。 但C/C++只提供了很有限的正确性验证/测试支持——assert宏 (没错,它是一个宏,虽然它违背常识使用了小写的形式),这是很不够的。C++98标准中的std::exception能够处理运行时异常、但并不能检查代码的逻辑,故C/C++都缺乏足够的、语言级别的工具来保证软件的正转载 2013-03-20 12:37:41 · 3336 阅读 · 0 评论 -
重定义不同基类的同名虚函数
http://ilewen.com/questions/6423 重定义不同基类的同名虚函数 class I{public: virtual void foo() = 0;};class J{public: virtual void foo() = 0;};class C : public I, public J{转载 2012-05-11 15:38:59 · 2090 阅读 · 0 评论 -
将ActiveX中的数据导出为js中的对象
假设要开发一个ActiveX控件,其中有一个方法GetMyData(),它返回一个对象;该对象拥有两个属性,id和name。现在,我们想要在js中使用这个对象;var ax = new ActiveXObject("...");var mydata = ax.GetMyData();mydata.id ...mydata.name ...通过一般的继承自IDispatch或原创 2012-05-08 10:23:41 · 841 阅读 · 0 评论 -
关于 Boost.PropertyTree字符集
http://notes.xj-labs.net/?p=52 Boost 目前是支持 UTF8 的,但是不能用 直接用 Unicode。所以,如果要存储宽字符就有点麻烦需要用到 Boost 提供的 utf8_codecvt_facet 做转换。下面就是一个存储 wchar_t 的 Sample:和之前的其实差不多,有 2 点主要不同。一是用了 wptree 替换了 ptree。二是转载 2012-04-26 15:13:52 · 1833 阅读 · 0 评论 -
Linux操作系统下C++头文件、库文件等搜索路径
Linux操作系统的头文件和库文件搜索路径发布时间:2008.02.20 06:14 来源:赛迪网 作者:kornInclude的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()写在specs内的后来用-D -I -L指定的转载 2012-02-26 11:56:13 · 2358 阅读 · 0 评论 -
Debian下编译、运行和调试C++程序
本人使用的是Debian 6.04testing版首先安装g++(需要root权限):gksu apt-get install g++安装完成后会出现:update-alternatives: 使用 /usr/bin/g++ 来提供 /usr/bin/c++ (c++),于 自动模式 中。编写测试程序:#include using nam原创 2012-02-25 21:59:09 · 6075 阅读 · 0 评论 -
忍不住还是要发篇文章:关于VC6中(VARIANT)BSTR传入传出发生RtlSizeHeap(user breakpoint at address)的问题
As it turns out, I was able to determine why I was getting this RTLSizeHeap problem. Being a novice to COM and ATL, I had a class that stored a string (_bstr_t) value. As you would expect, I had the n原创 2006-06-23 11:16:00 · 3280 阅读 · 0 评论 -
消息线程,对MFC消息机制的局部模拟
// WorkerThread.h: interface for the CWorkerThread class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_WORKERTHREAD_H__E574C05E_5792_4A49_8021_6BBDD7E0C6DA原创 2006-06-05 18:30:00 · 1258 阅读 · 0 评论 -
在CDHTMLDialog中扩展浏览器脚本以及在HTML中增加MFC消息响应
http://blog.youkuaiyun.com/jinhill/article/details/5253093 扩展浏览器脚本假设我们创建了一个CMyDHTMLDialog对话框类,包含两个文件MyDHTMLDialog.h和MyDHTMLDialog.cpp1、让类自身支持自动化 EnableAutomation(); //只要是从CCmdTarget派生下转载 2012-05-10 10:24:10 · 954 阅读 · 0 评论 -
STL算法学习
转自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.html STL算法学习STL算法学习,小结如下:前提: 下载stl源码: http://www.sgi.com/tech/stl/download.html打开网页: http://www.sgi.com/tech/stl/stl_ind转载 2013-02-05 15:55:08 · 534 阅读 · 0 评论 -
匈牙利命名法和类型系统
匈牙利命名法的原意,可参考:http://blog.youkuaiyun.com/tiewen/article/details/8536773 在Windows中,常用cx表示宽度,cy表示高度,它们都是整数。在“阅读”代码时,如果发现cx=cy或cy=cx之类的语句,我们知道它们很可能是个错误。我强调“阅读”二字,是因为,如果不睁大眼睛、详细仔细地审查代码,很难发现cx=cy或cy=cx之类的错误,原创 2013-02-22 10:28:59 · 424 阅读 · 0 评论 -
异常处理方法,同步VS异步
http://bbs.ustc.edu.cn/cgi-bin/bbsgcon?bn=CPlusPlus&fn=G431EF019&num=224 VC默认情况下是同步异常捕捉,所以只有throw才算是正式异常,而 对内存访问出错和除零则不保证正能正确解栈(可能导致栈上的对象 未被析构) 1. Windows SEH 与 C++ Exception 1)转载 2013-03-29 16:19:59 · 1312 阅读 · 0 评论 -
C++编程惯用法----第1章 抽象(其他章节不咋样,不转载了)
第1章抽象 数据抽象(dataabstraction)是面向对象设计的一个重要概念。数据抽象要优先于面向对象的设计;然而,随着C++这样直接支持数据抽象的语言变得流行起来,它的应用范围也变得越来越广泛。 抽象数据类型(abstract data type,也称为ADT)是一种由用户定义、拥有明显不同的两部分的类型: 一个公用的接口(public interface),转载 2013-03-12 17:16:39 · 1469 阅读 · 0 评论 -
C++编程惯用法----代译者序、序、第0章 简介
代译者序 “It is one o fthose books that every professional C++ programmer should have read as it is full of good advice based on a wealrh of experience.”——ACCU主席Francis GJass borow 是的,上面的评价就是A转载 2013-03-12 15:14:16 · 1157 阅读 · 0 评论 -
汇编中的ILT
http://mocheng.wordpress.com/2006/07/17/what-is-ilt%EF%BC%88incremental-link-table/这两天研究了一下DLL的import/export原理,看了一些资料,无意中发现网上有一篇文章存在错误,而这篇文章流传还甚广,恐怕也误了不少子弟,觉得有必要说一下:)随便用哪个搜索引擎来搜索“C++ 虚函数 ILT转载 2013-02-26 19:58:53 · 1419 阅读 · 0 评论 -
Windows程序调试----第一部分 调试策略----第1章 调试的过程
第一部分调试策略第1章调试的过程 虽然可能存在无数种错误,与此对应,潜在的也存在无数种调试策略,但是大多数的错误还是可以通过普通的调试过程来消除的。本章就来介绍这些过程。1.1错误的调试五步曲 首先让我们来看一下一个不太有效的调试过程。像Elisabeth Kuble-Ross在她的书《On Death and Dying》中提到的悲哀五步曲那样,低效率调试过程的五步曲转载 2013-03-08 13:38:46 · 3920 阅读 · 0 评论 -
Windows程序调试----前言
前言 调试Windows程序是项浩大、复杂的工程,一些介绍有关Windows调试的所有方面的书,动辄就能达到这本书的两倍厚。但是全面介绍的书籍有一个缺点.就是它太厚了,令人望之生畏,恐怕很少有人想读它。所以,这本书中,我们圈定了一个范围,将重点放在Windows调试的某些方面。下面介绍这个范围是如何挑选的。 本书最基本的动机建立在这样的信念上:如果程序员能更好地获取调试知识,他转载 2013-03-07 17:19:39 · 1286 阅读 · 0 评论 -
C++11
http://zh.wikipedia.org/wiki/C%2B%2B11转载 2013-02-23 21:58:21 · 413 阅读 · 0 评论 -
Windows程序调试----简介
简介 错误是无处不在的。程序产生错误的原闵很多,也有很多防止、检侧和消除错误的策略、工具和技术。随着软件开发技术的提高,软件的复杂程度也提高了,调试工怍更难于进行。程序员们为开发出完美的无错误软件而不懈地努力。伹这个目标在现实中是很难实现的。 复杂性是开发无错误软件的主要障碍。即使是开发最普通的程序,不经过细致的测试和调试,也不能断定其中不含任何错误。复杂庞大的程序是错误产生率转载 2013-03-07 17:21:13 · 1633 阅读 · 0 评论