C++编写的Windows窗口Hello,World程序
#include <windows.h> #include <tchar.h> /* 使类名成为全局变量 */ TCHAR szClassName[ ] = TEXT("WindowsApp"); /* 这个函数由Windows函数DispatchMessage()调用 */ LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) /* 处理信息 */ { 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) ; break ; case WM_DESTROY: PostQuitMessage (0); /* 发送WM_QUIT到消息队列 */ break; default: /* 不想处理的消息 */ return DefWindowProc (hWnd, message, wParam, lParam); } return 0; } int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* 窗口的句柄 */ MSG messages; /* 用于储存应用程序的消息 */ WNDCLASSEX wincl; /* 窗口类的数据结构 */ /* 窗口结构 */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* 被Windows调用的函数 */ wincl.style = CS_DBLCLKS; /* 捕获双击事件 */ wincl.cbSize = sizeof (WNDCLASSEX); /* 使用默认的图表和鼠标指针 */ wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* 没有菜单 */ wincl.cbClsExtra = 0; /* 窗口类后面没有额外的字节 */ wincl.cbWndExtra = 0; /* 窗口实例化结构 */ /* 使用Windows的默认颜色作为窗口的背景色 */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* 注册窗口类,如果失败,退出程序 */ if (!RegisterClassEx (&wincl)) return 0; /* 如果类被注册,创建窗口 */ hwnd = CreateWindowEx ( 0, /* 扩展的变化信息 */ szClassName, /* 类名 */"Hello World", /* 标题栏文本 */ WS_OVERLAPPEDWINDOW, /* 默认窗口 */ CW_USEDEFAULT, /* 使用默认的位置 */ CW_USEDEFAULT, /* 使用默认的位置 */ 544, /* 窗口宽度(以像素点为单位) */ 375, /* 窗口高度(以像素点为单位) */ HWND_DESKTOP, /* 此窗口是桌面的字窗口 */ NULL, /* 没有菜单 */ hThisInstance, /* 程序实例化句柄 */ NULL /* 没有创建数据的窗口 */ ); /* 显示窗口 */ ShowWindow (hwnd, nFunsterStil); /* 运行消息循环。它将在GetMessage()返回零的时候退出 */ while (GetMessage (&messages, NULL, 0, 0)) { /* 把虚拟按键消息翻译成字符消息 */ TranslateMessage(&messages); /* 把消息发送到WindowProcedure函数 */ DispatchMessage(&messages); } /* 程序的返回值,由PostQuitMessage()提供。 */ return messages.wParam; }