07 2012 档案

摘要:首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地址生长的,控制生长的就是堆栈指针了,最先压入的参数是在最上面,就是说在所有参数的最后面,最后压入的参数在最下面,结构上看起来是第一个,所以最后压入的参数总是能够被函数找到,因为它就在堆栈指针的上方。print 阅读全文
posted @ 2012-07-31 17:56 likebeta 阅读(871) 评论(0) 推荐(0)
摘要:方法一:需要你手动给工程做如下设置:右键工程属性-》配置属性-》链接器-》系统-》子系统 选择下拉的第一个控制台方法二:ctrl+f5进行运行调试第一种我的没有效果,可能第一种说的是vs2010,我的vs2008 阅读全文
posted @ 2012-07-31 15:07 likebeta 阅读(1516) 评论(0) 推荐(0)
摘要:代码之下,了无疑问#include <Windows.h>#include <iostream>using namespace std;class fuck{private: RECT m_rc; static const RECT m_emptyRc;public: fuck(RECT rc = m_emptyRc){m_rc=rc;cout<<m_rc.left<<":"<<m_rc.top<<":"<<m_rc.right<<":"& 阅读全文
posted @ 2012-07-31 14:04 likebeta 阅读(3685) 评论(1) 推荐(0)
摘要:explicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:class things{ public: things(const std::string &name = ""): m_name(name),height(0),weight(10){} int CompareTo(const things & other); std::string m_name; int height; in... 阅读全文
posted @ 2012-07-31 09:41 likebeta 阅读(4154) 评论(0) 推荐(1)
摘要:1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateRect 和 InvalidateRgn把指定的区域加到窗口的 Update Region 中,当应用的消息队列... 阅读全文
posted @ 2012-07-30 10:04 likebeta 阅读(4245) 评论(0) 推荐(0)
摘要:今天想仿制酷狗7的关闭效果, 用spy++竟然hook不住, 我以为它不是窗体,而是直接在桌面窗口上画图, 开始的想法是得到桌面没有绘制子窗口时的dc,然后在上面画, 但是我向他发送WM_PRINTCLIENT时,得到的黑色的背景, 最后查文档发现发送给这个消息,接受者窗口应该实现这个消息的处理, 最后在网上找到这篇神文:http://www.fengyuan.com/article/wmprint.html但是我发现还是不对, 因为这样也无法实现酷狗的关闭效果, 况且上面文章提供的subclass方法是使用的SetWindowlong修改消息处理过程来实现的,然而SetWindowlong在 阅读全文
posted @ 2012-07-25 16:15 likebeta 阅读(507) 评论(0) 推荐(0)
摘要:今天想获取桌面DC然后在上面作图, 结果不显示,巨郁闷:HDC hdc = GetDC(NULL); HWND hDeskWnd = GetDesktopWindow();HDC hDeskDc = GetDC(hDeskWnd);TextOut(hDeskDc, 100, 10, _T("this is my test "), 15); TextOut(hdc, 100, 10, _T("this is my test "), 15); 使用hdc可以,而hDeskDc却不行,,搜索后发现了错误:获取桌面DC的方法:GetD... 阅读全文
posted @ 2012-07-25 12:27 likebeta 阅读(3653) 评论(0) 推荐(0)
摘要:iostream 标准库支持内存中的输入/输出,只要将流与存储在程序内存中的 string 对象捆绑起来即可。此时,可使用 iostream 输入和输出操作符读写这个 string 对象。标准库定义了三种类型的字符串流: • istringstream,由 istream 派生而来,提供读 string 的功能。 • ostringstream,由 ostream 派生而来,提供写 string 的功能。 • stringstream,由 iostream 派生而来,提供读写 string 的功能。 要使用上述类,必须包含 sstream 头文件。 与 fstream 类型一样,上述类型由 i 阅读全文
posted @ 2012-07-24 22:36 likebeta 阅读(24810) 评论(0) 推荐(1)
摘要:9宫格缩放规则如下:1、将一张图分割成9块2、四个角(1,3,7,9)在缩放的时候是保持大小不变3、图块2,8仅当宽度变化时缩放宽度。4、图块4,6仅当高度变化时缩放高度。5、图块5当图片大小发生变化,宽度和高度都进行缩放。更多:http://www.dewen.org/q/365http://blog.csdn.net/soulxu/article/details/6162743 阅读全文
posted @ 2012-07-23 16:54 likebeta 阅读(2709) 评论(0) 推荐(0)
摘要://=============================================================================// Desc: 最简单的Direct3D程序,//=============================================================================#include <d3d9.h>#pragma comment(lib,"d3d9.lib")#include <d3dx9.h>#pragma comment(lib,"d3dx 阅读全文
posted @ 2012-07-20 15:11 likebeta 阅读(828) 评论(0) 推荐(0)
摘要:1). 设置着色模式:SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式2). 设置多边形填充模式:SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //点填充模式,D3D在多边形的每个顶点绘制一个像素SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //线填充模式,D3D在多边形的每个边绘制一条线SetRenderSt 阅读全文
posted @ 2012-07-20 14:17 likebeta 阅读(603) 评论(0) 推荐(0)
摘要:主要原理:将电子书分为3个内容层,叠放顺序如图.第一层为当前页面层,是现在正在显示的页面;第二层是随鼠标拖拽时卷起的页角,第三层是当页角卷起时,露出下一页的层。设置遮罩:当页边卷起时,层1仅显示四边形FBDE内部分,层2仅显示ABCD部分,层3仅显示BGHD部分.旋转:层2内的内容要随着鼠标运动而不停变换倾斜角度,其角度始终与AC边斜度一致.翻页:当页面完全翻过时,层1的当前页数=当前页数+1程序的核心在于如何获得四个点ABCD的坐标:我使用的是求垂直平分线的方法,既:点C是鼠标位置,点H是页角位置,BD即为此两点间的垂直平分线.由已知的C,H坐标求出直线BD的一次函数y=kx+b再求出直线B 阅读全文
posted @ 2012-07-20 10:48 likebeta 阅读(950) 评论(0) 推荐(0)
摘要:c++局部函数中使用new分配内存或者create*创建COM接口,由于程序可能在函数内下面的判断代码失败退出, 这样每次都需要delete内存或者release, 不仅麻烦而且可能忘记其中某个,造成资源没有及时释放.下面的通用的类可以解决这些问题://COM版template< class T >class CSafeRelease{public: CSafeRelease() : m_p(NULL){}; CSafeRelease(T* p) : m_p(p) { }; ~CSafeRelease() { if( m_p != NULL ) m_p->Release(); 阅读全文
posted @ 2012-07-13 18:41 likebeta 阅读(1561) 评论(0) 推荐(0)
摘要:一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。 由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1)而对于 阅读全文
posted @ 2012-07-09 16:52 likebeta 阅读(305) 评论(0) 推荐(0)
摘要:概述 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 定义 大家先看几宏. 在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) .. 阅读全文
posted @ 2012-07-09 16:26 likebeta 阅读(897) 评论(0) 推荐(0)
摘要:state:比较常用,各种状态都可以用它,但是它更着重于一种心理状态或者物理状态。Status:用在人的身上一般是其身份和地位,作“状态,情形”讲时,多指政治和商业。state倾向于condition,是一种延续性的状态。status常用于描述一个过程中的某阶段(phase),类似于C语言中枚举型变量某一个固定的值,这个值属于一个已知的集合。 比如淘宝买家问卖家“我的网购现在是什么状况?”这个问题的背景是讲话双方都清楚,交易状态有“买家选购”“买家已付款”“卖家已发货”“买家已签收”或者有“买家已投诉”等等状态。这些状态描述一件事情发展过程中的不同阶段。而且,这些阶段的先后顺序也是双方默许的。 阅读全文
posted @ 2012-07-03 13:19 likebeta 阅读(107551) 评论(9) 推荐(32)
摘要:发信人: NULLNULL (空空), 信区: VC标题: C++资源之不完全导引(转载)发信站: 武汉白云黄鹤站 (2005年05月05日01:42:54 星期四), 站内信件C++资源之不完全导引(完整版)来源:www.csdn.net------------------------------------------------------------------------------------------------------------------------------------------------------------1,前言 无数次听到“我要开始学习C++!”的. 阅读全文
posted @ 2012-07-02 14:53 likebeta 阅读(445) 评论(0) 推荐(0)
摘要:原来使用google reader,结果改版后感觉特别别扭就转到有道阅读了,最近为了快速收取邮件,使用了Foxmail,然后看见下面有个rss功能,感觉还算不错,就像将有道阅读导入Foxmail,结果发现Foxmail弱爆了,竟然由于有道导出的xml的node的属性顺序不同导入后都成了文件夹,一个一个加也挺麻烦的,就想写个转换程序,反正比较简单,就是简单的换些属性的顺序。#include <iostream>#include <tchar.h>#include <string>using namespace std;#include "rapidx 阅读全文
posted @ 2012-07-02 00:46 likebeta 阅读(882) 评论(0) 推荐(0)
摘要:最近发现svn图标莫名其妙的不显示,其他操作都正常。在网上搜了一些方法。解决方法一(失败):升级最新版本,我的本来就是最新版本解决方法二(失败):右键->TortoiseSVN->setting->Icon Overlays->Status cache->default/Shell。none是不显示解决方法三(失败):修复或者卸载重装解决方法四(成功):Windows Explorer Shell 支持 Overlay Icon 最多15个,Windows 自身已经使用了4个,所以就只剩下了11个 供我们使用。如果你之前安装了例如Groove这样的软件,那么可能我 阅读全文
posted @ 2012-07-01 11:07 likebeta 阅读(51640) 评论(16) 推荐(10)