VC修炼天道
文章平均质量分 60
jarraytan
06年毕业.现用c#做企业内部应用,兼修VC++,perl,shell,asp.net,php.还会点directx、shader、delphi,vb,asp,asp.net,angularJs,jQuery之类的.
展开
-
备受折磨的msdn2010
今天工作需要,想装个msdn2010,因为用的vs2010,结果耗费了一个杯具的下午。 首先,兄弟们,不要再想着在在vs的安装界面上找“安装msdn”了,已经没有那个选项了。。。。。。 (画个圈圈诅咒MS,我还以为我等屌丝用的D版安装包没带msdn,为此还腹诽了提供下载地址的网站)。 如果vs2010安装包2g多,那么,应该就是带了msdn的。 其次,想装msdn的话,千万不要原创 2012-12-17 21:02:33 · 884 阅读 · 0 评论 -
内存泄漏检查技术
1._CrtDumpMemoryLeaks 确定自程序开始执行以来是否发生过内存泄漏,如果发生过,则转储所有已分配对象。如果已使用 _CrtSetDumpClient 安装了挂钩函数,那么,_CrtDumpMemoryLeaks每次转储 _CLIENT_BLOCK 块时,都会调用应用程序所提供的挂钩函数。 CrtDumpMemoryLeaks()就是显示当前的内存泄漏。 注意是“当转载 2008-11-14 12:02:00 · 1140 阅读 · 1 评论 -
Const,Const函数,Const变量,函数后面的Const
lonefox转注:本文转自 http://www.cnblogs.com/Fancyboy2004/archive/2008/12/23/1360810.html=================================关键字:Const,Const函数,Const变量,函数后面的Const 看到const 关键字,C++程序员首先想到的可能是const 常量。这可不转载 2009-01-06 15:59:00 · 870 阅读 · 0 评论 -
共享VC6中将文本文件导ACCESS库的类(修改版)
因为工作中需要用到检查文本文件,想来想去,还是导到access库要简单点; SQL直接导效果不是很好; 若使用schema.ini文件,效果将会很好, 和直接在access中人工导入效果相差无几. 目前发现的区别是导入数据出错时在库中不会出现经常看到的"粘贴错误"那张表. 网上找了半天,没找到类似的类,就自己动手写了个; 共享所有代码; 两个CPP,两个H, 压缩在一原创 2008-11-13 18:06:00 · 1392 阅读 · 1 评论 -
用VC6打开XP风格通用文件对话框
一般地,VC6中使用CFileDialog来打开windows通用打开文件对话框和保存文件对话框。但,遗憾地是,很多人告诉我(包括我头头),也许也会这么告诉你,CFileDialog只能打开win98风格的对话框,如下图一。 图一,标准文件打开对话框 但我们是不会满足的,看着别人程序里漂亮的XP风格对话框,难道我们只能扩展CFileDialog,自己实现(所有我认识的人都原创 2008-10-16 13:30:00 · 4792 阅读 · 13 评论 -
CListCtrl 行高问题最终解决方法[转]
下文转自:http://hi.baidu.com/mingyuejingque/blog/item/23413ceeeedb54ffb3fb95f5.html 我也认为重载CListCtrl::DrawItem函数能自绘item,但实际上子类的DrawItem死活没反应。不知道怎么回事。style已设置好了的。奇怪! 谁能告诉我为什么? ===============转载 2008-10-08 18:48:00 · 4514 阅读 · 0 评论 -
VC6中使用内存DC加载并显示JPG图片的注意事项
今天在VC6中显示JPG图片,采用了内存DC缓存的方法刷新,但死活刷不出来,查了一下午才明白(没办法,很少用GDI,我小菜一个:( ):使用IPicture::Render函数向DC上贴图时,若DC是一个内存DC,一定要先SelectObject一个CBitmap,内存DC没有Bitmap是画不出来的! 另外,IPicture是COM库,需要注意初始化COM, CMYApp原创 2008-10-24 18:05:00 · 4166 阅读 · 0 评论 -
在VC的非控制台程序中调用DOS界面
虽然WIN32时代是图形界面时代,但偶尔程序中还需要用到命令行模式,比如批处理,这时再搞个图形界面出来显得似乎就不那么专业了。但客户还需要在正常状态下(对于命令行模式,我认为用户是非正常状态,比如脑子进水。)使用图形界面,这决定我们不能开一个控制台工程,而需要使用MFC exe程序。 OK,理所当然的,通过条件控制,命令行下我关掉对话框界面的调用代码,再使用cout原创 2008-10-23 10:53:00 · 3741 阅读 · 2 评论 -
delphi数组地址和VC的区别
今天使用blockRead读二进制数据块时发现,delphi中的数组地址和vc++中的数组地址是有区别的。 在vc中使用数组名或数组第一个元素的地址就是数组的首地址;而在delphi中使用@取地址符取数组首地址;如下有: var A:array[0..2] of integer;则: @A 或 @A[0] 都可取到数组A的元素首地址。两者是相等的。原创 2008-10-07 14:47:00 · 1964 阅读 · 0 评论 -
VC++中数据类型转换总结
int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="Lonefox"; char temp[200]; char *buf; CString str; _variant_t v转载 2008-11-14 12:06:00 · 922 阅读 · 1 评论 -
vc6编译boost1.33.0版本正则库失败的解决方法
因为我们公司用的是1.33.0版本的boost库,因此,我别无选择,也只能编个1.33.0版本的regex库出来. ok,参照网上的说法: 编译boost.regex的另一种办法 1.运行vcvars32.bat,可以帮助设置好vc命令行环境 2.cd boost_1_33_0/libs/regex/build 3.nmake -vc6.mak这种方原创 2008-11-17 16:57:00 · 1188 阅读 · 0 评论 -
boost正则库匹配ANSII编码的中文、全角字符示例
===================================本人log中所有未注明转载的文章和blog一般为本人原创或整理加工,原创文章版权本人(lonefox)所有;转载文章版权归原作者所有;http://blog.csdn.net/boythl欢迎转载,但请注明出处,保留作者和版权信息。===================================原创 2008-11-20 15:56:00 · 2496 阅读 · 2 评论 -
IEEE 754 浮点数的表示精度探讨
c++浮点表示揭秘;原作者未知。转载 2010-06-13 11:39:00 · 819 阅读 · 0 评论 -
ASCII 码对照表
ASCII值 控制字符 注释0NUT 1SOH标题开始2STX正文开始3ETX正文结束4EOT传输结束5ENQ询问字符6ACK承认7BEL报警8BS(Backspace)退格9HT横向转载 2010-04-26 13:01:00 · 943 阅读 · 0 评论 -
通过出错地址查找代码行
寻找Release版程发生异常退出的地方比Debug版麻烦得多。发生异常的时候windows通常会弹出一个错误对话框,点击详细信息,我们能获得出错的地址和大概的出错信息,然后可以用以下办法分析我们的程序。 一. 用MAP文件定位异常代码位置。1.如何生成map文件打开“Project →Project Settings”,选择 C/C++ 选项卡,在“Debug Info”栏选择“L转载 2009-12-30 18:05:00 · 6371 阅读 · 0 评论 -
OGR库读写mif/tab文件lonefox使用经验小结
===================================本人log中所有未注明转载的文章和blog一般为本人原创或整理加工,原创文章版权本人(lonefox)所有;转载文章版权归原作者所有;http://blog.csdn.net/boythl欢迎转载,但请注明出处,保留作者和版权信息。===================================原创 2009-11-17 09:19:00 · 8252 阅读 · 12 评论 -
计算几何算法概览
一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解转载 2009-09-11 09:49:00 · 802 阅读 · 0 评论 -
[转]仅通过崩溃地址找出源代码的出错行
lonefox转注:从该方法,只能找到发生异常时最顶层的函数调用地址和代码; 但在vc6里,往往异常都是mfc抛出的, 经过了层层的函数调用, 用这种方法去查代码行几乎应该是瞎猫逮死耗子了吧!话说回来, 看看这篇文章也能多少了解点map文件的结构和用处, 病急乱投医时应该也可以试试吧.================================================转载 2009-09-10 19:49:00 · 743 阅读 · 0 评论 -
CImageList使用之CListCtrl中图标选中消失【转】
这两天在CListCtrl中显示图标时正常,但一选中一行该行图标就消失,设置所有state都没用,经朋友小狼帮忙,百度到下文(来自http://blog.chinaunix.net/u1/54412/showart_509957.html,谢谢作者)=======================================================代码如下:m_lstImg.Cr原创 2009-08-17 11:10:00 · 1715 阅读 · 0 评论 -
Mapinfo加载图片文件通用类
工作中用到将图片文件加载到mapinfo中以打印,下面共享用与图片加载的通用类:CLoadImg2MI 并在最后给出一个简单示例。请注意,在将图片加载到mapinfo前需要创建一个关联该图片的tab文件,同时在该文件中指定控制点坐标(最少需要三个,下文使用的是图片四个顶点,用于一般的非GIS图片)、映射坐标系、数据版本、坐标单位等。 因为时间关系,写得比较匆忙,若有人指出错误,原创 2009-03-02 13:21:00 · 2320 阅读 · 3 评论 -
Hook、钩子、VC++ 基本概念
一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程转载 2008-10-07 14:29:00 · 1330 阅读 · 1 评论 -
自定义回调函数原型的方法
回调函数是不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。 回调函数使用是必要的,在我们想通过一个统一接口实现不同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()...等等。这是我们想用一个统一的显示函数,我们这时就可以用回掉函数了转载 2008-10-07 14:13:00 · 2700 阅读 · 3 评论 -
VC增加自定义消息[转]
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 下面是增加自定义消息的步骤: 第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 第二步:实现消息处理函数。该函数使用WPRAM和转载 2008-10-07 14:11:00 · 755 阅读 · 0 评论 -
程序堆栈溢出感慨
从来都感觉栈溢出离我很远, 自己的程序也从来没有栈溢出过. 今天同事的程序因为数据量大,递归调用太多,导致程序直接崩溃,调查结果是:堆栈溢出! win32默认的单线程栈大小是1M。不光是函数调用会入栈,函数内局部变量的空间也会在栈中申请;简单的一个测试例子: int c[262144]; 把这一句放到可以执行到的函数里;虽然编译可以通过,但默认原创 2008-10-16 15:56:00 · 3832 阅读 · 6 评论 -
VC6中添加消息映射
今天发现程序未显示About Box,分析发现,是因为程序未处理WM_SYSCOMMAND命令导致;但VC的ClassView里好像不能直接处理该消息;只好手动添加. 记录下方法和需要注意的地方。 处理MFC的ClassView中没有定义的消息需要注意三个地方,如WM_SYSCOMMAND消息,可以接收系统菜单命令,但ClassView中没有,这时需要自己手动添加。原创 2008-09-23 16:44:00 · 4016 阅读 · 7 评论 -
软件Release 版本 Crash 堆栈信息收集
软件Release 版本 Crash 堆栈信息收集比较详细的地址是:http://www.codeproject.com/debug/XCrashReportPt3.asp不过作者考虑了没有vc等情况。其实如果有vc使用ms 的 MiniDumpWriteDump 将会非常简单. 如下面100行左右搞定,理解、转换为unicode 编码都简单很多.只需要装入相转载 2008-09-02 18:22:00 · 4313 阅读 · 1 评论 -
仅通过崩溃地址找出源代码的出错行
仅通过崩溃地址找出源代码的出错行作者:老罗提交者:eastvc 发布日期:2003-10-23 9:16:11原文出处:http://www.luocong.com/articles/show_article.asp?Article_ID=29作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃! “该程序执行转载 2008-09-02 17:36:00 · 976 阅读 · 0 评论 -
VC6下使用API实现自带缓存的写文件类
这是【带缓存的log写出类】的改进版本;效率比CStdioFile快一倍左右;使用系统API写出文件;使用自带缓存不使用系统文件buffer。 支持文件最大长度是64位长,即两个DWORD长byte数据。 非精确测试,测试结果,单位毫秒,前面是CBufferLog,后面是CStdiofile:debug版下大致: 714M数据耗时分别是20289和47000; 476原创 2008-08-30 11:42:00 · 1964 阅读 · 2 评论 -
带缓存的log写出类
感觉CStdioFile的写文件很慢,工作中我经常需要写log文件,就写了个带buffer的文件写出类,直接调用_write等系统函数;但根据实际测试结果,竟然和cstdiofile效率差不多,伤心! 代码列如下,哪位大虾能指导下小弟,怎样能提高效率?谢谢啦!// BufferLog.h: interface for the CBufferLog cl原创 2008-08-27 09:03:00 · 1645 阅读 · 0 评论 -
VC6 DEBUG版下内存控制的一个BUG,导致debug版程序必将崩溃
最近写的转换程序,在debug版下跑了9个小时,最终崩溃,直接弹出对话框说: 应用程序发生异常,unknown software exception(0x80000003),位置为0x10212ad0. 又在IDE状态下debug版跑了16个小时,最终弹出用户断点对话框,点按钮后定位在 DBGHEAP.c 文件的第338行:/* break into debu原创 2008-08-05 11:28:00 · 2850 阅读 · 2 评论 -
CFile写文本的换行问题
一直以来都用CStdioFile.writestring来写文本,在文本里使用/n来换行,但CFile的write在写文本时/n不能换行,记事本打开显示未换行,写字板打开显示是换行的,utraledit32打开的话会提示“非DOS格式,是否转换”,点是转换时才会显示换行。 今天查了下,CFile写出时用/r/n就可以换行,难道CStdioFile会自动加/r,也许有其他原原创 2008-08-04 11:25:00 · 4260 阅读 · 0 评论 -
用WinDbg分析Dump文件,转自WinDbg帮助文件
MS出的WinDbg是内核级调试利器,但我喜欢用它来调试客户端程序崩溃生成的Dump文件(运行状态生成Dump文件的方法可参见另一封转贴 http://blog.csdn.net/boythl/archive/2008/09/02/2868344.aspx). Windbg中常用分析命令是: !analyze -v ,然后在分析结果里可以直接看到详细的调用堆栈; 另一个命令是:转载 2008-09-28 11:12:00 · 9023 阅读 · 2 评论 -
不能向dll传递STL的map指针
向dll传递STL的map指针在运行时将会崩溃; 原因未知。有种解释是因为map的实现中使用了静态成员变量; WIN中,静态成员变量的实现是模块级的.同理,所有涉及到模块级的静态函数也不能直接传递吧.同样的讨论参见CSDN的FAQ:http://faq.csdn.net/read/193101.html 我最终采取了一个曲折的方法:封装一个类,包装了map变量,然后传递该类指针到dll,原创 2008-10-07 13:43:00 · 1685 阅读 · 4 评论 -
VC不定参数的传递和自定义异常的抛出
今天下午学习了两点,一,在vc自定义函数中传定不定个数的参数,即如format函数中的第二个参数"...",能接收任意个数参数;二,自定义异常的抛出,即throw一个自定义异常. 函数代码列如下: // ComboProp.h: interface for the CComboProp class. // //////////////////////////////原创 2008-10-07 14:06:00 · 1850 阅读 · 0 评论 -
VC挂线程钩子的小经验
挂线程钩子,最主要的是调用SetWindowsHookEx函数,使用例下:g_hHook = SetWindowsHookEx( WH_SYSMSGFILTER | WH_MSGFILTER, //截获消息类型,可组合使用 (HOOKPROC)HookShowWindow, //消息回调函数 g_hInst, //消息回调函数所在模块的handle,因为是原创 2008-10-07 14:30:00 · 839 阅读 · 0 评论 -
vector查找对象或指针成员值的方法
使用find在vector中查找成员时使用的是直接==比较,即如果vector中存放的是指针或对象时直接使用find查找将直接比较指针地址值是否相同,这时需要使用到find_if。 如有class CAttrCheck{public: CString m_strCode; bool IsExist;} 有vector m_Attrs;若想在m_Attrs原创 2008-10-07 14:21:00 · 2666 阅读 · 0 评论 -
CWnd HWND概念
汗一个.连基本的CWnd HWND HANDLE 概念都没搞清楚, 都用VC干了半年活. 汗颜,B4自己一下! CWnd window class 窗口基类 HWND window handle 窗口句柄 HANDLE handle 很明显,就句柄原创 2008-10-07 14:14:00 · 656 阅读 · 0 评论 -
VC中类似VB的DoEvents函数
在一个程序中,如果有一个耗时很长的程序段(比如说一个100万次的循环),程序在执行这段程序时会象死掉一样。vb中提供DoEvents函数来解决这个问题。对于VC++来说,除了用多线程,还可以用下面的函数,起到类似于DoEvents的功能: BOOL CheckMessageQueue() { MSG msg; while(::原创 2008-10-07 14:44:00 · 1617 阅读 · 0 评论 -
VC文件扩展名解读大全
2005-9-6 作者:vclove .APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。.BMP:位图资源文件。.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source b转载 2008-10-07 14:00:00 · 544 阅读 · 0 评论 -
VC中CCheckListBox显示时崩溃的原因及解决方法
CCheckListBox可以实现带CheckBox的ListBox,VC6自带,头文件Afxwin.h; 但不支持托放式加入界面(再次骂下开发VC的MS人员,UI支持超级弱智!)。 有个方法比较简单,在窗口拖放一个CListBox(不会不知道是哪个吧?那就撞墙好了。),ID是IDC_LIST1,在类向导器里创建一个Control型变量,如m_List,在窗口类里将会有原创 2008-10-07 13:53:00 · 3773 阅读 · 1 评论