说说那个叫API的 封装神马的最讨厌了!

很多人觉得API是out了(虎喵喵对此很不理解,难道api不是如同高等数学一般的基本功么?!),但是许多学校还是将API设置为一门课程的,虎喵喵在两年前就上过。。。

关于API,课程的重点基本都在于消息机制,笔试的部分就是考这个的。现在也很难google到这内容,虎喵喵就结合一个基本的例子来说说这个问题好了。

 

 

hello word程序,咳咳,表鄙视我噢,这个说起来简单;

 

第一次接触api的童鞋 看到APIENTRY 就应该猜到,WinMain是入口函数。既然是入口函数,执行的时候当然是从MSG msg;这句开始(废话真多。。。)。

在调用了UpdateWindow(hWnd)之后,hello word 的窗口就会显示在显示器上,此时Windows就为程序维护一个消息队列。当用户用键盘或者鼠标输入数据并被Windows侦测到,windows将此输入事件转化成一个“消息”,并将此“消息”放入消息队列。

 

接下来就是消息循环的概念了,

在hello word中实现消息循环的代码为:

while(GetMessage(&msg, NULL, 0, 0))

{

       TranslateMessage(&msg);

       DispatchMessage(&msg);

}

函数GetMessage(&msg, NULL, 0, 0)从堆栈中获得消息,并将取到的消息赋给指向msg的MSG结构指针。

当取到消息的域为WM_QUIT的时候GetMessage(&msg, NULL, 0, 0)返回0,则此while循环完成。

当取到消息的域不为WM_QUIT的时候,GetMessage(&msg, NULL, 0, 0)返回不会0,执行循环语句:

TranslateMessage(&msg)处理一些键盘消息转换;

之后的DispatchMessage(&msg)函数非常关键,它分发一个消息给窗口程序。通常消息从GetMessage函数获得。消息被分发到回调函数(过程函数),作用是消息传递给操作系统,然后操作系统去调用我们的回调函数,也就是说我们在窗体的过程函数中处理消息

 

大概就是这个样子的,讲解的很不专业,大家凑合着看~ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值