- #include <windows.h>
- /* 声明窗口过程 */
- LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
- /* 声明一个全局的窗口类变量 */
- char szClassName[ ] = "WindowsApp";//窗口类名
- /* 主入口函数 */
- int WINAPI WinMain (HINSTANCE hThisInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpszArgument,
- int nFunsterStil)
- {
- HWND hwnd; /* 窗口句柄 */
- MSG messages; /* 消息结构:存储应用程序的消息 */
- WNDCLASSEX wincl; /* Data structure for the windowclass */
- /* The Window structure */
- 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; /* structure or the window instance */
- /* 使用Windows默认的颜色作为窗体的背景色 */
- wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
- /* 注册窗口类,如果失败则程序退出 */
- if (!RegisterClassEx (&wincl))
- return 0;
- /* 窗口类注册后,接着创建窗体 */
- hwnd = CreateWindowEx (
- 0, /* Extended possibilites for variation */
- szClassName, /* 类名 */
- "Windows App", /* 窗口标题文本 */
- WS_OVERLAPPEDWINDOW, /* 默认的窗体风格 */
- CW_USEDEFAULT, /* Windows确定x,y */
- CW_USEDEFAULT,
- 544, /* 窗体的像素尺寸 */
- 375,
- HWND_DESKTOP, /* 此窗体为desktop的子窗口。 */
- NULL, /* 无菜单 */
- hThisInstance, /* 应用程序实例句柄 */
- NULL /* 无窗体创建参数 */
- );
- /* 显示窗体 */
- ShowWindow (hwnd, nFunsterStil);
- /* 执行消息循环. 直到GetMessage()返回0 */
- while (GetMessage (&messages, NULL, 0, 0))
- {
- /* 将虚拟键消息转换为字符消息 */
- TranslateMessage(&messages);
- /* 将消息发给窗口过程 */
- DispatchMessage(&messages);
- }
- /* 程序返回值为0----PostQuitMessage()给出。 */
- return messages.wParam;
- }
- /* 此函数由Windows函数DispatchMessage()调用 */
- LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message) /* 处理消息 */
- {
- case WM_DESTROY:
- PostQuitMessage (0); /* 发送一个WM_QUIT到消息队列 ,此消息使GetMessage()返回 0*/
- break;
- default: /* 对于我们不想处理的消息,采用默认处理 */
- return DefWindowProc (hwnd, message, wParam, lParam);
- }
- return 0;
- }