看了一段时间的C++了,于是就想实战一下,看了网上的一些教程,用vs写一个窗体程序,拉起一个窗口,
本人想着从初级的入门开始,到以后可以根据自己的需求,写出一些上位机软件和一些工具方便自己调试单片机
用。
![](https://i-blog.csdnimg.cn/blog_migrate/1cf3f2e7ac458840f8691632540010c9.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b77dc15366183f343ca57778ee91a894.gif)
1 #include <windows.h>
2 #include <stdio.h>
3 #include <tchar.h>
4 #define WIN32_LEAN_AND_MEAN
5 #include <stdlib.h>
6 #include <malloc.h>
7 #include <memory.h>
8 #include "targetver.h"
9 #include "resource.h"
10 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
11
12
13 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
14 _In_opt_ HINSTANCE hPrevInstance,
15 _In_ LPWSTR lpCmdLine,
16 _In_ int nCmdShow) {
17 char szClassName[] = "MainWClass";
18 WNDCLASSEX wndclass;
19
20 wndclass.cbSize = sizeof(wndclass);
21 wndclass.style = CS_HREDRAW | CS_VREDRAW;
22 wndclass.lpfnWndProc = WndProc;
23 wndclass.cbClsExtra = 0;
24 wndclass.cbWndExtra = 0;
25 wndclass.hInstance = hInstance;
26 wndclass.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);
27 wndclass.hCursor = ::LoadCursor(NULL,IDC_ARROW);
28 wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
29 wndclass.lpszClassName = szClassName;
30 wndclass.lpszMenuName = NULL;
31 wndclass.hIconSm = NULL;
32
33 ::RegisterClassEx(&wndclass);
34
35 //创建主窗口
36 HWND hWnd = ::CreateWindowEx(0,
37 szClassName, //类名
38 "GUI",
39 WS_OVERLAPPEDWINDOW,
40 CW_USEDEFAULT,
41 CW_USEDEFAULT,
42 CW_USEDEFAULT,
43 CW_USEDEFAULT,
44 NULL,
45 NULL,
46 hInstance,
47 NULL);
48
49 if (!hWnd) {
50 ::MessageBox(NULL,"FAIL","ERROR",MB_OK);
51 return FALSE;
52 }
53
54 //显示窗口
55 ::ShowWindow(hWnd,nCmdShow);
56 ::UpdateWindow(hWnd);
57
58 //从消息队列中不断的轮询消息
59 MSG msg;
60 while (::GetMessage(&msg, NULL, 0, 0)) {
61 ::TranslateMessage(&msg);
62 ::DispatchMessage(&msg);
63 }
64
65 return (int)msg.wParam;
66
67 }
68
69
70
71 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wparam, LPARAM lparam) {
72 switch (message)
73 {
74 case WM_DESTROY:
75 ::PostQuitMessage(0);
76 break;
77 default:
78 break;
79 }
80 return DefWindowProc(hWnd,message,wparam,lparam);
81 }