2.利用windows API完成一个基本的windows application

编写一个基本的windows application需要以下几个步骤:

1.首先要设计一个窗体;

2.然后注册这个窗体;

3.创建窗体;

4.显示窗体;

5.消息循环;

6.编写消息响应函数。

 

下面详细说说每个步骤:

1.首先要生成一个WNDCLASS类型的结构体:WNDCLASS wndcls,然后为wndcls的各个成员变量赋值,wndcls的各个成员变量的说明可以参考msdn,以下是msdn中对WNDCLASS类型结构 体的描述:

style 是class type,可以是多种type的合体;

lpfnWndProc 是指向window procedure,我们也就是在window procedure中进行窗体的消息响应;

cbClsExtra specifies the number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero;

cbWndExtra specifies the number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA;

hInstance 是包括这个窗体的实例,也就是由操作系统在创建这个程序时由winMain参数传进来的;

hIcon 是一个窗体图标句柄;

hCursor 是一个鼠标句柄,用于规定鼠标移至窗体上时,鼠标显示的类型;

hbrBackground handle to the class background brush;

lpszMenuName 指向的是菜单名,若没有,就赋值为NULL;

lpszClassName 指向的是这个Class的name。

2.设计好了一个窗体,接下去我们来注册这个窗体

使用RegisterClass,如我们注册上面设计好的窗体RegisterClass(wndcls);

3.完成了注册,我们要显示这个窗体,怎么做呢,可以使用系统提供的函数CreateWindow,以下是msdn中对CreateWindow的 描述:





4.创建完了窗体,但我们看不见,还需要显示这个窗体,使用ShowWindow函数,以下是msdn中的描述:




5.我们可以用while语句来实现一个消息循环,




解释下上面这段代码, 首先我们定义了一个MSG类型的结构体msg,然后在while的判断条件中用了GetMessage这个函数从当前线程的队

列中去取第一条消息,在while条件为真的情况下,执行了TranslateMessage和DispatchMessage两个函数,第一个是用来转换消息,将


virtual-key messages转化为character messages。然后用DispatchMessage分发消息给window procedure。



6.我们需要自己编写对相应窗体消息的响应函数

比如说窗体的重绘消息(WM_PAINT)的响应、按键消息(WM_CHAR)的响应,下面我们简单实现几个消息响应:






以下是完整的程序代码:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值