04 2013 档案

摘要:在编写win32 GUI相关的程序的时候,最直接的方法是使用GDI API进行绘制操作。一般为了图形绘制过程中为避免绘制过程闪动,而多采用双Buffer的做法,具体是先在一个内存DC中线将图像绘制好,然后采用BitBlt函数将该内存DC中绘制好的图像贴到目标DC中(该目标DC即是待绘制窗口的DC)。在内存DC中绘图的时候,需先创建该DC,然后根据需要创建各种Pen,各种Brush,将Pen/Brush选进去,绘制完成之后,再将原来的Pen/Brush选回去,最后执行InvalidateRect函数使窗口中的指定区域无效,触发WM_PAINT消息,在响应WM_PAINT消息中,执行BitBlt函 阅读全文
posted @ 2013-04-29 13:33 lanyuliuyun 阅读(1449) 评论(5) 推荐(0)
摘要:C++中除了沿用C的alloc系列函数之外,还可以用new/new []来分配内存(这句是废话),我们在使用new这个operator的时候多是直接使用,而没有额外引用头文件。写C语言代码写习惯的人都会在alloc函数之后,对指针做NULL判断,以检查内存分配是否成功,那么在C++中是否也需要以同样的方式来检查内存分配是否成功呢?根据实际code验证结果,答案是new成功返回即表示内存分配成功,不需检查指针是否为NULL,但是仍然会出现内存分配失败的情况,此时需要捕捉bad_alloc这种exceptin来知晓内存分配失败,bad_alloc是在new这个C++头文件(#include < 阅读全文
posted @ 2013-04-25 00:17 lanyuliuyun 阅读(1211) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 using namespace std; 5 6 int main(int argc, char *argv[]) 7 { 8 binder1st > big = bind1st(greater(), 3); 9 int value = 4;10 11 if (big(value))12 {13 cout > big = bind1st(greater(), 3);这一句,其中拆开来,是由以下几个部分组成greater()是将greater::operator()传给bind1st()... 阅读全文
posted @ 2013-04-10 23:10 lanyuliuyun 阅读(605) 评论(0) 推荐(0)