学习window编程1

在学校一直做linux开发,工作做windows开发。今天看了一下最基本的windows API窗体编程。API是基于函数的,C语言。对这种风格的第一次接触,还是在linux上使用MiniGUI开发的时候。

在这个过程 中,分为两部分,一是结构体,二是函数(可能还有一些宏定义)。对于事件的处理都是通过向窗体注册一个回调函数,回调函数有四个参数,分别为窗体资源标识符,事件ID,以及两个事件参数。

结构体:

typedef struct _WNDCLASS {
UINT style;// 窗口类型
WNDPROC lpfnWndProc;//窗口处理函数
int cbClsExtra;//窗口扩展
int cbWndExtra;//窗口实例扩展
HINSTANCE hInstance;//实例句柄
HICON hIcon;//窗口的最小化图标
HCURSOR hCursor;//窗口鼠标光标
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜单
LPCTSTR lpszClassName;// 窗口类名
} WNDCLASS, *LPWNDCLASS;
其包含了对窗体的配置参数(类型,图标,菜单等等),其中包括了需要注册的回调函数。

回调函数完成对事件的处理,其一般内容为:

switch(TYPE) {

case TYPE_1:

do_1(...);

break;

case TYPE_2:

do_2(...);

break;

        ...

...

...

default:

return define_do(_1,_2,_3,_4);

return 0;

}
在C/C++中程序入口为main(int argc, char* argv[]),而在此为WinMain,其有四个参数,分别为APP当前实例,APP先前的实例,命令行,和窗体的显示状态。

一个窗体的创建分为四个步骤:

1.设计窗体

2.注册窗体

3.生成窗体

4.显示及更新窗体

第一步,对WNDCLASS进行参数配置,第二调用RegisterClass函数注册,第三调用CreateWindow生成,最后调用ShowWindow显示,调用UpdateWindow更新窗体。在这应该注意RegisterClass,每产生不同的窗体必须重新注册。

窗体的绘制完成后则需要事件进行捕捉。

一般形式为:

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

具体处理在前述的回调函数中。

你可能感兴趣的:(windows,api,回调函数,事件处理,窗体)