当前位置:网站首页>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
边栏推荐
- Principes JDBC
- 基于apache-jena的知识问答
- Leetcode 461 Hamming distance
- Software testing - interview question sharing
- AcWing 179.阶乘分解 题解
- Some notes of MySQL
- vs2019 使用向导生成一个MFC应用程序
- ImportError: libmysqlclient. so. 20: Cannot open shared object file: no such file or directory solution
- 自动机器学习框架介绍与使用(flaml、h2o)
- 01 project demand analysis (ordering system)
猜你喜欢
自动机器学习框架介绍与使用(flaml、h2o)
C语言读取BMP文件
How to configure flymcu (STM32 serial port download software) is shown in super detail
MySQL主从复制、读写分离
vs2019 桌面程序快速入门
[Thesis Writing] how to write function description of jsp online examination system
Redis的基础使用
Learn winpwn (3) -- sEH from scratch
保姆级出题教程
连接MySQL数据库出现错误:2059 - authentication plugin ‘caching_sha2_password‘的解决方法
随机推荐
TCP/IP协议(UDP)
Ansible practical Series III_ Task common commands
vs2019 第一个MFC应用程序
JDBC原理
一键提取pdf中的表格
Why can't I use the @test annotation after introducing JUnit
L2-004 这是二叉搜索树吗? (25 分)
Swagger, Yapi interface management service_ SE
double转int精度丢失问题
安装numpy问题总结
MySQL与c语言连接(vs2019版)
图像识别问题 — pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your path
SSM整合笔记通俗易懂版
AcWing 1294.樱花 题解
数据库高级学习笔记--SQL语句
Solution: log4j:warn please initialize the log4j system properly
牛客Novice月赛40
[number theory] divisor
Ansible practical Series II_ Getting started with Playbook
[ahoi2009]chess Chinese chess - combination number optimization shape pressure DP