c
文章平均质量分 79
jnpher
软件工程的初学者!什么都不懂的小混混!
展开
-
使用 Visual Assist–VS助手 快速添加注释
1:打开VA 的Options,选择 Advanced-> Suggestions->Edit VA Snippets2:然后在C++下new一个com,然后填写Title,Shutcut,和最下边你要插入的内容: 比如把shutcut设置为com,那么当你在程序中输入com的时候,就会弹出title,按回车就会把你输入的内容插入到程序中$DATE$ $HOUR$: $MINU...原创 2013-05-07 11:05:16 · 3023 阅读 · 0 评论 -
c++ 旋转算法 硬件加速
c++旋转算法:此算法主要优点在于采用先计算矩阵参数速查表来做硬件加速。首先要有个基础表其定义与声明如下: typedef struct tagAreaLookUpRecord { __int64 nFactQW0; __int64 nFactQW1; __int64 nFactQW2; __int64 nFactQW3; }AreaLookUpReco...原创 2014-01-27 18:02:02 · 2581 阅读 · 0 评论 -
c++ 复数控制向量旋转
std::complex 复数可以很方便的做旋转以下为实现: //待旋转的点坐标 (fRotationX,fRotationY)//中心点坐标 (fCenterX, fCenterY)//旋转角度void Rotation(float &fRotationX, float &fRotationY,float fCenterX, float fCente...原创 2014-02-11 15:37:44 · 3135 阅读 · 0 评论 -
C++ VC 开发3D风格按钮控件
主要是通过 Owner Draw 属性实现。1.运行 AppWizard 生成一个基于对话框的 test 工程,在对话框中加入一个 CButton 控件。在 CButton 控件的 General 属性页将控件的 ID 改为 IDC_3DTEXTBTN,Caption 改为“谁与争疯”,在控件 Styles 属性页选中 OwnerDraw,其余设置保持默认。2.用 类向导 创建一个新类:C...原创 2014-02-11 09:42:43 · 1966 阅读 · 0 评论 -
c++ 打印堆栈信息
void printStack( void ){ unsigned int i; void * stack[ 100 ]; unsigned short frames; SYMBOL_INFO * symbol; HANDLE process; process = GetCurrentProcess(); SymInitialize( p...原创 2014-02-21 08:47:34 · 9931 阅读 · 0 评论 -
boost 计时器精度扩展 progress_timer 计时器扩展 类模版
//---------------------xxj#include <boost/progress.hpp>template<int N = 2>class new_progress_timer : public boost::timer, private boost::noncopyable//:public boost::progress_timer{p...原创 2014-02-07 14:05:32 · 1250 阅读 · 0 评论 -
程序结束后调用的函数 注册终止函数
相关函数:_exit, atexit, exit注册终止函数:1,on_exit头文件:#include <stdlib.h>定义函数:int on_exit(void (* function) (int void*), void *arg);函数说明:on_exit()用来设置一个程序正常结束前调用的函数. 当程序通过调用exit()或从main 中返回时, 参...原创 2014-01-16 18:02:03 · 1423 阅读 · 0 评论 -
windows 禁用中文输入法
windows 程序禁用中文输入法方法:1、添加windows头文件及dll文件 //输入法相关#include <imm.h>#pragma comment (lib ,"imm32.lib")//---------------------------end 2、禁用: HIMC g_hIMC = NULL;//g_hIMC 用于恢复时使用...原创 2014-01-06 11:21:07 · 10388 阅读 · 2 评论 -
sizeof的内幕
0. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,转载 2013-12-13 10:53:54 · 665 阅读 · 0 评论 -
生成dmp的程序方法
1、生成dmp的程序#include dbghelp.h> #pragma comment(lib, "dbghelp.lib")//设置异常处理回调函数SetUnhandledExceptionFilter(UnhandledExceptionFilter);//异常处理代码//EXCEPTION_EXECUTE_HANDLER equ 1 表示我转载 2013-12-04 17:44:09 · 5345 阅读 · 0 评论 -
std::tr1::function
std::tr1::function在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为在本质上讲全局函数转载 2013-12-04 16:15:33 · 680 阅读 · 0 评论 -
磁盘IO过高 处理办法
针对系统中磁盘IO负载过高的指导性操作主要命令:echo deadline > /sys/block/sda/queue/scheduler注:以下的内容仅是提供参考,如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库操作,减小磁盘压力,文件的话,可以利用raid来减轻压力 一)I/O调度程序的总结:1)当向设备写入数据块或是从设备读出数据块时,请求都被安置在...原创 2014-03-06 15:17:10 · 30494 阅读 · 0 评论 -
获得模块句柄
/* 获取自己模块句柄*/HMODULE GetSelfModuleHandle(){ MEMORY_BASIC_INFORMATION mbi; return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE) mbi.AllocationBase : NULL);} ...原创 2014-03-26 15:18:32 · 3658 阅读 · 0 评论 -
C++内存泄露的检测
C++内存泄露的检测 一 简单的对内存的分配和释放跟踪,并将结果输出到console,它也是一般C++内存泄露的检测原理,来自C++编程思想:(比较简单,大家都可以看的明白的哦)实现如下:MemCheck.h?//: C02:MemCheck.h#ifndef MEMCHECK_H#define MEMCHECK_H#include转载 2013-06-17 15:36:57 · 1103 阅读 · 0 评论 -
控制台设置回调函数,SetConsoleCtrlHandler
函数原型: BOOL SetConsoleCtrlHandler( PHANDLER_ROUTINE HandlerRoutine, // 回调函数 BOOL Add // 表示添加还是删除 );功能:向系统添加或删除回调函数; 和linux下的signal函数作用相识。 使用方法:[cpp] view plaincopyBOOL WINAPI HandlerRou...原创 2015-05-20 23:12:23 · 2188 阅读 · 0 评论 -
Real-World Concurrency阅读笔记
文章名称: Real-World Concurrency链接: http://queue.acm.org/detail.cfm?id=1454462由于文章是领域内高人多年经验的总结,有很多地方理解不够深刻,只能先写下自己的理解。文章首先介绍了并发行的历史:提高系统并发性的唯一目标就是提高性能。并发性提高性能的三种方式:减少、隐藏延迟;提高吞吐量。接下来是一系列的建议:建议1: 辨...原创 2014-11-27 15:31:15 · 1716 阅读 · 0 评论 -
cocos2dx3.x 文字模糊解决方法
cocos2dx 真是要命啊,由于公司要做跨平台游戏,故在windows里面cocos2dx 经常抽风。没办法啊,本来不想改源码的,且改且珍惜啊。最近又遇到了在windows下面文字模糊的情况,由于字体绘制跟图片绘制如出一辙,故断定一定是字体没有开启不抗锯齿功能。因此只能单步调试:找到了字体初始化入口:Texture2D::initWithString bool Text...原创 2014-08-25 15:12:52 · 9610 阅读 · 5 评论 -
MFC 获取自己模块路径
/* 获取自己模块句柄*/HMODULE GetSelfModuleHandle(){MEMORY_BASIC_INFORMATION mbi;return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE) mbi.AllocationBase : NULL);}/* ...原创 2014-06-16 17:03:26 · 1894 阅读 · 0 评论 -
内部连接和外部连接
声明和定义 声明 是将一个名称引入一个程序. 定义 提供了一个实体在程序中的唯一描述. 声明在单个作用域内可以重复多次(类成员除外),定义在一个给定的作用域内只能出现一次. 一个定义就是一个声明,除非: 它定义了类的一个静态数据成员. 它定义了类的非内联成员函数. 内部连接和外部连接 当一个实现文件(.cpp ...)编译时,预处理器(CPP)首先...原创 2014-06-11 23:13:29 · 3752 阅读 · 0 评论 -
VS2008中opengl配置
1.各种库的配置(1)glew下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.zip/download将include文件夹下的.h文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目录中(没有GL目录就自己创建一个,这里...原创 2014-07-18 14:22:14 · 784 阅读 · 0 评论 -
转盘旋转算法
今天应公司要求,实现一个转盘旋转算法, 网上找了很多资料,再根据实际效果构造出了一个算法,其实原理很简单,下面我就来做一下总结:希望对遇到此类问题的朋友有所帮助或启发。 首先:转盘旋转分几个阶段:加速,减速,停止到指定位置。 当然旋转当然与角度与弧度有关,弧度在这里我就不介绍了,当然是用旋转角度来转换的,公式为:角度/180 * PI 一...原创 2013-09-29 11:40:51 · 10428 阅读 · 7 评论 -
Swift语言概览
Swift语言概览关于这篇文章简要介绍了苹果于WWDC 2014发布的编程语言——Swift。前言在这里我认为有必要提一下Brec Victor的Inventing on Principle,Swift编程环境的大部分概念都源自于Brec这个演讲。接下来进入正题。Swift是什么?Swift是苹果于WWDC 2014发布的编程语言,这里...原创 2014-06-03 15:36:46 · 1781 阅读 · 0 评论 -
直接创建OLE对象,未注册的ocx也可以使用(适用于com接口)
HMODULE flashDLL = LoadLibrary(L"\\Flash10c.dll") 先加载dll,以flash插件为准REFCLSID rclsid :class id REFIID riid :接口id LPVOID * ppv :返回查询的结果 typedef HRESULT (__stdcall *DllGetClassObjectFu...原创 2014-03-26 15:25:34 · 3504 阅读 · 0 评论 -
WinDbg分析DMP文件方法完全攻略
前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试(关于vs2010远程调试的方法,请参考http://blog.sina.com.cn/s/blog_a459dc转载 2013-12-04 17:59:55 · 4775 阅读 · 0 评论 -
Boost智能指针——weak_ptr
Boost智能指针——weak_ptr循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include #include #include #include class parent;class children;typedef boost::shared_ptr parent_转载 2013-11-28 12:53:37 · 523 阅读 · 0 评论 -
Overlapped I/O 学习
1、Overlapped I/O 的含义Overlapped I/O 是WIN32的一项技术,可以让操作系统进行I/O操作而不阻塞的程序执行,并且I/O操作完成时通知程序。事实上Overlapped I/O操作系统最终是以线程的方式实现。2、使用Overlapped I/OWindows中通过CreateFile来打开各种资源。如:文件、串口、并口、Name pipes、Co...原创 2012-09-26 22:45:29 · 1762 阅读 · 0 评论 -
C++四种cast操作符
C 风格(C-style)强制转型如下:(T) expression 或T(expression) //函数风格(Function-style)两种形式之间没有本质上的不同。对于具有转换的简单类型而言C 风格转型工作得很好。然而,这样的转换符也能不分皂白地应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:reinterpret_cast, sta...原创 2013-01-04 09:42:59 · 573 阅读 · 0 评论 -
c++ 高低位例子
#include <stdio.h>#include <windows.h>main(){DWORD a=0x12345678;char * a1=(char *)&a;char b[4];b[0]=(*a1);b[1]=*(a1+1);b[2]=*(a1+2);b[3]=*(a1+3);printf("%0x %0x %0x %0x\n",b...原创 2012-12-26 16:55:07 · 2215 阅读 · 0 评论 -
c++回调函数 callback
C++中实现回调机制的几种方式(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一...原创 2012-12-05 23:03:19 · 51471 阅读 · 4 评论 -
string和wstring相互转换
第1种方法:采用ATL封装_bstr_t的过渡:(注,_bstr_是Microsoft Specific的,所以下面代码可以在VS2005通过,无移植性);#include <string>#include <comutil.h>using namespace std;#pragma comment(lib, "comsuppw.lib")string ws2s(...原创 2012-10-27 21:15:54 · 829 阅读 · 0 评论 -
string、wstring、cstring、 char、 tchar、int、dword转换方法
string、wstring、cstring、 char、 tchar、int、dword转换方法最近编程一直头痛这集中类型的转化,明知都可以转却总是记不住,不断的上网查来查去,在这里小结一下。以备以后方便使用,当然有些方法可能不是最新的,或者最简单的,但是对于自己已经了解的使用起来应该方便的多: 1》string转wstringwstring s2ws(con...原创 2012-10-27 20:14:40 · 732 阅读 · 0 评论 -
mouse_event
简介函数功能:该函数综合鼠标击键和鼠标动作。 VOID mouse_event( DWORD dwFlags, // motion and click options DWORD dx, // horizontal position or change DWORD dy, // vertical position or change DWORD dwData, /...原创 2012-10-24 12:38:10 · 1381 阅读 · 0 评论 -
Callback 函数
说明:此文章出自《深入浅出mfc》第6章的“Callback 函数”Callback 函数 Hello的OnPaint在程序收到 WM_PAINT之后开始运作。为了让"Hello, MFC" 字样从天而降并有动画效果,程序采用LineDDA API 函数。我的目的一方面是为了示范消息的处理,一方面也为了示范 MFC 程序如何调用 Windows API 函数。许多人可能不熟悉Lin...原创 2012-10-17 15:56:10 · 1124 阅读 · 0 评论 -
静态成员(变量与函数)
注:一下来自侯捷著《深入浅出mfc 第二版》静态成员(变量与函数) 我想你已经很清楚了,如果你依据一个类产生出三个对象,每一个对象将各有一份成员变量。有时候这并不是你要的。假设你有一个类,专门用来处理存款账户,它至少应该要有存户的姓名、地址、存款额、利率等成员变量:class SavingAccount{private:char m_name[40]; // 存户姓名...原创 2012-10-17 15:31:07 · 523 阅读 · 0 评论 -
异步消息的传递-回调机制
1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的转载 2012-10-17 15:23:25 · 694 阅读 · 0 评论 -
c++ 中的重载全局new,delete
最近做一个小项目,对c++又有很多新的理解。实在不的不让人发出感叹,c++太强大了,绝对不是一朝一夕就可以领悟她的内涵的。 首先我们要清楚,为什么我们要重载new,和delete了?这还不是指针造成的,确实指针是一件让人喜欢的东西,用起来如此让人喜欢,让人顺手。然而小程序我们完全可以避免内存泄露问题,大程序就不那么容易了,然而我们有一种特别好的方法可以跟踪我们new,和delete动...原创 2013-01-05 15:28:14 · 592 阅读 · 0 评论 -
内联(inline)函数与虚函数(virtual)的讨论
内联(inline)函数与虚函数(virtual)的讨论函数的inline属性是在编译时确定的, 然而,virtual的性质是在运行时确定的,这两个不能同时存在,只能有一个选择,文件中的inline关键字只是对编译器的建议,编译器是否采纳是编译器的事情。 1. 内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。2. 我们之所以能看到...原创 2013-01-18 11:04:56 · 712 阅读 · 0 评论 -
编写批处理文件编译.Net工程
使用随Visual Studio一块安装的devenv.com,再加上参数可以对.Net进行编译,如下 "D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com" d:\Projects\YourProject.csproj /rebuild "Release" "D:\Program Files (x86)...原创 2013-11-01 14:03:49 · 2340 阅读 · 0 评论 -
windows 操作系统 配置directshow sdk
下载DirectShow由于现在directShow没有和direcxtx一起发布,而是和windows sdk 打包发布了,可以到官网下载最新的windows sdk 开发包。windows sdk 地址:http://www.microsoft.com/download/en/details.aspx?id=8442按系统类型下载。GRMSDK_EN_DVD.iso x86GRMSDKIA...原创 2013-10-13 01:03:37 · 1494 阅读 · 0 评论 -
Boost::tuple
引领Boost(三)(Boost::tuple)Boost::tuple一 Boost::tuple 很多的时候我们经常需要为我们的函数返回多个值,一般的做法是通过传入非常量的指针或引用,但是这样的话可能可读性就要差一些,使用者可能需要确切的文档才能确定到底哪个是返回值,为了更好的可读性,我们可以使用class或struct来封装我们要返回的多个值,然后返回封装struc转载 2013-10-12 10:46:29 · 1794 阅读 · 0 评论