当前位置:网站首页>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
边栏推荐
- Introduction and use of automatic machine learning framework (flaml, H2O)
- AcWing 1298.曹冲养猪 题解
- Use dapr to shorten software development cycle and improve production efficiency
- 机器学习--人口普查数据分析
- Request object and response object analysis
- 02 staff information management after the actual project
- MySQL主从复制、读写分离
- QT creator runs the Valgrind tool on external applications
- Attention apply personal understanding to images
- What does usart1 mean
猜你喜欢
Cookie setting three-day secret free login (run tutorial)
QT creator support platform
02 staff information management after the actual project
[download app for free]ineukernel OCR image data recognition and acquisition principle and product application
AcWing 1298. Solution to Cao Chong's pig raising problem
02-项目实战之后台员工信息管理
Pytorch基础
Machine learning -- census data analysis
Image recognition - pyteseract TesseractNotFoundError: tesseract is not installed or it‘s not in your path
Unable to call numpy in pycharm, with an error modulenotfounderror: no module named 'numpy‘
随机推荐
01项目需求分析 (点餐系统)
[download app for free]ineukernel OCR image data recognition and acquisition principle and product application
Picture coloring project - deoldify
[recommended by bloggers] C # generate a good-looking QR code (with source code)
What does usart1 mean
Leetcode 461 Hamming distance
AcWing 242. A simple integer problem (tree array + difference)
安全测试涉及的测试对象
Ansible实战系列一 _ 入门
PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named ‘numpy‘
Pytorch基础
JDBC principle
Deoldify项目问题——OMP:Error#15:Initializing libiomp5md.dll,but found libiomp5md.dll already initialized.
[Thesis Writing] how to write function description of jsp online examination system
图像识别问题 — pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your path
Software testing - interview question sharing
Install MySQL for Ubuntu 20.04
QT creator runs the Valgrind tool on external applications
Number game
Record a problem of raspberry pie DNS resolution failure