这次主要是记录了对消息机制的理解,对窗口的一些消息的说明与理解,如于标准(本人学的是Win程序设计第五版)有偏差,或哪里有不妥,欢迎大家给予斧正!
首先是Win的消息机制,每当程序被创建时系统会为其分配相应的实例句柄,以及消息队列等
一个Win程序的入口为
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
(这个时VS创建时生成的)
其中APIENTRY也就是WINAPI(说白了就是_stdcall这个函数调用惯例)
第一个就是实例句柄
第二个时在早期版本时当一个程序被多次运行时通过检查这个参数就可以得知该程序以及其他程序的运行状况,并且可以从前面的实例中将某些数据挪来自己的数据区(这个参数已经废用)
第三个参数是命令行参数
第四个是指出这个程序初始化显示的方式的
下面来看一个例子:(书中的第一个程序)HelloWin.c(原书源码未做任何修改)
/*------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
------------------------------------------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG