#include#pragma comment(lib, "winmm.lib")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, //hInstance是实例句柄,具体是一个数值 HINSTANCE hPrevInstance, //此参数通常总是定义为NULL PSTR szCmdLine, //用来运行程序的命令行,有些Windows程序启动时用它来把文件装入内存 int iCmdShow){//iCmdShow指明程序如何显示(最大化?正常显示?) static TCHAR szAppName[] = TEXT("HelloWindows"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; // 用于类结构和Windows内部维护的窗口结构中预留一些额外空间 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; //指定窗口类的菜单,NULL为不带菜单 wndclass.lpszClassName = szAppName; //窗口名 if(!RegisterClass(&wndclass)){//为应用程序注册一个窗口类 // 注册失败 MessageBox(NULL, TEXT("本程序需要windows NT"), szAppName, MB_ICONERROR ); return 0; } // 函数原型:HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HANDLE hlnstance,LPVOID lpParam); hwnd = CreateWindow(szAppName, //窗口名 TEXT("Hello Programe"),//窗口内容 WS_OVERLAPPEDWINDOW, //窗口风格 CW_USEDEFAULT, //初始X坐标 CW_USEDEFAULT, //初始Y坐标 CW_USEDEFAULT, //初始X方向的尺寸 CW_USEDEFAULT, //初始Y方向的尺寸 NULL, //父窗口句柄 NULL, //菜 单句柄,或依据窗口风格指明一个子窗口标识 hInstance, //程序实例句柄 NULL //创建参数, 指向一个值的指针,该值传递给窗口 WM_CREATE消息 ); /*函数功能:该函数设置指定窗口的显示状态。 函数原型:BOOL ShowWindow(HWND hWnd, int nCmdShow);*/ ShowWindow(hwnd, iCmdShow);//创建完之后,开始显示 // 如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区。 // 函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。 UpdateWindow(hwnd); /*GetMessage是从调用线程的消息队列里取得一个消息并将其放于指定的结构。 此函数可取得与指定窗口联系的消息和由PostThreadMessage寄送的线程消息。 此函数接收一定范围的消息值。GetMessage不接收属于其他线程或应用程序的消息。 获取消息成功后,线程将从消息队列中删除该消息。函数会一直等待直到有消息到来才有返回值。*/ 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("hellowin.wav"),//播放窗口打开的声音 NULL, SND_FILENAME | SND_ASYNC ); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); //标明窗口绘制开始 GetClientRect(hwnd, &rect); //获取窗口客户区的尺寸 // 显示一个文本字符擦混 DrawText(hdc, TEXT("Hello, windows 10"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ); EndPaint(hwnd, &ps); //结束窗口绘制 return 0; case WM_DESTROY: PostQuitMessage(0); //将退出消息插入消息队列 return 0; } return DefWindowProc(hwnd, message, wParam, lParam); //执行默认的消息处理}
C windows.h 创建窗口
原创wx5c3c493d65a93 ©著作权
©著作权归作者所有:来自51CTO博客作者wx5c3c493d65a93的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
VS2017: cannot open source file “Windows.h“
右击Project -> Properties -> General -> Windows SDK Version, 选择 10.0.xxxxx
c++ visual studio 开发语言 Windows 解决方法