在VC++6.0环境中创建win32程序

选择第三个这时可以运行看到hello world了。

程序解析:
#define MAX_LOADSTRING 100 \\定义最大字长</span>
HINSTANCE hInst; \\当前进程资源的句柄
TCHAR szTitle[MAX_LOADSTRING]; \\窗口上方显示的标题
TCHAR szWindowClass[MAX_LOADSTRING]; \\窗口定义的名称
实际上前面第一行的句柄就相当于ID号,每运行一个进程都需要系统分配一个编码来标示它。TCHAR是双字节的字符类型,char为单字节。
这是win32程序的主程序相当于main:
int APIENTRY WinMain(HINSTANCE hInstance, //当前实例的句柄(标志)windows是多任务操作系统,一个程序可以运行多个实例,为了区分它
HINSTANCE hPrevInstance, //前一个实例的句柄
LPSTR
lpCmdLine, //长字符串指针数据类型,传给WinMain命令
int
nCmdShow) //指定窗口如何显示,应用程序常不理会该值
{.
MSG msg; //消息数据类型
HACCEL hAccelTable; //存放键盘加速键表的句柄,键盘加速键是应用程序使用的快捷键如word下ALT+F查找
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); //将IDS_APP_TITLE里的内容载入字符串szTitle中
LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING); //将IDC_TEST里的内容载入字符串szWindowClass中
MyRegisterClass(hInstance); //注册窗口
if (!InitInstance (hInstance, nCmdShow)) //启动窗口,失败则程序退出
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TEST); //载入快捷键表,该表能在资源VC的视图中看到
while (GetMessage(&msg, NULL, 0, 0)) //消息循环,如果得到退出消息返回0
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) //如果是不是快捷键则进入if,是则直接发给窗口过程
{
TranslateMessage(&msg); //翻译消息
DispatchMessage(&msg); //发送消息给窗口过程
}
}
return msg.wParam; //返回退出
}
窗口注册函数:
ATOM MyRegisterClass(HINSTANCE hInstance) //ATOM为unsigned short类型
{
WNDCLASSEX wcex; //定义一个窗口类
wcex.cbSize = sizeof(WNDCLASSEX); //窗口大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口风格,用|符号能够同时选中,具体类型看下面的图
wcex.lpfnWndProc = (WNDPROC)WndProc; //窗口过程函数,下面有定义
wcex.cbClsExtra = 0; //附加字节,一般为0
wcex.cbWndExtra = 0; //附加字节,一般为0
wcex.hInstance = hInstance; //实例句柄
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_TEST); //窗口图标,可以在资源视图中改
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //窗口中光标的风格
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //窗口画刷颜色
wcex.lpszMenuName = (LPCSTR)IDC_TEST; //菜单资源名称,可以在资源视图中改
wcex.lpszClassName = szWindowClass; //窗口类名称
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); //窗口小图标
return RegisterClassEx(&wcex); //注册
}
窗口风格:

启动窗口:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) //启动窗口函数,第二个参数为启动类型
{
HWND hWnd; //定义窗口句柄(标识)
hInst = hInstance; // Store instance handle in our global variable,,翻译过来是将记录当前实例的句柄设置为该实例
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, //创建窗口
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd) //判断是否创建成功
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow); //显示窗口
UpdateWindow(hWnd); //刷新窗口
return TRUE;
}