本文较为详细的分析了一个Win32程序的组成、结构、实现方法及运行原理,对于进行Windows程序设计有很好的借鉴参考价值。分享给大家供大家参考之用。具体分析如下:
一、Windows程序与普通C或C++程序的不同
学过C或C++等语言的人都知道,我们写的程序都一个入口,main函数,但是在Win32程序里,我们的入口函数又是什么呢?它是怎么样运行的,跟我们用C或C++写的控制台程序又有什么不同呢?
我们先说Win32程序跟我们控制台的程序的一个很重要的不同点,就是Win32程序是一个消息响应程序,例如点击了一个按钮,就会产生一个消息onButoon,然后会这个消息会进入我们程序所维护的一个消息队列,程序运行过程中不断地取出队列中的消息,并作出相应的处理。直到取出的是结束程序的消息。
二、了解MSG的结构和组成
首先,既然Windows的程序是基于消息触发的,那么Windows是如何定义一个消息的呢?下面是在MSDN上说明文档上的定义:
typedef struct tagMSG { // msg
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
下面我们来分析一下这个结构体:
HWND hwnd:hwnd是一个窗口的句柄,用来唯一标识一个窗口资源;至于什么是一个句柄,它有点类似对C或C++中的指针,句柄是资源