程序艺术
文章平均质量分 64
蓝风23
人体运动、生物特征、高性能移动计算、人性化智能交互
展开
-
总结最全的内存管理文章
欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。7.1内存分配方式内存分配方式转载 2009-03-22 10:25:00 · 669 阅读 · 0 评论 -
ATL 窗口类源代码学习笔记
可参考:WTL流程分析-初稿ATL中的Thunk机制学习1,CWindowATL有一个专门为窗口设计的基础类,可以做全部的窗口操作,这就是CWindow。它实际上就是对HWND操作的一个包装类,对几乎所有以HWND句柄为第一个参数的窗口API的进行了封装,例如:SetWindowText() 和 DestroyWindow()。CWindow类有一个公有成员m_hW转载 2009-06-30 18:08:00 · 619 阅读 · 0 评论 -
防CListCtrl闪烁
1.使用SetRedrawm_ctlList.SetRedraw(FALSE); //以下为数据操作//……//恢复窗口重绘m_ctlList.SetRedraw(TRUE);m_ctlList.RedrawWindow();2.使用LockWindowUpdatem_ctlList.LockWindowUpdate(); //以下为数据操作//……//原创 2012-07-17 09:03:22 · 640 阅读 · 0 评论 -
C++单例模式
class Singleton{ static std::auto_ptr m_pInstance; protected: //拒绝任何形式的手动创建 Singleton(){} public: ~Singleton(){} //返回单件实例 static Singleton* Instance() { if(!m_pInstance.get()) { m原创 2012-11-19 23:03:44 · 907 阅读 · 0 评论 -
各种版本的++、--原子操作
汇编实现(可内嵌在C++里使用)#ifdef WIN32 void __inline atomic_inc(int* v) { __asm { mov ebx, v lock inc dword ptr [ebx] } }#else static __inline__ void atomic_inc(int *v) {原创 2012-11-07 12:44:04 · 739 阅读 · 0 评论 -
error C2679: 二进制“=”: 没有找到接受“LPCTSTR”类型的右操作数的运算符(或没有可接受的转换
字节编码问题 VS2010工程 到 低版本 会遇到类似问题 多字节集问题CString b;string str;char *chr=new char[b.GetLength()];WideCharToMultiByte(CP_ACP,0,b.GetBuffer(),-1,chr,b.GetLength(),NULL,NULL);//使用多字节集str = chr;原创 2012-08-10 14:12:37 · 3211 阅读 · 0 评论 -
多线程安全的变量模板
转自:http://blog.csdn.net/tonyxiaohome/archive/2010/01/03/5124521.aspx作者:肖舸多线程的变量同步问题,一直是困扰广大VC程序员的一大难题,其主要表现是在多线程模式下,线程间共享变量的存取不再安全,程序员无法确保变量的值在存取时是否准确可信,对此,微软给出的解决方案是使用临界区对象加以保护。但是,临界区对象使用太过于繁琐,转载 2012-12-04 23:23:42 · 757 阅读 · 0 评论 -
C++ 多线程编程总结
文章地址C++ 多线程编程总结在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:并发异步缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被转载 2012-12-04 22:02:17 · 680 阅读 · 0 评论 -
double-check
ACE_Singleton 的 instance的实现:template TYPE *ACE_Singleton::instance (void){ ACE_TRACE ("ACE_Singleton::instance"); ACE_Singleton *&singleton = ACE_Singleton::instance_i (); // Perfor原创 2012-09-06 12:05:07 · 1044 阅读 · 0 评论 -
共享内存操作函数使用及错误调试
共享内存操作1、为指定的文件创建或者打开一个命名的或者非命名的文件映射对象。HANDLE CreateFileMapping(HANDLE hFile, // handle to fileLPSECURITY_ATTRIBUTESlpAttributes, // securityDWORD flProtect, // protectionDWORD dwMaximumSiz原创 2012-11-27 23:17:23 · 1915 阅读 · 0 评论 -
Linux程序代码移植到Windows的简单方法[转摘]
一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植到Windows平台上。移植过程将尽量少修改代转载 2009-08-07 08:05:00 · 1661 阅读 · 0 评论 -
临界区声明处理
1.声明#ifdef _LINUXpthread_mutex_t mutex_lock;#endif#ifdef WIN32CRITICAL_SECTION mutex_lock;#endif2.初始化#ifdef _LINUXpthread_mutex_init(&mutex_lock, NULL);#endif#ifdef WIN32原创 2022-04-16 08:52:56 · 525 阅读 · 0 评论 -
GPU 初探
OpenCV是由Intel、Willow Garage主导开发的开源计算机视觉库,轻量而且高效,包括一系列C函数和少量C++类,是图像处理和计算机视觉方面的通用算法,支持Windows、Linux、Mac OS三大平台,迄今已有数千名开发人员从事相关工作,下载量超过200万。该项目早在1999年1月就开始启动,2009年10月1日发布了2.0正式版。 NVIDIA表示,OpenCV面向原创 2013-03-14 10:02:26 · 1429 阅读 · 0 评论 -
IplImage和char*相互转换
在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。如果8U单通道图像宽度为3,那么widthStep是 4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。也就是一个宽3高3的图像的imageData数据大小为4*3=12字 节。 空着的那个像素并不是无效的,它仍然可以被操作:IplImage* image = cv原创 2012-11-06 22:47:05 · 1786 阅读 · 0 评论 -
ffmpeg常用参数及使用
基本选项: -formats 输出所有可用格式 -f fmt 指定格式(音频或视频格式) -i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头 -y 覆盖已有文件 -t duration 记录时长为t -fs limit_size 设置文件大小上限 -ss time_off 从指定的时间(s)开始,原创 2013-05-07 12:41:52 · 5027 阅读 · 0 评论 -
使用FFMPEG进行视频截取与合并
SHELLEXECUTEINFO ShExecInfo = {0}; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = _T("open");原创 2013-11-02 10:27:10 · 1350 阅读 · 0 评论 -
文件路径中文编码问题解决方案之一
//设置代码页为简体中文,936是简体中文的代码页。 std::locale loc1 = std::locale::global(std::locale(".936")); //在这里使用 fstream、ifstream、ofstream fstream binary_file(file_name ,ios::out|ios::binary|ios::trunc ); /原创 2013-05-07 08:51:07 · 1148 阅读 · 0 评论 -
PostThreadMessage
#include windows.h>#include cstdio>#include process.h>#define MY_MSG WM_USER+100const int MAX_INFO_SIZE = 20;HANDLE hStartEvent; // thread start event// thread functionunsigned __s转载 2014-05-20 23:42:13 · 1082 阅读 · 0 评论 -
ATL简介
作者:IUnknown出处:VCHelp 一. 什么是ATL 自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大的开发人员在为COM带来的软件组件化趋势欢欣鼓舞的同时,对于COM开发技术的难度和烦琐的细节也感到极其的不便。COM编程一度被视为一种原创 2009-06-30 17:42:00 · 1058 阅读 · 0 评论 -
如何终止线程的运行(C/C++)
终止线程的运行转载 2010-11-24 17:08:00 · 2634 阅读 · 0 评论 -
Platform SDK下载地址
最新的Windows® Server 2003 SP1 Platform SDK 已不再支持Visual C++ 6.0支持VC6的最近的Platform SDK版本是Microsoft Platform SDK February 2003 根据微软的说法,Visual C++ 6.0 支持的最后一个SDK是 Windows Server 2003 PSDK 版本,幸运的是在网上也找到原创 2009-07-28 21:46:00 · 3096 阅读 · 1 评论 -
C/C++中的结构体
什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名转载 2009-03-21 20:36:00 · 612 阅读 · 0 评论 -
#define用法[资料收集自网络]
1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2原创 2009-03-21 20:43:00 · 589 阅读 · 0 评论 -
Using typedef to Curb Miscreant Code
Using typedef to Curb Miscreant CodeTypedef declarations help create platform-independent types and can even hide complex or unintelligible syntax. Predictably, however, using typedef com转载 2009-03-22 10:23:00 · 831 阅读 · 0 评论 -
VC6.0映射模式转换及如何消除坐标误差
作者:刘 涛 来源:yesky本文关键词: VC6.0 映射模式 转换 坐标误差 在实际项目的开发过程中,经常需要绘制几何图形,并且要求用户可以与图形进行交互,既用户可以按照自己的思路对图形进行局部的任意调整,这些问题在Visual C++ 6.0可视化编程中可以很容易地解决,但是笔者在处理用户交互问题上,发现在坐标映射模式下,设备坐标和转换后的逻辑坐标有些偏差,不能一致地对应起来,通过转载 2009-03-22 21:20:00 · 1379 阅读 · 0 评论 -
轻松实现类VC界面
轻松实现类VC界面作者:浙江省温岭电信局 王骏下图是一个类似VC的界面,左边、底下有两个可浮动、可变大小的控制窗口。许多朋友都希望在自己的程序中实现类似的界面,因为此种类型的界面用途很广、通用性很强,所以笔者总结了一下实现的步骤,辑此一文,并提供源代码供大家参考!下载本文示例工程 44.3K (最新更新:2004年2月8日) 一、实现原理图中两个窗口的实现类是从CCo转载 2009-03-22 20:14:00 · 691 阅读 · 0 评论 -
基于VC的连续挤压机主轴转速的动态曲线的实现
李俊强/徐振越/伍义 计算机与信息技术 1、引言随着连续挤压技术的不断发展,连续挤压机的自动化控制技术也在不断的进步,从过去的按钮操作逐渐发展为工业计算机与触摸屏技术相结合的可视化操作。对于连续挤压机,其主轴的转速的快慢会直接影响产品的质量和生产效率,所以,如何能够准确的监测主轴的转速变得十分重要。过去,我们通常凭借经验来调节主轴转速,由于在生产过程中,主轴的转速受到许多因素的影响,其实转载 2009-03-31 20:47:00 · 1260 阅读 · 1 评论 -
在树型控件中移动鼠标产生字体及颜色的变化
本文示例源代码或素材下载 在Windows XP中资源管理器左侧显示目录树结构时,当在项目中移动鼠标的时候,项目标签的文字的字体和颜色会产生变化,使目录的选择非常醒目.本人在学习制作Windows98的资源管理器的过程中,加入了相似的功能,其基本思路是:在与TreeCtrl控件关联的类(CDirTreeCtrl)中重载鼠标移动消息函数,设置相关的文本的颜色参数,在WM_PAINT消息映射函数转载 2009-03-31 21:53:00 · 740 阅读 · 0 评论 -
防止闪烁
在作界面的时候经常碰到一些比较复杂的作图情况,由于作图过于复杂和频繁,所以时常出现闪烁的情况,几经磨练,下面一些防止闪烁的方法,写下来和大家共享。 1、将Invalidate()替换为InvalidateRect()。 Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,转载 2009-04-08 17:49:00 · 624 阅读 · 0 评论 -
VC中坐标系的建立
建立一个合适的坐标系可以为我们的绘图带来很大的方便 。下面介绍一下如何在VC中建立我们想要的坐标系。一 设备坐标和逻辑坐标 设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴转载 2009-04-10 09:04:00 · 1887 阅读 · 1 评论 -
解析#pragma指令
#pragma指令对每个编译器给出了一个方法,在保持与c,c++语言完全兼容的情况下, 给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且 对每个编译器都是不同的。 #pragma#pragma是语言符号字符串。它是给出特有编译器指令和参量的字符序列。在 pragma后,可以编写翻译器作为预处理语言符号分析的任何文本。#pragma从属于宏扩展。 #pragma后转载 2009-04-19 11:32:00 · 984 阅读 · 0 评论 -
孙鑫 VC++
孙鑫VC++全套视频教程迅雷下载http://sunxin.xiakexing.com/vc.rar 说明:请使用emule或web迅雷进行下载 [孙鑫VC...20集全].Lesson.11.rmvb 详情 182MB [孙鑫VC...20集全].Lesson1.rmvb 详情 258.4MB [孙鑫VC...20集全].Lesso原创 2009-04-10 09:18:00 · 863 阅读 · 0 评论 -
Windows 2000/XP下的休眠 VC++实现
首先要取得权限,下面给出代码: #define RTN_ERROR 13 void PERR(LPTSTR szAPI, DWORD dwLastError) //休眠时调用到的一个函数,用来 ////记录休眠中遇到的错误 { LPTSTR MessageBuffer; DWORD dwBufferLength; fprintf(stderr,"%s error! (rc=%lu)/原创 2009-07-28 10:44:00 · 552 阅读 · 0 评论 -
API技巧集
一、拖动无标题窗体:包含头文件:#include $#@60;winuser.h$#@62;在窗体或组件的 OnMouseDown 事件中加入以下代码:if(Button == mbLeft){ReleaseCapture();SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);}二、弹出和关闭光驱:包含头文件:#include $#@60;m原创 2009-07-28 14:17:00 · 731 阅读 · 0 评论 -
API函数大全
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetCo转载 2009-07-28 10:20:00 · 552 阅读 · 0 评论 -
浅析本机API
作者:sunwear [E.S.T] 2004/10/02 shellcoder@163.comhttp://blog.csdn.net/sunwear此文只能说是一篇笔记.本机API是除了Win32 API,NT平台开放的另一个基本接口。本机API也被很多人所熟悉,因为内核模式模块位于更低的系统级别,在那个级别上环境子系统是不可见的。尽管如此,并不需要驱动级别去访问这个接口,普通的Win32程序转载 2009-07-28 10:23:00 · 509 阅读 · 0 评论 -
VC++6.0 解决进程访问权限问题
要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Administrator或是被给予了相应的权限,就可以具有该权限。可是,就算我们用Administrator帐号对一个系统安全进程执行OpenProcess(PROCESS_ALL_ACCESS,FALSE, dwProcess原创 2009-07-29 14:58:00 · 1252 阅读 · 0 评论 -
获取信息的有关Windows API
1.窗口信息MS为我们提供了打开特定桌面和枚举桌面窗口的函数。hDesk = OpenDesktop(lpszDesktop, 0, FALSE, DESKTOP_ENUMERATE);// 打开我们默认的Default桌面;EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc, 0);// 枚举打开桌面上的所有窗口,由回调函数实现。BOOL _原创 2009-07-28 21:08:00 · 518 阅读 · 0 评论 -
linux锁机制分析
1、读写锁(rwlock)运行机制 读写锁分为读锁(也称共享锁),写锁(也称排他锁,或者独占锁: 第一、要操作的数据区被上了读锁; 1、若请求是读数据时,上读锁,多个读锁不排斥(即,在访问数据的读者上线未达到时,可以对该数据区再上读锁);2、若请求是写数据,则不能马上上写锁,而是要等到数据区的所有锁(包括读锁和写锁)都释放掉后才能开始上写访问。原创 2015-12-12 18:04:36 · 660 阅读 · 0 评论