第一个windows程序
2017-08-07 20:38
260 查看
打开vs2015,新建一个空的win32项目,并向项目中添加一个main.cpp的c++源文件。main.c中的代码如下:
运行该项目,效果图如下:
在窗口中单击鼠标左键会弹出如下图所示对话框:
点击确定按钮后,如下图所示:
单击关闭按钮,如下图所示:
当拉伸窗口时,窗口会重新绘制
#include <Windows.h> #include <stdio.h> LRESULT CALLBACK WinProc( HWND hwnd, //handle to window UINT uMsg, //message identifier WPARAM wParam, //first message parameter LPARAM lParam //second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, //handle to current instance HINSTANCE hPrevInstance, //handle to previous instace LPSTR lpCmdLine, //command line int nCmdShow //show state ) { //design a window class WNDCLASS wndcls; wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wndcls.hCursor = LoadCursor(NULL, IDC_CROSS); wndcls.hIcon = LoadIcon(NULL, IDI_ERROR); wndcls.hInstance = hInstance; //application instance handle passed by WinMain function wndcls.lpfnWndProc = WinProc; wndcls.lpszClassName = L"tangliang"; wndcls.lpszMenuName = NULL; wndcls.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndcls); //创建窗口,定义一个变量用来保存成功创建后返回的句柄 HWND hwnd; hwnd = CreateWindow(L"tangliang", L"http://blog.csdn.net/a18779148177", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL); //显示及刷新窗口 ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd); //定义消息结构体,开始消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //编写窗口过程函数 LRESULT CALLBACK WinProc( HWND hwnd, //handle to window UINT uMsg, //message identifier WPARAM wParam, //first message parameter LPARAM lParam //second message parameter ) { switch (uMsg) { case WM_CHAR: char szChar[20]; sprintf_s(szChar, "char code is %d", wParam); MessageBox(hwnd, L"char code is %d", L"char", 0); break; case WM_LBUTTONDOWN: MessageBox(hwnd, L"mouse clicked", L"message", 0); HDC hdc; hdc = GetDC(hwnd); //不能在响应WM_PAINT消息时调用 TextOut(hdc, 0, 50, L"tangliang", strlen("tangliang")); //ReleaseDC(hwnd, hdc); break; case WM_PAINT: HDC hDC; PAINTSTRUCT ps; hDC = BeginPaint(hwnd, &ps); //BeginPaint只能在响应WM_PAINT消息时调用 TextOut(hDC, 0, 0, L"http://blog.csdn.net/a18779148177", strlen("http://blog.csdn.net/a18779148177")); EndPaint(hwnd, &ps); break; case WM_CLOSE: if (IDYES == MessageBox(hwnd, L"是否真的结束?", L"message", MB_YESNO)) { DestroyWindow(hwnd); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; }
运行该项目,效果图如下:
在窗口中单击鼠标左键会弹出如下图所示对话框:
点击确定按钮后,如下图所示:
单击关闭按钮,如下图所示:
当拉伸窗口时,窗口会重新绘制
相关文章推荐
- 学习MFC第二天——第一个Windows程序
- 第一章 开始(编写第一个WINDOWS程序)
- C语言Windows程序设计->第一天->我的第一个Windows程序
- 如何只让Windows程序只启动一个实例,第二个实例启动只激活第一个实例
- 自己的第一个windows程序
- 动手写第一个windows程序 新建一个窗口
- ACCP学习旅程之-----使用C#开发数据库应用程序(第四章 第一个Windows程序)
- 我的第一个windows程序
- 第四章 第一个Windows程序
- 学习C++ Windows 编程(你的第一个Windows程序)
- Windows程序设计学习笔记--第一个Windows程序以及宽字符集(了解)
- 我的第一个windows程序
- 我的第一个windows程序
- 第一个Windows程序
- windows程序设计 你的第一个windows程序
- 我的第一个windows程序(加油)
- Visual Studio 2010——C#的第一个Windows程序
- 第一个标准Windows程序(个人一次写成的最简版本)
- Windows学习笔记第二课---第一个windows程序Hello Windows!
- 《Windows程序设计》笔记之一——第一个Windows程序以及Windows程序原理