摘要:
1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateRect 和 InvalidateRgn把指定的区域加到窗口的 Update Region 中,当应用的消息队列... 阅读全文
摘要:
今天想仿制酷狗7的关闭效果, 用spy++竟然hook不住, 我以为它不是窗体,而是直接在桌面窗口上画图, 开始的想法是得到桌面没有绘制子窗口时的dc,然后在上面画, 但是我向他发送WM_PRINTCLIENT时,得到的黑色的背景, 最后查文档发现发送给这个消息,接受者窗口应该实现这个消息的处理, 最后在网上找到这篇神文:http://www.fengyuan.com/article/wmprint.html但是我发现还是不对, 因为这样也无法实现酷狗的关闭效果, 况且上面文章提供的subclass方法是使用的SetWindowlong修改消息处理过程来实现的,然而SetWindowlong在 阅读全文
摘要:
今天想获取桌面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... 阅读全文
摘要:
iostream 标准库支持内存中的输入/输出,只要将流与存储在程序内存中的 string 对象捆绑起来即可。此时,可使用 iostream 输入和输出操作符读写这个 string 对象。标准库定义了三种类型的字符串流: • istringstream,由 istream 派生而来,提供读 string 的功能。 • ostringstream,由 ostream 派生而来,提供写 string 的功能。 • stringstream,由 iostream 派生而来,提供读写 string 的功能。 要使用上述类,必须包含 sstream 头文件。 与 fstream 类型一样,上述类型由 i 阅读全文
摘要:
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 阅读全文
摘要:
//=============================================================================// Desc: 最简单的Direct3D程序,//=============================================================================#include <d3d9.h>#pragma comment(lib,"d3d9.lib")#include <d3dx9.h>#pragma comment(lib,"d3dx 阅读全文
摘要:
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 阅读全文
摘要:
主要原理:将电子书分为3个内容层,叠放顺序如图.第一层为当前页面层,是现在正在显示的页面;第二层是随鼠标拖拽时卷起的页角,第三层是当页角卷起时,露出下一页的层。设置遮罩:当页边卷起时,层1仅显示四边形FBDE内部分,层2仅显示ABCD部分,层3仅显示BGHD部分.旋转:层2内的内容要随着鼠标运动而不停变换倾斜角度,其角度始终与AC边斜度一致.翻页:当页面完全翻过时,层1的当前页数=当前页数+1程序的核心在于如何获得四个点ABCD的坐标:我使用的是求垂直平分线的方法,既:点C是鼠标位置,点H是页角位置,BD即为此两点间的垂直平分线.由已知的C,H坐标求出直线BD的一次函数y=kx+b再求出直线B 阅读全文
摘要:
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(); 阅读全文
摘要:
一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。 由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1)而对于 阅读全文