#include "windows.h"
//windows.h头文件包含应用程序中所需的数据类型和数据结构的定义
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM,LPARAM);//窗口函数声明
//以下代码是初始化窗口类
int WINAPI WinMain (HINSTANCE hInstance,//WinMain函数声明
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
static TCHAR szAppName[]=TEXT ("HelloWorld");//窗口类名
static TCHAR lpszTitle[]=TEXT ("My First Windows Program");//窗口标题名
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW | CS_VREDRAW;//窗口类风格
wndclass.lpfnWndProc=WndProc; //窗口处理函数为WndProc
wndclass.cbClsExtra = 0; //窗口类没有扩展
wndclass.cbWndExtra = 0; //窗口实例没有扩展
wndclass.hInstance = hInstance; //当前实例句柄
wndclass.hIcon = LoadIcon (NULL,IDI_APPLICATION);
//窗口的最小化图标为默认图标
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
//窗口采用箭头光标
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
//窗口背景为白色
wndclass.lpszMenuName = NULL; //窗口没有菜单
wndclass.lpszClassName = szAppName; //窗口类名
if (!RegisterClass (&wndclass)) //如果注册失败则发出警告声音
{
MessageBox (NULL,TEXT ("This program repuires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow (szAppName, //窗口类名
TEXT ("The Hello Program"), //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT, //窗口的左上角x坐标为默认值
CW_USEDEFAULT, //左上角y坐标为默认值
CW_USEDEFAULT, //窗口宽度为默认值
CW_USEDEFAULT, //窗口高度为默认值
NULL, //窗口没有父窗口
NULL, //窗口没有主菜单
hInstance, //创建窗口应用程序的当前句柄
NULL); //创建参数指针为空
//显示窗口
ShowWindow (hwnd, iCmdShow);
//绘制用户区
UpdateWindow (hwnd);
//消息循环
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam; //消息循环结束即程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc (HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("helloworld.wav"),NULL,
SND_FILENAME | SND_ASYNC);
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &rect);
DrawText (hdc,
TEXT ("Hello World!"),
1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
//调用PostQuitMessage函数发出WM_QUIT消息
return 0;
}
return DefWindowProc (hwnd, message,wParam,lParam);
}