Windows Programming Step By Step
1、 Windows程序进入点WinMain
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
WinMain函数声明返回一个int值,WINAPI标识符在WINDEF.H定义,语句如下:
#define WINAPI_stdcall
该语句指定了一个呼叫约定,包括如何产生机械码以在堆栈中放置函数呼叫的参数。许多Windows函数呼叫声明为WINAPI。
WinMain的第一个参数被称作「执行实体句柄」。在Windows程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
中,句柄仅是一个应用程序用来识别某些东西的数字。在这种情况下,该句柄唯一地标识该程序,还需要它在其它Windows函数呼叫中作为参数。在Windows的早期版本中,当同时运行同一程序多次时,您便创建了该程序的「多个执行实体(multiple instances)」。同一应用程序的所有执行实体共享程序和只读的内存(通常是例如菜单和对话框模板的资源)。程序通过检查hPrevInstance参数就能够确定自身的其它执行实体是否正在运行。然后它可以略过一些繁杂的工作并从前面的执行实体将某些数据移到自己的数据区域。
在32位Windows版本中,该概念已被抛弃。传给WinMain的第二个参数总是NULL(定义为0)。
WinMain的第三个参数是用于执行程序的命令列。某些Windows应用程序利用它在程序启动时将文件加载内存。WinMain的第四个参数指出程序最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中。
LPSTR在WINNT.H中定义,LP前缀代表「长指针」,这是16位Windows下的产物。
2、 匈牙利表示法
许多Windows程序写作者使用一种叫做「匈牙利表示法」的变量命名通则。这是为了纪念传奇性的Microsoft程序写作者Charles Simonyi。非常简单,变量名以一个或者多个小写字母开始,这些字母表示变量的数据型态。例如,szCmdLine中的sz代表「以0结尾的字符串」。在hInstance和hPrevInstance中的h前缀表示「句柄」;在iCmdShow中的i前缀表示「整数」。WndProc的后两个参数也使用匈牙利表示法。正如我在前面已经解释过的,尽管wParam应该更适当地被命名为uiParam(代表「无正负号整数」),但是因为这两个参数是使用数据型态WPARAM和LPARAM定义的,因此保留它们传统的名字。
表常用的变量前缀
前缀
数据型态
c
char或WCHAR或TCHAR
by
BYTE (无正负号字符)
n
short
i
int
x, y
int分别用作x坐标和y坐标
cx, cy
int分别用作x长度和y长度;C代表「计数器」
b或f
BOOL (int);f代表「旗标」
w
WORD (无正负号短整数)
l
LONG (长整数)
dw
DWORD (无正负号长整数)
fn
function(函数)
s
string(字符串)
sz
以字节值0结尾的字符串
h
句柄
p
指标