C++技术
文章平均质量分 83
dj0379
中国软件的爱好者
展开
-
用VC 6开始Qt 4.5.2之旅
用VC 6开始Qt 4.5.2之旅 很多网上的朋友都说Qt 4.5不再支持VC6下的开发了,起初也把我吓坏了。我花了一周时间不停地摆弄和google,终于用VC6揭开了Qt 4.5.2的神秘面纱。下面把我总结出来的具体步骤分享给大家。热爱开源事业的朋友们,希望我的帖子确实能帮上你们,也请你们在获益的同时标明转贴的出处,Thanks For a lot ! 一、安装开发环境:原创 2009-08-09 05:44:00 · 12377 阅读 · 5 评论 -
CButton 实现重绘时需要注意
最近在做一个CheckBox的透明时,遇到了CButton的重绘,网上关于此类问题的帖子比较多,实现方法也比较多。这里只说一下我在实际操作中遇见的一些问题和解决方法。1、在窗体中重载WM_CTLCOLOR实现透明时,在某些使用了XP样式风格的系统中,CheckBox出现了黑乎乎的底色,没有真正达到透明效果,具体原因还不清楚,希望高手指点。代码如下:HBRUSH CTestDlg::On原创 2009-08-31 13:20:00 · 2237 阅读 · 0 评论 -
Visual C++中的异常处理浅析
Visual C++中的异常处理浅析2005-10-19 09:59作者:宋宝华出处:天极网责任编辑:方舟 4.结构化异常处理 结构化异常处理(Structured Exception Handling,简称SEH)是微软针对Windows程序异常处理进行的扩展,在Visual C++中,它同时支持C和C++语言。SEH不宜与标准C++异常处理和MFC异常处理混用,转载 2010-02-11 12:02:00 · 849 阅读 · 0 评论 -
VC6.0如何让new失败后抛出异常
C标准库一起使用,比如libcp.lib与libc.lib搭配。另外,VC6.0在new.cpp还定义了一个operator new,原型如下 : void * operator new( unsigned int cb ) 而new.cpp对应的目标模块却是被打包进C标准库中的(是不是有点奇怪?)。 一般来说,程序员不会显式指定链接C++标准库,可是当程序中确实使用了标准C++库时链接器转载 2009-12-14 17:12:00 · 1717 阅读 · 0 评论 -
VC new 失败小议
用VC++算是家常便饭了,但是今天才发现有下面这个问题:unsigned int uSize=0;char* p=new char[uSize];if(!p){ //异常处理。}//......调试结果发现这样做 p 会不等于 NULL (即0)。上网查了下,搜索"vc new 失败",得到了一系列的说法:C++旧标准:new (nothrow) operat原创 2009-12-14 19:35:00 · 3059 阅读 · 0 评论 -
CFileDialog类无故崩溃的解决及原因分析
在最简单的MFC对话框应用程序里使用CFileDialog对象打开文件对话框。第一次打开都正常,每当第二次调出打开对话框后,只要鼠标在文件上晃动下就会崩溃,调试器断在shell32.dll模块里。显示Unhandled exception in test.exe (SHELL32.DLL): 0xC0000005 Access Voilation. 但是换成虚拟机或其他机器又会好。经过进一步调试,原创 2009-12-19 13:59:00 · 7976 阅读 · 3 评论 -
DLL(动态库)导出函数名乱码含义
DLL(动态库)导出函数名乱码含义 C++编译时函数名修饰约定规则: __stdcall调用约定: 1、以"?"标识函数名的开始,后跟函数名; 2、函数名后面以"@@YG"标识参数表的开始,后跟参数表; 3、参数表以代号表示: X--void D--char E--unsigned char F--short H--int I--u转载 2009-12-20 23:41:00 · 3540 阅读 · 0 评论 -
解决程序退出时死锁和内存或资源泄露的问题
解决程序退出时死锁和内存或资源泄露的问题:1.在OnDestroy等Windows消息处理函数里,慎用WaitForSingleObject函数,如果等待的对象再被通知之前,另外的线程直接或间接触发了其他消息处理函数,则会引发消息排队,由于当前的消息处理函数正在WaitFor并没有返回,所以其他消息函数可能无法被系统调用,导致死锁。这样程序就无法正常退出了。2.另外在调用会直接或间接触发消息处理函原创 2010-02-25 16:50:00 · 1214 阅读 · 0 评论 -
CoCreateInstance失败,返回错误码0x8007007e
CoCreateInstance失败,返回错误码0x8007007eDebug编译的COM接口好好的,但用Release编译后,用CoCreateInstance获得接口都失败。 Release编译的时候,把_ATL_STATIC_REGISTRY去掉就可以了。msdn上对_ATL_STATIC_REGISTRY的解释如下: A symbol that indi转载 2009-12-21 17:07:00 · 7102 阅读 · 0 评论 -
VC调用COM的方式总结
VC调用COM的方式总结Submitted by on 2009, October 11, 10:23 PM. 资料&文摘原文出处:http://topic.csdn.net/t/20040417/16/2977524.html,此篇转载稍有修改。准备及条件: COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法H转载 2009-12-21 15:19:00 · 1950 阅读 · 0 评论 -
使用CoGetClassObject而不使用CoCreateInstance的情况
使用CoGetClassObject而不使用CoCreateInstance的情况 大多数情况下,组件的创建均使用CoCreateInstance而不是用CoGetClassObject,但是在如下两种情况下应使用CoGetClassObject而不应该使用CoCreateInstance。IClassFactory 接口的CreateInstanceIClassFactory2 接口的转载 2009-12-26 00:49:00 · 5177 阅读 · 0 评论 -
PostQuitMessage(0)要慎用,经常会造成MFC程序退出时内存泄露,还是尽量使用MFC基类的退出函数比较好。
PostQuitMessage(0)要慎用,经常会造成MFC程序退出时内存泄露,还是尽量使用MFC基类的退出函数比较好。原创 2009-12-29 13:45:00 · 3188 阅读 · 1 评论 -
VC实现系统热键激活后台服务程序
引言 通常情况下,用于后台监控的服务程序(Service)是没有界面的,甚至也没有提供任务栏图标,因此绝大多数情况下服务程序是无法同用户进行交互的。但是在实际应用中,这些服务程序虽然绝大多数时间是在后台运行,但是在某些必要的情况下还是需要用户的干预并同用户进行一些必要的交互操作。但是由于服务程序没有提供任何可供交互操作之用的界面,因此如何将其从后台激活(即呼出)成为解决此问题的一个关键。本文转载 2009-12-29 13:21:00 · 917 阅读 · 0 评论 -
VC调试器高级应用(高级断点篇)
一.高级断点语法 高级断点语法由两部分组成:1.上下文部分.2.位置,表达式,变量或Windows消息条件. 用函数,源文件和二进制模块来指定上下文,上下文的表示方法: {[函数],[源文件],[二进制模块]} 必须指定唯一的,足够的上下文信息才能获取断点位置.如在TEST.CPP的20行设一位置断点,语法为:{,TEST.CPP,}.20,如A.DLL或B.DLL都使用了该行,又只想在B.转载 2010-01-11 14:12:00 · 1507 阅读 · 0 评论 -
windows下gstreamer软件开发环境的搭建过程
<br />windows下gstreamer软件开发环境的搭建过程<br /> <br />在windows下使用Visual C++进行gstreamer软件框架的应用程序的编程<br />以播放msmpeg4编码的avi视频为例,过程如下:<br />1,安装GStreamerWinBuild-0.10.5.1.exe和GStreamerWinBuild-0.10.5-dev.exe,<br />按照默认安装设置进行安装,即安装在C:/gstreamer目录下。<br />软件下载地址:<br />h转载 2010-07-22 12:07:00 · 7809 阅读 · 1 评论 -
C++开源跨平台类库集
C++开源跨平台类库集在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可转载 2010-07-22 14:04:00 · 1942 阅读 · 0 评论 -
Windows服务程序的调试方法
Windows服务程序的调试方法转载 2010-08-12 10:34:00 · 1723 阅读 · 0 评论 -
Windows程序中增加consle窗显示printf输出调试信息的一种方法
在编写桌面程序的时候打印调试信息通常习惯是用自己封装好的函数利用OutPutDebugString函数输出然后借助DbgView查看,但是有时候系统其它程序也用OutPutDebugString在输出一些信息的时候,这样的话DbgView窗口上的信息就显得很杂乱,干扰了分析工作.虽然我们可以借助其它方法比如输出到文件等等,但是还是觉得太麻烦。原创 2010-08-13 11:53:00 · 5210 阅读 · 2 评论 -
使用Visual Leak Detector库来检测CRT类型内存泄漏
要想使用VLD很简单,只要在代码前包含VLD.h,如下例:#include "stdafx.h"#include "vld.h"int main(int argc, char* argv[]){ char* p=new char[100]; *p='A'原创 2011-10-09 15:24:47 · 1331 阅读 · 0 评论 -
VC6 下使用 STLPort
VC6下使用STLPort为了使用hash_map,今天下载了STLport,在VC6下编译成功。1. STLport下载:http://www.stlport.org/ 我下载的是最新版 02.25.07: STLport 5.1.2 relea转载 2011-10-09 01:58:31 · 1077 阅读 · 0 评论 -
MinGW和MSYS简介
MinGW 和 MSYS分类: linux开发 2008-03-13 09:35 4162人阅读 评论(1)收藏举报 今天在编译一个开源软件时,用到了MinGW 和MSYS。在这里介绍下他们的功能和配置。MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考http://www.转载 2011-11-06 00:30:03 · 1459 阅读 · 0 评论 -
什么是泛型
什么是泛型分类: 泛型 C#应用 2009-02-25 10:04 550人阅读 评论(0)收藏 举报 前言 .NET 2.0中泛型的出现是一个令人激动的特征。但是,什么是泛型?你需要它们吗?你会在自己的应用软件中使用它们?在本文中,我们将回答这些问题并细致地分析泛型的使用,能力及其局限性。 类型安全 .NET中的许多语言转载 2011-11-06 04:26:07 · 985 阅读 · 0 评论 -
Windows 7安装Eclipse 3.7搭建C/C++开发环境
Windows 7安装Eclipse 3.7搭建C/C++开发环境 (2011-07-28 11:27:48) 操作系统:Windows 7 SP1软件:JRE 1.6.0_26-b03eclipse-SDK-3.7-win32cdt-master-8.0.0mingw-get-inst-20110530 1. 安装JRE由于Eclipse本身是用J转载 2011-11-06 17:04:02 · 7785 阅读 · 2 评论 -
VC6/VS2005/VS2008安装 STLport 5.2.1
VC6.0、VS2005、VS2008安装STLport-5.2.1 最近在帮人做的一个项目中用到了STL;我自己使用的是VS2005,后来移植到VC6.0的时候,出现了很离奇的错误,就怀疑是VC的STL版本出了问题.从网上找到了 STLport-5.2.1,但是不会安装,于是从网上找到了这篇文章,按照其中的步骤顺利的进行了安装,然后果真顺利的解决了问题! 顺便说一句:如转载 2011-11-06 22:30:32 · 1925 阅读 · 0 评论 -
读《Boost程序库完全开发指南》
读《Boost程序库完全开发指南》 2011-05-18 20:47:19| 分类:读书| 标签:|字号大中小 订阅 C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽? boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化。学习boost本身就是一个复杂度,有魄力在项目中广泛采用转载 2011-11-06 04:37:40 · 2761 阅读 · 1 评论 -
揭开CEN/XFS的神秘面纱
这里讨论的CEN/XFS是Extensions for Financial Services的缩写,即欧洲为了统一国际金融设备的接入标准而搞出来的一套东西。是国内银行近几年积极从国外引进的一套ATM机平台设备的统一接入标准。我手头上的主要是微软设计出来的一套完整的框架,是一套基于Windows系统实现的东西。这套协议也有Java的实现版本J/XFS,想要做Linux或Unix平台的兄弟们可以自己去原创 2010-07-30 13:35:00 · 9519 阅读 · 3 评论 -
WINDOWS注销关机消息
用WM_QUERYENDSESSION.在你的主框架窗口类中使用.// in the class headerafx_msg BOOL OnQueryEndSession( WPARAM wReserved, LPARAM lEndReason );// in the Message MapON_MESSAGE( WM_QUERYENDSESSION, OnQueryEndSe转载 2012-03-07 16:22:59 · 1074 阅读 · 0 评论 -
共享内存实现进程间通讯
HANDLE hMemShare=NULL;DWORD* pOD=NULL;__try{ hMemShare=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 8, _T("TestMemShare")); if(!hMemShare) __leave; pOD=(DWORD*)Map原创 2012-03-08 11:16:46 · 916 阅读 · 0 评论 -
解决VC6和Office7冲突导致无法往工程里加文件
VC++6.0和office2007的冲突解决上一篇 /下一篇 2011-02-21 23:13:21 查看( 25 ) / 评论( 0 ) / 评分( 0 / 0 ) 话说电脑上如果装有VC++6.0编程软件和office2007办公软件,那么经常编程的人就会遇到下面的问题:VC打不开文件和工程,总是提示读取内存错误,点“确定”后vc自动关闭,但vc却能新建文件和工转载 2012-02-20 02:13:53 · 1272 阅读 · 0 评论 -
Windows下快速配置gstreamer开发环境
Windows下快速配置gstreamer开发环境杜晶 2010-07-21上海 本文采用OSSBuild快速构建Windows下的GStreamer开发环境,如果想要使用Gtk来开发的朋友们可以参照其他博文。(本文的完整环境下载) 1.安装GStreamer-WinBuilds-GPL-x86.msi,采用默认组件选项(全装),安装路径中最好不要有空格。2.做开发的才需安原创 2010-07-21 18:17:00 · 16906 阅读 · 1 评论 -
论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突.
最近360安全浏览器和金山网盾炒得很厉害,不过实际上做启发式杀毒的话,是根据病毒的行为做检测,大家都是在病毒调用的API这个独木桥走,时不时被挤下来是很正常的事情。上网搜索一下就可以看到,互相冲突的不止是这两家,还有瑞星、卡巴和基于IE的浏览器,比如傲游、腾讯TT、搜狗浏览器等。这个问题的核心在于这些软件对API的钩子的处理。 API hook这个东西其实DOS时代就有了,那个时候叫中断表转载 2012-04-12 00:42:59 · 3900 阅读 · 0 评论 -
Win7 下安装 VC6 和SP5
Win7 下安装 VC6 和SP5 2011-02-20 13:26474人阅读评论(0)收藏举报Though this isn't supported and you get the normal warnings about maybe not working on Windows 7, but i now have it installed and compili转载 2012-04-25 14:36:09 · 2940 阅读 · 0 评论 -
如何用 Visual Studio 2008 打开 Visual Studio 2010 解决方案
当用 VS2010 打开 VS2008 解决方案(sln文件)或项目(csproj 文件或 vbproj 文件等)时,VS2010 会提示需要进行升级转换。反之,如果用 VS2008 打开 VS2010 的解决方案文件,会提示此 sln 是新版本的 VS 创建,无法打开;如果打开项目文件,会有安全警告,但可以打开。有时候你可能想用VS2008 打开VS2010 的解决方案,比如你的机器还没有装 V转载 2010-09-27 14:48:00 · 5747 阅读 · 0 评论 -
Mercurial与TortoiseHg使用入门教程
Mercurial与TortoiseHg使用入门教程文章来源:http://www.keakon.cn/bbs/thread-1865-1-1.html分布式版本管理工具当中,Git和Mercurial(意思为水银的,于是经常缩写为Hg)是最为流行的工具。大名鼎鼎的Linux就用Git作源码管理,而Python和Firefox则采用Hg(你可以在这找到一堆使用Hg的项目)。 1转载 2012-04-20 13:26:46 · 891 阅读 · 0 评论 -
Kinect开发教程一:OpenNI的安装与开发环境配置
Kinect作为新一代的体感设备,小斤就不多介绍咯,微软日前也发布了相应的官方SDK,用以开发Kinect在PC上的应用。但就目前的情况而言,微软的KinectSDK只能在Win 7平台上使用,因此小斤选择了OpenNI作为Kinect开发的第一块踏脚石,它是目前已被广泛使用和认可的开源Kinect开发库。 准备 首先大家需要下载三样东西: 第一,OpenNI转载 2012-04-20 14:54:49 · 1414 阅读 · 0 评论 -
Win7下安装VC6
最近在WinXP和Win7的双系统上安装VC6,先在WinXP上顺利安装了,到了Win7装完后启动VC6就会报:“developer studio could not initialize properly because a package failed its initialization ”的错误,点确定VC6就失败退出了。我记得在Win7刚出来的时候曾经在上面成功安装并正常使用过VC6原创 2012-04-22 17:54:13 · 4592 阅读 · 2 评论 -
Vc++6.0项目迁到vs2005 应该注意的问题
1.如果MessageBox("aa") 报错,将其要改成 MessageBox(_TEXT("aa")).我喜欢用MessageBox来调试程序,尤其是在写脚本时,当你不知道程序有没有执行该条语句,以及执行完该条语句后某个变量的值发生了什么变化,在该条语句前后各加一个MessageBox(str),一目了然了吧 .2.pow(2,10) 要改成 pow((double)2,10)或po转载 2012-04-22 02:35:01 · 823 阅读 · 0 评论 -
小议避免进程退出时的死锁
——Windows GUI程序中使用线程的心得体会 ①避免在工作者线程中使用SendMessage,改用PostMessage比较好。原因是这样的,以一个普通程序退出为例,我们经常会使用以下方式构建退出逻辑:主线程正在消息处理函数工作者线程正在处理任务void OnDestroy(){//WM_DESTROY //1发送退出消息或命原创 2012-04-22 15:07:22 · 1517 阅读 · 0 评论 -
Win7配置驱动开发环境(wdk7.60)
1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目) 3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)输入名称(driver)点击确定就可以了,其他的不要动哦!完成后的效果!点击确定按钮之后呈现出来的画面鼠标右击新建的driver属性,会弹出以下窗口!转载 2012-05-27 15:31:05 · 5473 阅读 · 1 评论 -
更改Visual Studio 2010的代码字体设置
发表于 2011 年 4 月 30 日前一篇文章介绍了如何修改Visual Studio默认的主题设置,不过大家可能发现,代码字体没有原来主题上的美观,确实,对于程序员来说,等宽字体是最适合于编程的,微软就给我们提供了一款现成的等宽字体,那就是Consolas,大家可以在微软的网站上下载安装包。什么?那上面说是“for Microsoft Visual Studio 2005 or 200转载 2012-05-11 20:13:18 · 44328 阅读 · 2 评论