摘要: 转自:http://blog.csdn.net/yann2/article/details/5948826一般的windows复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。一般显卡的刷新周期是1/80秒左右,具体数字可以自己设置的。这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看到只有 阅读全文
posted @ 2012-12-16 02:35 fff8965 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 进程空间http://blog.csdn.net/yeming81/archive/2008/01/16/2046193.aspx内存状态查询http://blog.csdn.net/yeming81/archive/2008/01/16/2046207.aspx虚拟内存http://blog.csdn.net/yeming81/archive/2008/01/17/2047879.aspx内存映射文件http://blog.csdn.net/yeming81/archive/2008/01/18/2050521.aspx堆http://blog.csdn.net/yeming81/archi 阅读全文
posted @ 2012-12-14 15:26 fff8965 阅读(172) 评论(0) 推荐(0) 编辑
摘要: c++的创建对象和java区别很大,java里所有的复杂类型(如 类实例)都是分配到堆中的,而c++则更灵活,所有的变量,不管什么类型,都可以自己指定分配到堆中还是栈中。分配到栈中的写法:Class object("param");//即声明又定义,调用默认构造函数 相当于Class object = Class("param");object = Class("param");//重新创建分配到堆中的写法:Class *p ;//声明p = &new Class();//定义把变量分配到栈中和堆中都有各自的好处,要看情况而定 阅读全文
posted @ 2012-12-14 14:06 fff8965 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 在用vs写win32的c++程序时是没有命令行的,所以printf是不能用的。但是调试的时候可以调用函数OutputDebugString来想vs的“输出”窗口里输出调试内容。像java中的System.out.println一样往IDE的调试窗口里输出信息。OutputDebugString只接受字符串指针,如果要输出其他格式,如int型,可以用sprintf把字符转成字符串,在传给OutputDebugString。例子: char chInput[512] ; sprintf(chInput,"int:%d\n",500); OutputDebugString( ch 阅读全文
posted @ 2012-12-14 10:06 fff8965 阅读(16665) 评论(0) 推荐(0) 编辑
摘要: 转自:http://wjl4926.blog.163.com/blog/static/97330204201022655940987/sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以"%"开头的格式说明符(format specifications)来占据一个位置,在后边 阅读全文
posted @ 2012-12-14 09:58 fff8965 阅读(950) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/uid-21254310-id-1828938.html一. 何谓可变参数int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用”…”表示). 而我们又可以用各种方式来调用printf,如:printf( "%d ",value); printf( "%s ",str); printf( "the number is %d ,string is:%s " 阅读全文
posted @ 2012-12-14 09:48 fff8965 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/uid-21254310-id-1828938.htmlvolatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。以上两种情况的区别在于被编 阅读全文
posted @ 2012-12-14 09:47 fff8965 阅读(172) 评论(0) 推荐(0) 编辑
摘要: Graphics类提供很多的drawing方法,如下表DrawLine MethodsDrawRectangle MethodsDrawEllipse MethodsDrawArc MethodsGraphics::DrawPathDrawCurve MethodsDrawBezier Methods这些方法都需要一个Pen对象做为第一个参数。用Pen画线和矩形 Using a Pen to Draw Lines and Rectangles设置Pen的宽度和对齐方式 Setting Pen Width and Alignment画带头的线 Drawing... 阅读全文
posted @ 2012-12-13 02:22 fff8965 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 新建win32项目,拷贝下面代码到Main函数所在cpp// gdiTest.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "gdiTest.h"#include <objidl.h>#include <GdiPlus.h>using namespace Gdiplus;#pragma comment (lib,"Gdiplus.lib")#define MAX_LOADSTRING 100VOID 阅读全文
posted @ 2012-12-13 02:04 fff8965 阅读(469) 评论(0) 推荐(2) 编辑
摘要: 在获取wpf自定义组件的宽度和高度的时候,如果直接在InitializeComponent();后面用this.Width,和this.ActualWidth会得到Nan和0,因为组件还没有被计算大小。要获得组件的宽度和高度可以添加Loaded事件的响应函数,在事件函数里面在用this.Width就可以得到组件的宽度。public lineNet(){ InitializeComponent(); Loaded += delegate { Line line11 = new Line(); Line line12 = new Line(); ... 阅读全文
posted @ 2012-12-12 11:09 fff8965 阅读(571) 评论(0) 推荐(0) 编辑