摘要: http://hi.baidu.com/xiaorida21/blog/item/8d8eb77a22eedee52e73b39e.html CWnd类 我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框、工具栏、状态栏、子控件;或者被CWnd合成,属服务员与服务对象关系,如图标、菜单、显示设备。 CWnd类封装的窗口操作主要包含窗口的创建和销毁、操作窗口风格、操... 阅读全文
posted @ 2011-05-06 15:05 一个农夫 阅读(9748) 评论(0) 推荐(0)
摘要: MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用D... 阅读全文
posted @ 2011-05-06 14:25 一个农夫 阅读(3033) 评论(0) 推荐(0)
摘要: OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。 OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过创... 阅读全文
posted @ 2011-05-06 14:17 一个农夫 阅读(5187) 评论(0) 推荐(0)
摘要: 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。 先来谈谈闪烁产生的原因 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。 这样问题就来了,一般画图... 阅读全文
posted @ 2011-05-06 14:11 一个农夫 阅读(8739) 评论(0) 推荐(0)
摘要: 一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定 了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一... 阅读全文
posted @ 2011-05-06 14:09 一个农夫 阅读(2213) 评论(0) 推荐(0)
摘要: 如何修改frame窗口的背景颜色? MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了。你必须自己处理WM_ERASEBKND消息。下面是工作步骤: 创建一个从CWnd类继承的类,就叫它CMDIClient吧; 在CMDIFrameWnd中加入CMDIClient变量;(具体情况看下面的代码) #include "MDI... 阅读全文
posted @ 2011-05-06 14:00 一个农夫 阅读(3563) 评论(0) 推荐(0)
摘要: C中,使用malloc 和calloc申请测内存空间需要使用free进行内存释放,而在c++中,new函数申请的空间必须使用delete来释放。一. 使用new和delete运算符时PF率的变化情况Ctrl+Alt+Del进入任务管理器、性能,运行下列代码,并观察PF率的变化。可知,new运算符增加PF率,delete使PF率还原。注意:使用 new 得来的空间,必须用 delete 来释放;使用 new [] 得来的空间,必须用 delete [] 来释放。彼此之间不能混用。用 new [] 分配出连续空间后,指针变量“指向”该空间的首地址。#include<iostream.h> 阅读全文
posted @ 2011-05-06 00:13 一个农夫 阅读(5166) 评论(0) 推荐(0)
摘要: 左←中→右优先级运算符名称运算对象个数结合性1()圆括号左[]下标运算符->指向成员运算符.结构体、共用体成员运算符2!逻辑非逻辑运算符单目运算符右~按位取反位运算符++自增1算术运算符--自减1-负号类型强制类型转换*指针运算符&取地址运算符sizeof求存储长度运算符3*乘运算符算术运算符双目运算符左/除运算符%余运算符4+加运算符算术运算符双目运算符左-减运算符5<<左移运算符位运算符双目运算符左>>右移运算符6>大于运算符关系运算符双目运算符左<小于运算符>=大于等于运算符<=小于等于运算符7==等于运算符双目运算符左!=不 阅读全文
posted @ 2011-05-05 23:34 一个农夫 阅读(1075) 评论(0) 推荐(0)
摘要: 一.基本概念剖析int* (*a[5])(int, char*); //#1 void (*b[10]) (void (*)()); //#2 double(*)() (*pa)[9]; //#31.C语言中函数声明和数组声明。函数声明一般是这样: int fun(int, double); 对应函数指针(pointer to function)的声明是这样: int (*pf)(int, double); 可以这样使用: pf = &fun; //赋值(assignment)操作 (*pf)(5, 8.9);//函数调用操作 也请注意,C语言本身提供了一种简写方式如下: pf = f 阅读全文
posted @ 2011-05-05 19:55 一个农夫 阅读(75930) 评论(5) 推荐(5)
摘要: 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型: (1)int*ptr;//指针的类型是i 阅读全文
posted @ 2011-05-05 19:16 一个农夫 阅读(1398) 评论(0) 推荐(2)