windows程序设计 创建一个新的窗口
#include <windows.h> LRESULT CALLBACK myProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ static TCHAR szClassName[] = TEXT("cabbage"); MSG msg;//消息结构 HWND hwnd;//窗口句柄 WNDCLASS wc;//窗口类别结构 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景颜色 wc.hCursor = LoadCursor(NULL, IDC_ARROW);//光标 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//小图标 wc.hInstance = hInstance;//实例句柄 wc.lpfnWndProc = myProc;//回调函数 wc.lpszClassName = szClassName;//类名 wc.lpszMenuName = NULL;//菜单 wc.style = CS_VREDRAW | CS_HREDRAW; //注册窗口 为程序窗口注册窗口类别 if(!RegisterClass(&wc)){ MessageBox(NULL, TEXT("注册窗口失败"), szClassName, MB_ICONERROR); return 0; } //创建窗口 根据窗口类别建立一个窗口 hwnd = CreateWindow(szClassName,//窗口类名 TEXT("hello insert"),//窗口标题 WS_OVERLAPPEDWINDOW,//窗口显示样式 CW_USEDEFAULT, CW_USEDEFAULT,//窗口在显示器上显示离左上角的距离,横轴为x,纵轴为y CW_USEDEFAULT, CW_USEDEFAULT,//宽口宽度和高度 NULL, NULL, hInstance, NULL);// //显示窗口 在屏幕上显示窗口 ShowWindow(hwnd, nCmdShow); //刷新窗口 只是窗口自我更新 UpdateWindow(hwnd); //消息循环 while(GetMessage(&msg, NULL, 0, 0)){//获取消息 从消息队列中取得消息 TranslateMessage(&msg);//翻译消息 转译某些键盘消息 DispatchMessage(&msg);//分发消息 将消息发送给窗口消息处理程序 } return 0; } LRESULT CALLBACK myProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps;//绘图结构 HDC hdc;//设备内容句柄 RECT rect;//矩形结构 switch(msg){ case WM_PAINT: hdc = BeginPaint(hwnd, &ps);//开始绘制窗口 GetClientRect(hwnd, &rect); DrawText(hdc, TEXT("你好,爱白菜的小昆虫!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps);//结束绘制窗口 break; case WM_DESTROY://销毁窗口消息 PostQuitMessage(0);//抛出退出程序消息 break; } //返回执行内定的消息处理 return DefWindowProc(hwnd, msg, wParam, lParam); }
运行结果