VC
Scott_Zheng
系统分析师、信息系统项目管理师,20年+开发经验,多年管理经验,C/C++ on windows/linux, SaaS。
展开
-
使用SAX解析XML
为什么使用SAX?因为SAX的效率较高,占用内存小,内存使用量只为一个节点的大小,所以是轻量级XML解析工具。但也由此带来了一些负面的东西,SAX是只向前的和只读的。在数据的备份和恢复时,如果数据备份为XML形式的话,那么就可以用SAX了,因为DOCUMENT太巨大,如果备份的数据有上G的话,这根本就是不现实的。SAX的使用在StdAfx.h中添加:#import raw_i原创 2006-05-30 12:42:00 · 1845 阅读 · 0 评论 -
CoInitialize浅析一
大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境。但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索出答案,没错,是以线程为单位。今天我们就稍微再深入一下,通过分析CoInitialize的具体实现来印证我们的想法。我们先来看看CoInitialize的汇编769B2A24原创 2011-11-15 14:58:44 · 21340 阅读 · 0 评论 -
CoInitialize浅析二
最近工作比较忙,在粗略分析了CoInitialize之后我们一直没有再深入研究,下面言归正传。前面我们初步了解到了CoInitialize其实是通过调用CoInitializeEx来实现功能的,而后者最终调用了wCoInitializeEx函数,如果能进一步了解这个函数的内部实现,那么我们对COM环境的初始化过程就比较清晰了。好,我们下面继续看wCoInitializeEx的汇编代码,这次我们分段原创 2011-11-21 23:56:38 · 4072 阅读 · 3 评论 -
VC在debug版和release版中分配堆的区别
问题现象及测试代码 前几天有同事无意中用debug版的主程序调用了release版的dll中的某个输出函数,该函数new了一块内存并将指针返回给主程序并由后者释放,主程序在调用delete释放内存时断言失败。在排查问题时,同事念叨了一句“难道debug版和release版分配的内存不一样?”,这个问题我之前的确没有注意过,于是便进行了简单探索。本文内容主要针对VC6进行探索,其他版本V原创 2011-10-27 14:25:41 · 5293 阅读 · 0 评论 -
对金山卫士界面的摸索
<br />http://bbs.code.ijinshan.com/viewthread.php?tid=632&extra=page%3D1转载 2011-01-29 12:44:00 · 701 阅读 · 0 评论 -
最近写的一个关于金山卫士主界面的简单分析
<br />http://bbs.code.ijinshan.com/viewthread.php?tid=605&extra=page%3D2转载 2011-01-29 12:43:00 · 567 阅读 · 0 评论 -
如何在批处理文件中获取该批处理文件所处位置?
在批处理文件中获取该文件当前位置一般都用%cd%来获取,但在Vista下这个方法就不行了,我用了一个迂回的方法达到这个目的,不知道大家有没有更好的办法了。 @echo %0 >> %temp%/Install.tmp@for /F %%a in (%temp%/Install.tmp) do @set LocalPath=%%~da%%~pa@del /Q %temp%/Install原创 2008-05-07 16:14:00 · 972 阅读 · 0 评论 -
利用msscript control在程序向VB脚本传递自定义对象的另一法
在网上找了好多关于在程序中向VB脚本传递自定义对象的文章,一般都采用script control的AddObject方法,不过这个方法有个缺点,那就是在VB脚本中必须要知道程序传递给脚本的对象的名字,这样就使程序的扩充性受到了限制,我把我最近摸索的另一个方法跟大家共享一下。其实这里最关键的是要知道在VB脚本中,对象都要支持自动化,这样当程序要向VB脚本的函数或过程传递自定义对象参数时,这个对象原创 2008-04-04 23:21:00 · 1716 阅读 · 0 评论 -
修改文件夹的属性
最近在工作中需要修改由程序自己创建的文件夹的属性,在其安全属性中需要将Users用户组的权限改为完全控制, 原打算在CreateDirectory时指定SECURITY_ATTRIBUTES参数的,不过以前做程序时该参数一直使用NULL,从没有针对安全做过程序;同时,考虑到操作系统各版本的兼容,于是就直接通过cacls.exe来实现了。ShellExecute(NULL, NULL, "cac原创 2007-11-22 19:27:00 · 916 阅读 · 0 评论 -
MFC类库中几个常见类的使用须知
1、CString类在使用其GetAt(int) 成员函数时,应保证GetLength() > 0,否则会抛出异常;2、CFileDialog类的文件类型过滤应该写成这样的形式:DLL(*.dll)|*.dll||任意文件(*.*)|*.*||;注意,中间不能有空格;不同文件类型之间用||分隔; 其他类在后续使用中若碰到问题再做记录。原创 2006-07-21 14:52:00 · 1145 阅读 · 0 评论 -
我的同步串口类
头文件// SerialPort.h: interface for the CSerialPort class.// 类名: CSerialPort// 创建人: 郑新华// 创建日期:2005-7-13// 概述:该类封装了对串口的基本操作,目前为同步操作,日后逐渐完善为同步// 异步可配置状态///////////////////////////////////////////原创 2006-06-08 14:39:00 · 1809 阅读 · 0 评论 -
将二进制数据放在XML文件中。
一、为什么要把二进制数据放在XML文件中?说到这个问题我想所有XML的好处都可以算作是将二进制数据放在XML文件中的好处了;此外,对于后续的文件解析工作,我们可以充分利用现在的XML的访问接口进行解析,从而降低了解析工作量,也就是说站在巨人的肩膀上。二、两个关键知识点1、XML是基于文本的,内容必须都是文本;2、Base64算法将输入的字符串或一段数据编码成只含有{A-原创 2006-06-08 13:28:00 · 5277 阅读 · 0 评论 -
我的Base64编码类,实际使用中
头文件// Base64.h: interface for the CBase64 class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_BASE64_H__8FF94494_89EB_4F4D_A8B4_B97BC7A14062__INCLUDED_)#原创 2006-06-08 14:37:00 · 1188 阅读 · 0 评论 -
使用Microsoft Date And Time Picker Control 6.0(SP6)时要注意的小问题
注意:1、使用SetWindowText设置控件内容无效;2、设置控件内容时,应该按照年、月、日、时、分、秒的顺序进行设置,否则会抛出异常。原创 2006-05-31 15:08:00 · 12472 阅读 · 1 评论 -
Windbg调试异常
总结了在windbg中对异常发生位置进行迅速定位的步骤。原创 2014-04-08 20:36:30 · 3796 阅读 · 0 评论