DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 541 评论 :: 1614万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

09 2013 档案

摘要:STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。在 使用 list、set 或 map遍历删除某些元素时可以这样使用:正确使用方法1std::list List;std::list::iterator itList;for( itList = List.begin(); itList != List.end(); ){if(WillDelete(*itList) ){itList = List.erase( itList); 阅读全文
posted @ 2013-09-30 10:52 DoubleLi 阅读(652) 评论(0) 推荐(0) 编辑

摘要:k_eckel:http://www.mscenter.edu.cn/blog/k_eckel文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/View Architecture本身的复杂性加上VC产生的一系列代码足够让我们眼花缭乱,一时陷入云里雾里 阅读全文
posted @ 2013-09-30 09:01 DoubleLi 阅读(470) 评论(0) 推荐(0) 编辑

摘要:参考文章:http://tech.sina.com.cn/s/2006-07-25/09051053460.shtml响应WM_NCHITTEST消息函数实现如下://////////////////// Non-client hit-test handler to move window by its client area.// If the user clicks anywhere on the client area, pretend it's the// caption. Windows does the rest!UINT CMyDialog::OnNcHitTest(CP 阅读全文
posted @ 2013-09-30 08:58 DoubleLi 阅读(381) 评论(0) 推荐(0) 编辑

摘要:MFC对话框屏蔽Enter和ESC键参考:http://www.docin.com/p-122354833.html方法一重载PreTranslateMessage函数 BOOL CXXDlg::PreTranslateMessage(MSG* pMsg){ //对话框屏蔽Enter和ESC键 if (WM_KEYDOWN == pMsg->message) { if ( (VK_RETURN == pMsg->wParam) || (VK_ESCAPE == pMsg->wParam)) { return TRUE; } } return CBCGP... 阅读全文
posted @ 2013-09-30 08:57 DoubleLi 阅读(496) 评论(0) 推荐(0) 编辑

摘要:实现CSliderCtrl的子类CXXCtrl响应左键按下消息ON_WM_LBUTTONDOWN()void CXXCtrl::OnLButtonDown(UINT nFlags, CPoint point){ // 按键在滑动块区域内,不做操作 CRect tRect; GetThumbRect(&tRect); if (tRect.PtInRect(point)) { CSliderCtrl::OnLButtonDown(nFlags, point); return; } // 实现滑动块精确定位 CRect rcSlider; GetChannelRec... 阅读全文
posted @ 2013-09-30 08:54 DoubleLi 阅读(533) 评论(0) 推荐(0) 编辑

摘要:在MFC使用过程中,遇到DLL资源与主EXE资源冲突问题。出现这样的Bug,一时无从下手。报错位置在核心代码中dlgcore.cpp。[cpp]view plaincopy BOOLAFXAPI_AfxCheckDialogTemplate(LPCTSTRlpszResource,BOOLbInvisibleChild){ASSERT(lpszResource!=NULL);HINSTANCEhInst=AfxFindResourceHandle(lpszResource,RT_DIALOG);HRSRChResource=::FindResource(hInst,lpszResource,R 阅读全文
posted @ 2013-09-30 08:53 DoubleLi 阅读(1784) 评论(0) 推荐(0) 编辑

摘要:说明:文章内容部分参考网络上的解决思路。在没有安装Microsoft Visual Studio的系统上,Debug版本无法正常运行。这是由于缺少vs运行时库引起的。以vs2005为例。开发机用vs2005编译出Debug版本程序,发送到一台没有安装过vs的机器上运行,运行不成功。解决方法如下。C:\ProgramFiles\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT下找到了下列文件:msvcm80d.dllmsvcp80d.dllmsvcr80d.dllMicrosoft.VC 阅读全文
posted @ 2013-09-30 08:42 DoubleLi 阅读(3087) 评论(0) 推荐(0) 编辑

摘要:参考资料:http://apps.hi.baidu.com/share/detail/39003388http://blog.csdn.net/yc0188/article/details/4741871http://bbs.chinaunix.net/thread-2094334-1-1.html//头文件#include #include #include using namespace std;//函数声明int request(char* hostname, char* api, char* parameters);//方法调用int _tmain(int argc, TCHAR* a 阅读全文
posted @ 2013-09-30 08:41 DoubleLi 阅读(6973) 评论(0) 推荐(0) 编辑

摘要:一、 概述C++多线程开发中,容易出现死锁导致程序挂起的现象。关于死锁的信息,见百度百科http://baike.baidu.com/view/121723.htm。解决步骤分为三步:1、检测死锁线程。2、打印线程信息。3、修改死锁程序。二、 程序示例VS2005创建支持MFC的win32控制台程序。代码见示例代码DeadLockTest.cpp。[cpp]view plaincopy //DeadLockTest.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include&qu 阅读全文
posted @ 2013-09-30 08:40 DoubleLi 阅读(1163) 评论(0) 推荐(0) 编辑

摘要:Cppcheck is an analysis tool for C/C++code. Unlike C/C++ compilers and many other analysis tools, it doesn’t detect syntax errors. Cppcheck only detects the types of bugs that the compilers normally fail to detect. The goal is no false positives.Cppcheck is rarely wrong about reported errors. But th 阅读全文
posted @ 2013-09-29 21:04 DoubleLi 阅读(3086) 评论(0) 推荐(0) 编辑

摘要:类似QQ与360软件,消息提示有两种。上下浮动、渐入渐出。1、上下浮动提示框实现机制,定时器响应上下浮动消息。主要API:MoveWindow。源码如下UpDownTipDlg.h、UpDownTipDlg.cpp。UpDownTipDlg.h[cpp]view plaincopy /**@brief上下浮动提示框*@date2012-8-9*/#pragmaonce//CUpDownTipDlgdialogclassCUpDownTipDlg:publicCDialog{DECLARE_DYNAMIC(CUpDownTipDlg)public:CUpDownTipDlg(CWnd*pPare 阅读全文
posted @ 2013-09-29 21:03 DoubleLi 阅读(1690) 评论(0) 推荐(0) 编辑

摘要:类似360消息弹出框,实现方式一见http://blog.csdn.net/segen_jaa/article/details/7848598。本文采用另外的API实现渐入渐出效果。主要API:SetLayeredWindowAttributes。实现功能:采用管理器控制消息框每次只显示一个。消息框独立显示在右下角,不随主窗口放大缩小变化。鼠标进入消息框区域,渐入渐出效果停止。1、消息框实现创建对话框类CMsgTipDlg,设置对话框属性。Tool Window:true。设置对话框为消息框,任务栏上将没有图标。Topmost:true。设置对话框置顶。MsgTipDlg.h。[cpp]vie 阅读全文
posted @ 2013-09-29 21:02 DoubleLi 阅读(812) 评论(0) 推荐(0) 编辑

摘要:一款开源源码检测工具。简单易用。官网网址:http://cppcheck.sourceforge.net/软件可直接官网下载。[plain]view plaincopy FeaturesOutofboundscheckingCheckthecodeforeachclassCheckingexceptionsafetyMemoryleakscheckingWarnifobsoletefunctionsareusedCheckforinvalidusageofSTLCheckforuninitializedvariablesandunusedfunctions使用过程中,分析数据结果如下: Cpp 阅读全文
posted @ 2013-09-29 20:59 DoubleLi 阅读(656) 评论(0) 推荐(0) 编辑

摘要:一、默认参数在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。默认参数的语法与使用:(1)在函数声明或定义时,直接对参数赋值。这就是默认参数;(2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。注意:(1)默认参数只可在函数声明中设定一次。只有在没有函数声明时,才可以在函数定义中设定。(#add ,此句意为存在函数声明和定义两部分的时候。验证表明有这个限制,可以随便,但出于规范,在声明中指定)(2)如果一个参数设定了缺省值时,其右边的参数都要有缺省值。(#add 这是定义时,类的成员函数的参数表在声明时默认参数位于参数表右部,使用时 阅读全文
posted @ 2013-09-27 14:46 DoubleLi 阅读(801) 评论(0) 推荐(0) 编辑

摘要:equal_range是C++ STL中的一种二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j,其中i是在不破坏次序的前提下,value可插入的第一个位置(亦即lower_bound),j则是在不破坏次序的前提下,value可插入的最后一个位置(亦即upper_bound),因此,[i,j)内的每个元素都等同于value,而且[i,j)是[first,last)之中符合此一性质的最大子区间 如果以稍许不同的角度来思考equal_range,我们可把它想成是[first,last)内"与value等同"之所有元素形成的区间A,由于 阅读全文
posted @ 2013-09-26 10:04 DoubleLi 阅读(762) 评论(0) 推荐(0) 编辑

摘要:SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于简介 titleSDL(Simple DirectMedia Layer)被广泛的用于许多著名的游戏。最著名的游戏是赢得Linux组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。SDL的作者是Sam Lantinga, Loki Entertainment Sof 阅读全文
posted @ 2013-09-22 15:31 DoubleLi 阅读(3749) 评论(0) 推荐(1) 编辑

摘要:此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspxSystemThreadPool.h[cpp]view plaincopy #define__SYSTEM_THREAD_POOL__#include"Thread.h"#include#includeclassCThreadPoolExecutor{public:CThreadPoolExecutor(void);~CThreadPoolExecutor(void);/* 阅读全文
posted @ 2013-09-18 16:27 DoubleLi 阅读(1054) 评论(0) 推荐(0) 编辑

摘要:Thread.h[cpp]view plaincopy #ifndef__THREAD_H__#define__THREAD_H__#include#include#includeclassRunnable{public:virtual~Runnable(){};virtualvoidRun()=0;};classCThread:publicRunnable{private:explicitCThread(constCThread&rhs);public:CThread();CThread(Runnable*pRunnable);CThread(constchar*ThreadName 阅读全文
posted @ 2013-09-18 16:26 DoubleLi 阅读(7854) 评论(2) 推荐(1) 编辑

摘要:此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspxThreadPoolExecutor.h[cpp]view plaincopy #ifndef__THREAD_POOL_EXECUTOR__#define__THREAD_POOL_EXECUTOR__#include"Thread.h"#include#include#includeclassCThreadPoolExecutor{public:CThreadPoolE 阅读全文
posted @ 2013-09-18 16:25 DoubleLi 阅读(15163) 评论(2) 推荐(0) 编辑

摘要:本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是 阅读全文
posted @ 2013-09-18 14:40 DoubleLi 阅读(30206) 评论(6) 推荐(3) 编辑

摘要:在网上找了很久这方面的内容,发现网上的代码都太旧了,所使用的函数旧到连最新版本的ffmpeg都已经不包含了,所以对于我这个初学者来说太坑拉。不过经过多次查找ffmpeg的头文件和结合网上的内容,终于成功可以解码拉。现在贴出来。首先是初始化一些参数[cpp]view plaincopy //下面初始化h264解码库avcodec_init();av_register_all();AVFrame*pFrame_=NULL;AVCodecContext*codec_=avcodec_alloc_context();/*findthevideoencoder*/AVCodec*videoCodec=a 阅读全文
posted @ 2013-09-17 16:16 DoubleLi 阅读(40940) 评论(1) 推荐(2) 编辑

摘要:呵呵,贴在这里记录一下。[cpp]view plaincopy #include#include#include#include#pragmapack(2)usingnamespacestd;//下面两个结构是位图的结构typedefstructBITMAPFILEHEADER{u_int16_tbfType;u_int32_tbfSize;u_int16_tbfReserved1;u_int16_tbfReserved2;u_int32_tbfOffBits;}BITMAPFILEHEADER;typedefstructBITMAPINFOHEADER{u_int32_tbiSize;u_i 阅读全文
posted @ 2013-09-17 16:15 DoubleLi 阅读(6479) 评论(0) 推荐(0) 编辑

摘要:在网上搜了很久相关的问题,但是好像没有一个在linux下跑得比较完整的例子,不过经过自己一番搜索和总结,终于做出来了,哈哈,看下面的代码吧。这个例子可以保存成bmp或者jpeg格式的图片。下面的结构是保存bmp图片是用到的结构:[cpp]view plaincopy //把内存对齐定义为2个字节,//这个可以避免BITMAPFILEHEADER//出现4字节的对齐而使bmp位图的头出错#pragmapack(2)//下面两个结构是位图的结构typedefstructBITMAPFILEHEADER{u_int16_tbfType;u_int32_tbfSize;u_int16_tbfReser 阅读全文
posted @ 2013-09-17 16:12 DoubleLi 阅读(8770) 评论(0) 推荐(0) 编辑

摘要:演示截图:代码简介或代码解析:如何用ATL创建ActiveX控件实现了一个ActiveX控件,它在一个圆内部有个正多边形,当用户在多变形内部单击将会使多边形的边数在当前的基础上+1,在多变形外部单击将会使多边形的边数在当前的基础上-1,并能改变多边形的颜色.最后举了两个例子说明了如何使用这个刚刚生产得控件.一个是把该控件应用到网页中,一个则是用于一个基于对话框的程序中.详细代码请下载压缩包.(一) 创建工程(1) 打开VC6集成开发环境,按新建按钮,选择PROJECT标签。(2) 选择ATL COM AppWizard。(3) 在右侧Project Name下面的空白处输入"Poly 阅读全文
posted @ 2013-09-17 16:09 DoubleLi 阅读(4428) 评论(0) 推荐(0) 编辑

摘要:摘要:目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发。MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。这两种框架在它们对于开发ActiveX的用途上会合了。我们将看看这两种框架是如何适用于创建ActiveX控件的——突出其优缺点,亲自经历创建一个控件的过程——以便你能够决定何时使用一种框架,何时使用另一种。 如果你希望用C++来写ActiveX®控件,有两个流行的框架,一个是Microsoft® Foundation Classes (MFC),另一个是AT 阅读全文
posted @ 2013-09-17 16:08 DoubleLi 阅读(840) 评论(0) 推荐(0) 编辑

摘要:1.对OpenCV的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎不大稳定,对32F和16S、8U的图像数据支持上bug重重。我用cvFilter2D函数进行线性滤波,屡屡出错,后来一查原来是大bug。后来用cvmGet来取矩阵元素也是频繁出错,仔细检查了N遍确保程序没问题之后在yaho 阅读全文
posted @ 2013-09-17 16:02 DoubleLi 阅读(714) 评论(0) 推荐(0) 编辑

摘要:您可以到http://www.ijg.org/网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到其中的libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h这几个文件,下面我就介绍一下怎样在自己的程序里嵌入图像压缩功能。 一、建立编译环境 所谓建立编译环境,其实非常简单,就是把上面提到的4个文件拷贝到你的项目文件夹下,把libjpeg.lib添加到你的项目中,然后在你完成压缩功能的那个文件里加入#include "jpeglib.h&q 阅读全文
posted @ 2013-09-17 15:45 DoubleLi 阅读(3170) 评论(0) 推荐(1) 编辑

摘要:1、首先从此处下载源代码http://www.codeproject.com/KB/graphics/cximage.aspx2、然后将里面的工程全部编译一下,我觉得应该是生成对应的库。3、然后用vc建个工程,同时将源代码里面除了Demo这些文件夹,全部考到新建工程的同一目录。4、接下来就是最麻烦的配置了: |- C/C++| |- Code Generation| | |- Use run-time library : Multithreaded DLL (must be the same for| | | all the linked libraries) //应该只要是多线程DLL即可, 阅读全文
posted @ 2013-09-17 15:44 DoubleLi 阅读(596) 评论(0) 推荐(0) 编辑

摘要:1.http://blog.csdn.net/huxiangyang4/archive/2010/07/12/5728888.aspx 我认为是最好的2.http://blog.csdn.net/axlrosek/archive/2007/03/29/1545496.aspx 当字典用3.http://topic.csdn.net/u/20100518/17/98f52459-3158-492a-b6df-b1863336c6bb.html 改jpeglib.h头文件版本4.http://blog.csdn.net/achellies/archive/2009/06/04/4238056.as 阅读全文
posted @ 2013-09-17 15:43 DoubleLi 阅读(443) 评论(0) 推荐(0) 编辑

摘要:一、vc编译jpeglib库1、下载源代码下载地址:http://www.ijg.org/。注意:一定要下载win32版本2、编译源代码.A、解压源代码,修改源代码中jconfig.vc为jconfig.h;B、添加环境变量PATH,C:/Program Files/Microsoft Visual Studio/VC98/Bin;C、修改makefile.vc,将Pull in standard variable definitions下面的一行换为:!include ;D、进入命令提示环境下,输入:vcvars32回车,这是一个用来设置VC路径环境的批处理;E、编译生成库文件命令:nmak 阅读全文
posted @ 2013-09-17 15:42 DoubleLi 阅读(1252) 评论(0) 推荐(0) 编辑

摘要:一、OpenGL简介 众所周知,OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口。但最近几年它成为一个非常优秀的开放式三维图形接口。实际上它是图形软件和硬件的接口,它包括有120多个图形函数,"GL"是"GRAPHIC 阅读全文
posted @ 2013-09-17 15:33 DoubleLi 阅读(1278) 评论(0) 推荐(0) 编辑

摘要:1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎不大稳定,对32F和16S、8U的图像数据支持上bug重重。我用 cvFilter2D函数进行线性滤波,屡屡出错,后来一查原来是大bug。后来用cvmGet来取矩阵元素也是频繁出错,仔细检查了N遍确保程序没问题之后在ya 阅读全文
posted @ 2013-09-17 15:28 DoubleLi 阅读(7170) 评论(0) 推荐(0) 编辑

摘要:vs2008 + OpenCV-2.1.0-win32-vs2008安装1. 安装vs2008+sp12. 安装opencv-2.1.0-win32-vs2008,假设安装目录为c:/opencv2.1。安装过程中注意选择添加环境变量,把 “add it to your Current User PATH “前的复选框勾上 .3. 为vs2008配置openvc,过程如下: 工具->选项->项目和解决方案->vc++目录, “显示一下内容的目录”下拉列表中选择“包含文件”,添加条目“C:/OpenCV2.1/include/opencv”; “显示一下内容的目录”下拉列表中选 阅读全文
posted @ 2013-09-17 15:25 DoubleLi 阅读(508) 评论(0) 推荐(0) 编辑

摘要:1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4.new可以看成两个动作:1。分配内存(相当于malloc)2。引发构造函数。 new 是个操作符,和什么"+","-","="...有一样的地位. malloc是个分配内存的 阅读全文
posted @ 2013-09-17 11:26 DoubleLi 阅读(1362) 评论(0) 推荐(0) 编辑

摘要:目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换, 第一种由COM库提供的函数 char* _com_util::ConvertBSTRToString(BSTR ); BSTR _com_util::ConvertStringToBSTR(char*); Example // ConvertBSTRToString.cpp #include #include #pragma comment(lib, "comsupp.lib") int main() { BSTR bstrText = ::SysAllocString(L"Test"); w 阅读全文
posted @ 2013-09-17 09:29 DoubleLi 阅读(2599) 评论(0) 推荐(0) 编辑

摘要:在C++中有两种类型可以用于表示字符,char和wchar_t。但是字符串格式的标准却有很多种,如ASCII,UTF8,UTF16,UTF32等等。字符串的格式和char/wchar_t 的关系是什么呢?首先要理解Unicode和UTF-8的关系,可以参考我转帖的文章:http://www.cnblogs.com/whyandinside/archive/2012/02/05/2338841.html额外还有几个问题需要解决:1. UCS-2、UCS-4、BMPUCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位 阅读全文
posted @ 2013-09-17 09:19 DoubleLi 阅读(1177) 评论(0) 推荐(0) 编辑

摘要:转自:http://apps.hi.baidu.com/share/detail/17798660字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得字符编码的知识。不注意的人可能对这个不在意,但这些名词有时候实在让人迷惑,对想学习计算机知识的人来说,搞懂它也十分重要,我也是在学习中慢慢了解了一些这方面的知识。1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符 阅读全文
posted @ 2013-09-17 09:16 DoubleLi 阅读(829) 评论(0) 推荐(0) 编辑

摘要:GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*。我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *。得益于网上牛人们的总结,我用到以下几种基本方法去实现三者间的转换:代码段一:char * 转WCHAR *:::MultiByteToWideChar(CP_ACP,0,(const char *)res,int count,char * dest,int count);类似地,WCHAR *转char *:WideCharToMultiByte(CP_ACP, 0,.........);CStrin 阅读全文
posted @ 2013-09-16 17:55 DoubleLi 阅读(13048) 评论(0) 推荐(0) 编辑

摘要:一、文件的复制#include #include using namespace std;int CopyFile(char *SourceFile,char *NewFile){ifstream in;ofstream out;in.open(SourceFile,ios::binary);//打开源文件if(in.fail())//打开源文件失败{ cout>source;cout>NewFile;if(CopyFile(source,NewFile)){ cout#include #include void main(){char source[256];//文件路径cout 阅读全文
posted @ 2013-09-16 17:46 DoubleLi 阅读(1633) 评论(0) 推荐(0) 编辑

摘要:(1) 使用ANSI C的库函数 可以使用ANSI C的以下几个库函数: FILE *fopen( const char *filename, const char *mode ); int fclose( FILE *stream ); size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); 示例源码如下:/* cpc.c use c... 阅读全文
posted @ 2013-09-16 17:28 DoubleLi 阅读(1742) 评论(0) 推荐(0) 编辑

摘要:C++实现线程池。 欢迎转载,转载请注明原出处:http://blog.csdn.net/ithzhang/article/details/9020283 代码地址:https://github.com/ithzhang/ThreadpoolLib.git本文介绍的线程池采用C++语言,在windows平台下实现。此版本为Version1.0,以后还会推出功能更完备的后续版本。本着技术分享的精神写作本文同时公布源代码。欢迎大家指出该线程池存在的问题并对当前性能进行讨论。 适用场景: 1.需要大量的线程来完成任务,且完成任务的时间比较短。 2.对性能要求苛刻的应用,比如要求服务... 阅读全文
posted @ 2013-09-15 00:02 DoubleLi 阅读(6306) 评论(0) 推荐(0) 编辑

摘要:关于Char* ,CString ,WCHAR*之间的转换问题GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*。我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *。得益于网上牛人们的总结,我用到以下几种基本方法去实现三者间的转换:char * 转WCHAR *:::MultiByteToWideChar(CP_ACP,0,(const char *)res,int count,char * dest,int count);类似地,WCHAR *转char *:WideCharToMultiByte(C 阅读全文
posted @ 2013-09-14 23:44 DoubleLi 阅读(946) 评论(0) 推荐(0) 编辑

摘要:在MFC程序设计的学习过程中最令人感到难受,甚至于有时会动摇学习者信心的就是一种对于程序的一切细节都没有控制权的感觉。这种感觉来源于学习者不知道一个MFC程序是如何运行起来的(即一个MFC程序的执行流程)和MFC程序的设计思想和机制,即使是写过Windows程序的学习者,也会感到非常迷惘并且无从下手。而这种感觉的出现会使大家认为自己离开了书本上的例子就无法设计编制程序。下面我就来说一说一个MFC具体是如何被执行的。在阅读本文之前,你要有一定的Windows程序设计基础,知道Windows程序的运行流程,如不清楚,可先看看我写的这篇文章——解说一个简单的Win32程序。 一、单文档项目特点简述以 阅读全文
posted @ 2013-09-14 23:38 DoubleLi 阅读(2835) 评论(0) 推荐(0) 编辑

摘要:Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需要转换类型 #include WCHAR *str=L"unicodestring"; bstr_t str1=str; TextOut(0,0,(char*)str1); Q 如何实现ANSI和UNICODE的相互转换 A 将ANSI转换到Unicode (1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&a 阅读全文
posted @ 2013-09-14 22:49 DoubleLi 阅读(723) 评论(0) 推荐(0) 编辑

摘要:http://blog.csdn.net/ithzhang/article/details/7916732转载请注明出处!!第二章:字符和字符串处理 使用vc编程时项目--》属性--》常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集。一般情况下说Unicode都是指UTF-16。也就是说每个字符编码为两个字节。65535个字符可以表示世界上大部分的语言。为了软件使国际化大家再编程时应该使用unicode字符集。由于原来学过c语言,不习惯使用Unicode,为了省事而直接在配置属性里调为多字节字符集,这是个不好的习惯。C语言的字符串,以及对这些字符 阅读全文
posted @ 2013-09-14 22:35 DoubleLi 阅读(391) 评论(0) 推荐(0) 编辑

摘要:这篇文章是我两年多前写给同事看的,当时不少同事对编码了解甚少,直到现在发现还是很多人对编码了解甚少,所以我就把这篇文章发出来让大家参考一下,希望对一些人有帮助,不过这篇文章是当时花了3个小时左右写的,错误在所难免。字符编码历史计算机,发明在20世纪中期西方国家。计算机内部使用二进制作为表示任何东西的基础,为了能够在计算机中使用整数、浮点数等都要对其进行编码,只是这个编码是在硬件层的(CPU指令),而计算机要与人进行交互就要对人所能识别的文字进行编码,ASCII就在那个时候诞生。ASCII(AmericanStandardCodeforInformationInterchange,美国信息互换标 阅读全文
posted @ 2013-09-12 20:56 DoubleLi 阅读(757) 评论(0) 推荐(1) 编辑

摘要://========================================================================//TITLE:// MultiByteToWideChar和WideCharToMultiByte用法详解//AUTHOR:// norains//DATE:// 第一版:Monday 25-December -2006// 增补版:Wednesday 27-December -2006// 修订版:Wednesday 14-March-2007 (修正之前的错误例子)//Environment:// EVC4.0 + Standard SDK/ 阅读全文
posted @ 2013-09-12 17:16 DoubleLi 阅读(554) 评论(0) 推荐(0) 编辑

摘要:这是两个相关的程序,前者是后者的基础。实际上前一个程序也是在前面博文的基础上做的修改,请参考《在OpenCV中利用鼠标绘制直线》。下面贴出代码。程序之一,在OpenCV中利用鼠标绘制矩形[c-sharp]view plaincopy #include#include#include#pragmacomment(lib,"cv.lib")#pragmacomment(lib,"cxcore.lib")#pragmacomment(lib,"highgui.lib")IplImage*src=0;IplImage*dst=0;voidon 阅读全文
posted @ 2013-09-12 13:42 DoubleLi 阅读(4304) 评论(1) 推荐(0) 编辑

摘要:今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体。然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常的显示窗体。但后来做了一点小小的改动,即把dll改成动态连接到MFC的dll,即“Use MFC in a shared dll ”,然后在A.exe中调用该dll,结果窗体怎么都不显示。后 共有三种方法: 1. 在dll中自动切换,在dll的显示窗体的接口函数中使用AFX_MANAGE_STATE(AfxGetStaticModuleState()),如下: void ShowDlg(vo... 阅读全文
posted @ 2013-09-04 22:35 DoubleLi 阅读(454) 评论(0) 推荐(0) 编辑

摘要:最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用。 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器:这里说的STL容器,但主要则是指容器,字符串类,但其实可以推广到在STL中提供的任何类型,这里说的公共接口,是指需要暴露给客户的sdk头文件,包括函数签名,或者类成员变量;也可以说,不要在暴露给客户的头文件中包含STL的头文件。原因分析为什么有这个结论,我们可以从几个方面来论述:客户端使用的STL版本可能不同因为STL作为标准库,Framework编译的时候使用的STL,与客户端编译的时候使用的STL,版本是有可能不一样的,比如Fr 阅读全文
posted @ 2013-09-04 10:03 DoubleLi 阅读(830) 评论(0) 推荐(0) 编辑

摘要:今天在写一个函数,需要将map作为一个引用参数传入函数体内部进行赋值,结果编译通过,执行时总是崩溃,在网上找到了一些作者写的blog,详细解释了这种情况发生的原因,特转载在这里,便于自己今后查询。原文1:有一个功能模块, 本来是写在主程序当中. 现在觉得有必要将它写成一个 DLL. 于是开始代码的移植. 费了好大的劲. 终于移植完成, 通过编译了. 这时运行程序, CRASH!调试之, 发现是在一个 map 的赋值出现了问题.看 vc6 自带的 STL 的代码:map 的赋值操作, 也就是其中的树赋值操作._Myt& operator=(const _Myt& _X){ _Tr 阅读全文
posted @ 2013-09-04 09:48 DoubleLi 阅读(3138) 评论(0) 推荐(0) 编辑

摘要:百度了一天,现在把结论放上边:1、不要用STL(std::string属于STL)来跨模块传输数据,例如:dll(so)之间,dll(so)和exe(elf)之间。解决方法:使用基本类型、数组、结构体,或者使用下面文章中的方法。2、不要跨模块申请和释放内存。解决方法:可以实现一个接口来释放,其他方法参考下面。今天用个测试exe调用了个dll,有个接口返回std::string,经调试发现挂在该函数return之后,怀疑是string不适合作为返回值,百度一番发现下面这篇解释的很详细。用了很久的dll也会出问题,而且他们用没事,他们用的是vs2010未升级,我怀疑是vs2010升级sp1后和之前 阅读全文
posted @ 2013-09-04 09:46 DoubleLi 阅读(1058) 评论(0) 推荐(0) 编辑

摘要:STL跨平台调用会出现很多异常,你可以试试.STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释。原因分析:一 句话-----如果任何STL类使用了静态变量(无论是直接还是间接使用),那么就不要再写出跨执行单元访问它的代码。除非你能够确定两个动态库使用的 都是同样的STL实现,比如都使用VC同一版本的STL,编译选项也一样。强烈建议,不要在动态库接口中传递STL容器!!STL不一定不能在DLL间传递,但你必须彻底搞懂它的内部实现,并懂得为何会出问题。微软的解释:http://sup 阅读全文
posted @ 2013-09-04 09:24 DoubleLi 阅读(6292) 评论(0) 推荐(0) 编辑

摘要:前一篇博文中我曾仔细介绍过如何查看C/C++代码的依赖项关系图,在这篇文章中我将会介绍如何使用Visualization and Modeling Feature Pack工具包,查看C/C++源代码的Include关系图,这个功能是针对C/C++编程语言本身的特性而新加入的。在这里我依然会使用工程Hilo作为案例,展示如何以图形化的方式显示工程中源代码文件与头文件之间Include关系。首先,在Visual Studio下打开工程Hilo,在菜单栏中选择菜单“体系结构->生成依赖关系图->By Include File”第一次操作时,有时我们将会发现一个名为“Analyzing 阅读全文
posted @ 2013-09-03 09:55 DoubleLi 阅读(5593) 评论(0) 推荐(0) 编辑

摘要:1、在具备必需的编程基础知识后,试图理解一份完整的代码可以从以下几个方面入手: 1)首先运行以下程序,从外部角度感受一下有哪些功能。 2)了解代码中每个类的功能。看看文档,或者类的注释,那么仅仅是类名也能对类有个大致的印象 3)整理各个类之间的引用、包含等关系,从功能和实现角度,理出类的层次关系 4)在得出类的层次关系的基础,把重点放在各个层次的核心类中,往往核心类包含的功能较为多而复杂,争取明白它包含那几组接口,实现了那些功能。同时,这里重要的一点是,对于一些工具类,算法类,或者实现某些特殊系统功能的类,不管它多么复杂,代码多么长,只要不是类层次关系上的几个核心类,先全扔到一边去。 5)运行 阅读全文
posted @ 2013-09-03 09:49 DoubleLi 阅读(5937) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示