1、
LRESULT 是long
的宏定义,指返回结果为long类型;
2、
CALLBACK 为回调函数,一般用CALLBACK用声明窗口过程函数。系统通过窗口过程函数的地址(指针)来调用窗口过程函数,而不是函数名字,这点需要注意。
3、
LPSTR : 'L'代表Long,'P'代表Pointer(指针),'STR'表示String,被定义成一个指向NULL结尾的32位ANSI字符数组指针,跟LPWSTR是一样,不过后者是64位而已。
4、
WNDCLASS: 在设计一个窗口,就必须指定窗口的特征。这个由WNDCLASS结构体来定义。这个结构体定义如下:
typedef struct _WNDCLASS {
UINT style; //定义窗口的变化情况,如关闭缩小等,有近十种样式,常用的有
//CS_HREDRAW 宽度重新描绘,CS_VREDRAW 高度重新描绘,CS_NOCLOSE禁用关闭,CS_DBLCLKS 双击发送消息
WNDPROC lpfnWndProc; //前缀 lpfn 表示该成员是一个指向函数的长针,整个是指向窗口过程函数
int cbClExtra; //类附加内存空间,一般初始化为0
int cbWndExtra; //窗口附加内存空间
HINSTANCE hInstance; //指定包含窗口过程的程序的实例句柄
HICON hIcon; //指定窗口类的图标句柄,必须是一个图标资源的句柄,若为NULL,则为默认图标
HCURSOR hCursor; //指定窗口类的光标句柄,即设定鼠标形状。
HBRUSH hbrBackground; //handle to the class background brush,就是说指定窗口类的背景画刷句柄
LPCTSTR lpszMenuName; //一个以空终止的字符串,指定菜单资源的名字
LPCTSTR lpszClassName; //一个以空终止的字符串,指定窗口类的名字
} WNDCLASS, *PWNDCLASS;
5、举例如下:
//设计一个窗口类
WNDCLASS wndcls;
wndcls.cbClExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//黑色
wndcls.hCursor = LoadCursor(NULL,IDC_CROSS); //鼠标,默认是十字光标
wndcls.hIcon = LoadIcon(NULL,IDI_ERROR); //手形图标
wndcls.hInstance = hInstance_1; //应用程序实例句柄为hInstance_1
wndcls.hpfnWndProc = WinSunProc;
wndcls.lpszClassName = "hello2013";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW| CS_VREDRAW;
RegisterClass(&wncls);
//篇后语——“飞言走笔”兄弟说我学得杂,呵呵,确实,学VC++不是我主攻硬件的方向,但是,我学它是利用晚上2个小时自己空闲的时间学的,白天要做其他重要的事情,因为我发现未来的工作中你多会一些,就会得到更宽的视野和发展空间。不是不专心,而是学无止境。硬件,还是我的最爱。 |