学习windows programming这么久,也做过一些小的程序。但是总感觉到自己没有经过系统的学习,要用到什么才学什么。这样虽然解决了问题,自己的知识还是杂乱的。从现在开始,我把自己放在0的位置,重新学习,期望能对windows编程有系统的认识。
还是从最简单的开始,“Hello, windows XP”。
#include < windows.h >
int WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance,
LPSTR lpCmdLine, int nShowCmd)
... {
MessageBox(NULL, TEXT("Hello, windows XP!"), TEXT("go"), MB_OK);
return 0;
}
#define WINAPI __stdcall
Windows程序的入口函数已经不是原来的main了,应该是WinMain。在前面加上WINAPI只是函数调用习惯的问题(calling convention)。如果不加就会弹出一条警告。
: warning C4007: 'WinMain' : must be '__stdcall'
WinMain的第一个参数hInstance是一个实例句柄。在windows编程中,句柄就是用来对某个对象进行唯一标识的数字。注意这里所说的对象可不是面向对象里谈到的对象哦。在这里,hInstance 就是唯一标识程序对象的。第二个参数hPreInstance也是一个实例句柄。它是win16时期遗留下来的产物,在win32中都是NULL。第三个参数lpCmdLine是在命令行里启动程序时用来传递参数的。最后一个是nShowCmd,它指示了程序启动时窗口的状态。例如:最大化。
函数体中掉用了MessageBox。掉用该函数会弹出一个窗口。这也是windows编程中最简单,也是最直接显示窗口的方式。在参数中,没个字符串都被包含在一个TEXT宏中,主要是考虑到UNICODE的问题。