当前位置:网站首页>Vs2019 desktop app quick start
Vs2019 desktop app quick start
2022-07-06 11:24:00 【imxlw00】
Create project
choice windows Desktop wizard 
Configuration items

Choose the type of program

Write code

#include <windows.h> // The underlying implementation window The header file
//6 Process window
//CALLBACK representative __stdcall The order in which parameters are passed : From right to left To stack , And before the function returns Empty stack
LRESULT CALLBACK WindowProc(
HWND hwnd, // The window handle to which the message belongs
UINT uMsg, // Specific message name WM_XXXX Message name
WPARAM wParam, // Keyboard additional messages
LPARAM lParam // Mouse attached message
)
{
switch (uMsg)
{
case WM_CLOSE:
// all xxxWindow The way to end , Will not enter the message queue , I'm going to do it directly
DestroyWindow(hwnd); //DestroyWindow Send another message WM_DESTROY
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN: // Press the left mouse button
{
int xPos = LOWORD(lParam);
int yPos = HIWORD(lParam);
char buf[1024];
wsprintf(buf,TEXT("x = %d,y = %d"), xPos, yPos);
MessageBox(hwnd, buf, TEXT(" Press the left mouse button "), MB_OK);
break;
}
case WM_KEYDOWN: // keyboard
MessageBox(hwnd, TEXT(" Press the keyboard "), TEXT(" Press the keyboard "), MB_OK);
break;
case WM_PAINT: // mapping
{
PAINTSTRUCT ps; // Drawing structure
HDC hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, 100, 100, TEXT("HELLO"), strlen("HELLO"));
EndPaint(hwnd, &ps);
}
break;
}
// The default processing method is used for the return value
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
// Program entry function
//WINAPI representative __stdcall The order in which parameters are passed : From right to left To stack , And before the function returns Empty stack
int WINAPI WinMain(
HINSTANCE hInstance, // Application instance handle
HINSTANCE hPrevInstance, // Last application handle , stay win32 In the environment , The parameter is generally NULL, It doesn't work
LPSTR lpCmdLine, //char * argv[]
int nShowCmd) // Show command Maximize 、 To minimize the normal
{
//1、 Design window
//2、 Registration window
//3、 create a window
//4、 Display and update
//5、 Get message through loop
//6、 Process the message ( Window procedure )
//1、 Design window
WNDCLASS wc;
wc.cbClsExtra = 0; // Class
wc.cbWndExtra = 0; // Extra memory for Windows
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // Set the background
wc.hCursor = LoadCursor(NULL, IDC_HAND); // Set the cursor If the first parameter is NULL, Represents using the cursor provided by the system
wc.hIcon = LoadIcon(NULL, IDI_ERROR); // Icon If the first parameter is NULL, Represents using the cursor provided by the system
wc.hInstance = hInstance; // Application instance handle Pass in WinMain The formal parameter in the
wc.lpfnWndProc = WindowProc; // Callback function Window procedure
wc.lpszClassName = TEXT("WIN"); // Specify the window class name
wc.lpszMenuName = NULL; // Menu name
wc.style = 0; // Display style 0 Represents the default style
//2、 Register window class
RegisterClass(&wc);
//3、 create a window
/* lpClassName, Class name lpWindowName, Title name dwStyle, WS_OVERLAPPEDWINDOW style x, Show coordinates CW_USEDEFAULT The default value is y, nWidth, Wide and high nHeight, hWndParent, The parent window NULL hMenu, menu NULL hInstance, Instance handle hInstance lpParam) Added value NULL */
HWND hwnd = CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
//4、 Display and update
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//5、 Get message through loop
/* HWND hwnd; Main window handle UINT message; Specific message name WPARAM wParam; Additional messages Keyboard messages LPARAM lParam; Additional messages Mouse message DWORD time; Message generation time POINT pt; Additional messages Mouse message x y */
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
/* _Out_ LPMSG lpMsg, news _In_opt_ HWND hWnd, Capture window fill NULL For capturing all windows _In_ UINT wMsgFilterMin, // Minimum and maximum filtered messages Generally fill in 0 _In_ UINT wMsgFilterMax) // fill 0 Capture all messages on behalf of */
//if (GetMessage(&msg, NULL, 0, 0) == FALSE)
//{
// break;
//}
// Translate the news
TranslateMessage(&msg);
// Not for false
// Distribution message
DispatchMessage(&msg);
}
return 0;
}
Running results

边栏推荐
- QT creator test
- [recommended by bloggers] background management system of SSM framework (with source code)
- 天梯赛练习集题解LV1(all)
- Are you monitored by the company for sending resumes and logging in to job search websites? Deeply convinced that the product of "behavior awareness system ba" has not been retrieved on the official w
- Test objects involved in safety test
- Install MySQL for Ubuntu 20.04
- Julia 1.6 1.7 common problem solving
- AcWing 1298. Solution to Cao Chong's pig raising problem
- Solution: log4j:warn please initialize the log4j system properly
- Use dapr to shorten software development cycle and improve production efficiency
猜你喜欢

Pytorch基础

Asp access Shaoxing tourism graduation design website

Machine learning notes week02 convolutional neural network

连接MySQL数据库出现错误:2059 - authentication plugin ‘caching_sha2_password‘的解决方法

Solution: log4j:warn please initialize the log4j system properly

Swagger, Yapi interface management service_ SE

QT creator test

Solve the problem of installing failed building wheel for pilot
![[number theory] divisor](/img/ec/036d7e76cc566c08d336444f2898e1.jpg)
[number theory] divisor

QT creator shape
随机推荐
Error reporting solution - io UnsupportedOperation: can‘t do nonzero end-relative seeks
neo4j安装教程
FRP intranet penetration
AcWing 1294.樱花 题解
There are three iPhone se 2022 models in the Eurasian Economic Commission database
MySQL主從複制、讀寫分離
天梯赛练习集题解LV1(all)
[number theory] divisor
机器学习笔记-Week02-卷积神经网络
误删Path变量解决
Deoldify项目问题——OMP:Error#15:Initializing libiomp5md.dll,but found libiomp5md.dll already initialized.
Tcp/ip protocol (UDP)
自动机器学习框架介绍与使用(flaml、h2o)
MySQL completely uninstalled (windows, MAC, Linux)
Introduction to the easy copy module
Django running error: error loading mysqldb module solution
PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named ‘numpy‘
引入了junit为什么还是用不了@Test注解
02-项目实战之后台员工信息管理
JDBC原理