在 Dev-C++中編譯運行GUI 程序介紹(三)有趣示例一組

在 Dev-C++中編譯運行GUI程序介紹(三)有趣示例一組

前期見
在 Dev-C++中編譯運行GUI 程序介紹(一)基礎 https://blog.csdn.net/cnds123/article/details/147019078

在 Dev-C++中編譯運行GUI 程序介紹(二)示例:祝福程序 https://blog.csdn.net/cnds123/article/details/147019350

本文給出一組可以在 Dev-C++中編譯運行的GUI 應用程序。

示例2、簡單的猜數字游戲

下面是一個簡單的猜數字游戲源碼,您可以在 Dev-C++ 中編譯和運行它。這個程序創建了一個基本的 GUI 界面,用戶可以通過輸入數字來進行猜測,程序會提示用戶猜的數字是太高、太低還是猜對了。并有猜中計數和“重玩”按鈕功能。

運行效果:

源碼如下:

#include <windows.h>
#include <string>
#include <cstdlib>
#include <ctime>using namespace std;// 全局變量
HWND hwndInput, hwndButton, hwndOutput, hwndCountLabel;
int randomNumber;
int guessCount = 0; // 猜中計數// 生成隨機數
void generateRandomNumber() {randomNumber = rand() % 100 + 1; // 生成 1 到 100 之間的隨機數guessCount = 0; // 重置猜中計數
}// 消息處理函數
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_CREATE: {// 創建說明標簽CreateWindow("STATIC", "請輸入1到100之間的數字:", WS_CHILD | WS_VISIBLE,50, 20, 200, 25, hwnd, NULL, NULL, NULL);// 創建輸入框hwndInput = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,50, 50, 100, 25, hwnd, NULL, NULL, NULL);// 創建猜測按鈕hwndButton = CreateWindow("BUTTON", "猜測", WS_CHILD | WS_VISIBLE,50, 100, 100, 30, hwnd, (HMENU)1, NULL, NULL);// 創建重玩按鈕CreateWindow("BUTTON", "重玩", WS_CHILD | WS_VISIBLE,160, 100, 100, 30, hwnd, (HMENU)2, NULL, NULL);// 創建輸出框hwndOutput = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE,50, 150, 200, 25, hwnd, NULL, NULL, NULL);// 創建猜中計數標簽hwndCountLabel = CreateWindow("STATIC", "猜測次數: 0", WS_CHILD | WS_VISIBLE,50, 180, 200, 25, hwnd, NULL, NULL, NULL);generateRandomNumber(); // 生成第一個隨機數// 設置光標焦點到輸入框SetFocus(hwndInput);break;}case WM_COMMAND: {if (LOWORD(wParam) == 1) { // 按鈕被點擊char buffer[10];GetWindowText(hwndInput, buffer, sizeof(buffer)); // 獲取輸入的文本int guess = atoi(buffer); // 將字符串轉換為整數// 進行猜測判斷string message;guessCount++; // 增加猜測次數if (guess < randomNumber) {message = "太低了!";} else if (guess > randomNumber) {message = "太高了!";} else {message = "恭喜你,猜對了!";// 不重置猜測次數,直到用戶選擇“重玩”}// 更新輸出框和猜中計數標簽SetWindowText(hwndOutput, message.c_str());SetWindowText(hwndCountLabel, ("猜測次數: " + to_string(guessCount)).c_str());// 設置光標焦點到輸入框SetFocus(hwndInput);}else if (LOWORD(wParam) == 2) { // 重玩按鈕被點擊generateRandomNumber(); // 生成新的隨機數SetWindowText(hwndOutput, ""); // 清空輸出框SetWindowText(hwndCountLabel, "猜測次數: 0"); // 重置猜中計數SetWindowText(hwndInput, ""); // 清空輸入框SetFocus(hwndInput); // 設置光標焦點到輸入框}break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {srand(static_cast<unsigned int>(time(0))); // 設置隨機種子// 注冊窗口類const char CLASS_NAME[] = "GuessNumberWindow";WNDCLASS wc = {};wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "猜數字游戲", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, NULL, NULL, hInstance, NULL);ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

示例3、剪子、包袱、錘游戲

剪子、包袱、錘(又稱石頭剪刀布)游戲規則

勝負關系:

剪子 勝 包袱(剪刀剪開布)。

包袱 勝 錘(布包裹石頭)。

錘 勝 剪子(石頭砸壞剪刀)。

手勢相同:平局,重新對決。

界面如下

源碼如下:

//剪子、包袱、錘游戲
#include <windows.h>
#include <string>
#include <cstdlib>
#include <ctime>
#include <sstream>using namespace std;// 全局變量
HWND hwndOutput, hwndComputerChoice;
int computerChoice;// 生成計算機的選擇
void generateComputerChoice() {computerChoice = rand() % 3; // 0 = 剪子, 1 = 包袱, 2 = 錘
}// 消息處理函數
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_CREATE: {// 創建剪子按鈕CreateWindow("BUTTON", "剪子 (X)", WS_CHILD | WS_VISIBLE,50, 50, 100, 30, hwnd, (HMENU)1, NULL, NULL);// 創建包袱按鈕CreateWindow("BUTTON", "包袱 (Q)", WS_CHILD | WS_VISIBLE,50, 100, 100, 30, hwnd, (HMENU)2, NULL, NULL);// 創建錘按鈕CreateWindow("BUTTON", "錘 (P)", WS_CHILD | WS_VISIBLE,50, 150, 100, 30, hwnd, (HMENU)3, NULL, NULL);// 創建新局按鈕CreateWindow("BUTTON", "新局", WS_CHILD | WS_VISIBLE,50, 200, 100, 30, hwnd, (HMENU)4, NULL, NULL);// 創建輸出框hwndOutput = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE,200, 50, 200, 100, hwnd, NULL, NULL, NULL);// 創建計算機選擇顯示框hwndComputerChoice = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE,200, 150, 200, 25, hwnd, NULL, NULL, NULL);// 設置隨機種子srand(static_cast<unsigned int>(time(0)));break;}case WM_COMMAND: {if (LOWORD(wParam) >= 1 && LOWORD(wParam) <= 3) { // 剪子、包袱或錘按鈕被點擊int userChoice = LOWORD(wParam) - 1; // 0 = 剪子, 1 = 包袱, 2 = 錘generateComputerChoice(); // 生成計算機選擇// 計算機選擇對應的輸出來顯示string computerChoiceStr;if (computerChoice == 0) computerChoiceStr = "剪子 (X)";else if (computerChoice == 1) computerChoiceStr = "包袱 (Q)";else if (computerChoice == 2) computerChoiceStr = "錘 (P)";// 判斷輸贏string result;if (userChoice == computerChoice) {result = "平局!";} else if ((userChoice == 0 && computerChoice == 1) || (userChoice == 1 && computerChoice == 2) || (userChoice == 2 && computerChoice == 0)) {result = "你輸了!";} else {result = "你贏了!";}// 更新輸出框和計算機選擇框SetWindowText(hwndOutput, result.c_str());SetWindowText(hwndComputerChoice, ("計算機選擇: " + computerChoiceStr).c_str());} else if (LOWORD(wParam) == 4) { // 新局按鈕被點擊SetWindowText(hwndOutput, ""); // 清空輸出框SetWindowText(hwndComputerChoice, ""); // 清空計算機選擇框}break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 注冊窗口類const char CLASS_NAME[] = "RockPaperScissorsWindow";WNDCLASS wc = {};wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "剪子、包袱、錘游戲", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 420, 300, NULL, NULL, hInstance, NULL);ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

示例4、簡單計算器

可以在 Dev-C++ 中編譯和運行簡單計算器(通過計算機鍵盤輸入數)。

界面如下:

代碼如下:

#include <windows.h>
#include <string>
#include <sstream>using namespace std;// 全局變量
HWND hwndInput1, hwndInput2, hwndOutput, hwndButtonAdd, hwndButtonSub, hwndButtonMul, hwndButtonDiv;// 計算結果并顯示
void Calculate(char operation) {char buffer1[100], buffer2[100];GetWindowText(hwndInput1, buffer1, sizeof(buffer1)); // 獲取第一個輸入框的文本GetWindowText(hwndInput2, buffer2, sizeof(buffer2)); // 獲取第二個輸入框的文本double num1 = atof(buffer1); // 轉換為 doubledouble num2 = atof(buffer2); // 轉換為 doubledouble result = 0.0;// 根據操作符進行計算switch (operation) {case '+': result = num1 + num2; break;case '-': result = num1 - num2; break;case '*': result = num1 * num2; break;case '/':if (num2 != 0) {result = num1 / num2;} else {SetWindowText(hwndOutput, "錯誤:除以零");return;}break;}// 顯示結果stringstream ss;ss << result;SetWindowText(hwndOutput, ss.str().c_str());
}// 消息處理函數
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_CREATE: {// 創建輸入框1hwndInput1 = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,50, 20, 100, 30, hwnd, NULL, NULL, NULL);// 創建輸入框2hwndInput2 = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,50, 60, 100, 30, hwnd, NULL, NULL, NULL);// 創建輸出框hwndOutput = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE,50, 100, 200, 30, hwnd, NULL, NULL, NULL);// 創建加法按鈕hwndButtonAdd = CreateWindow("BUTTON", "+", WS_CHILD | WS_VISIBLE,200, 20, 30, 30, hwnd, (HMENU)1, NULL, NULL);// 創建減法按鈕hwndButtonSub = CreateWindow("BUTTON", "-", WS_CHILD | WS_VISIBLE,200, 60, 30, 30, hwnd, (HMENU)2, NULL, NULL);// 創建乘法按鈕hwndButtonMul = CreateWindow("BUTTON", "*", WS_CHILD | WS_VISIBLE,250, 20, 30, 30, hwnd, (HMENU)3, NULL, NULL);// 創建除法按鈕hwndButtonDiv = CreateWindow("BUTTON", "/", WS_CHILD | WS_VISIBLE,250, 60, 30, 30, hwnd, (HMENU)4, NULL, NULL);break;}case WM_COMMAND: {if (LOWORD(wParam) == 1) { // 加法按鈕被點擊Calculate('+');} else if (LOWORD(wParam) == 2) { // 減法按鈕被點擊Calculate('-');} else if (LOWORD(wParam) == 3) { // 乘法按鈕被點擊Calculate('*');} else if (LOWORD(wParam) == 4) { // 除法按鈕被點擊Calculate('/');}break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 注冊窗口類const char CLASS_NAME[] = "SimpleCalculator";WNDCLASS wc = {};wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "簡單計算器", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 400, 200, NULL, NULL, hInstance, NULL);ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

示例5、改進版的簡單計算器

下面是一個改進版的簡單計算器,界面上包含數字按鍵(0-9)和基本的運算按鍵(加、減、乘、除)。用戶可以通過點擊數字按鍵和運算符按鍵來輸入數字和運算,然后按下“=”按鈕來計算結果。

界面如下:

代碼如下:

#include <windows.h>
#include <string>
#include <cstdlib>
#include <sstream>using namespace std;// 全局變量
HWND hwndDisplay;
string currentInput = ""; // 當前輸入// 更新顯示框
void UpdateDisplay() {SetWindowText(hwndDisplay, currentInput.c_str());
}// 處理數字和操作符的按鈕點擊
void ButtonClick(char value) {currentInput += value; // 追加輸入UpdateDisplay();
}// 計算結果并顯示
void Calculate() {double num1 = 0.0, num2 = 0.0;char operation = '+';size_t pos = 0;// 解析輸入for (char c : currentInput) {if (c == '+' || c == '-' || c == '*' || c == '/') {num1 = atof(currentInput.substr(0, pos).c_str());operation = c;pos++;break;}pos++;}if (pos < currentInput.length()) {num2 = atof(currentInput.substr(pos).c_str());} else {return; // 沒有足夠的輸入進行計算}double result = 0.0;// 根據操作符進行計算switch (operation) {case '+': result = num1 + num2; break;case '-': result = num1 - num2; break;case '*': result = num1 * num2; break;case '/':if (num2 != 0) {result = num1 / num2;} else {currentInput = "錯誤:除以零";UpdateDisplay();return;}break;}// 顯示結果stringstream ss;ss << result;currentInput = ss.str(); // 更新為結果UpdateDisplay();
}// 消息處理函數
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_CREATE: {// 創建顯示框hwndDisplay = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | ES_RIGHT | ES_READONLY,10, 10, 280, 30, hwnd, NULL, NULL, NULL);// 創建按鈕const char* buttons[] = {"7", "8", "9", "+","4", "5", "6", "-","1", "2", "3", "*","0", ".", "=", "/"};int x = 10, y = 50;for (int i = 0; i < 16; ++i) {CreateWindow("BUTTON", buttons[i], WS_CHILD | WS_VISIBLE,x, y, 65, 40, hwnd, (HMENU)(INT_PTR)(i + 1), NULL, NULL);x += 70;if ((i + 1) % 4 == 0) {x = 10;y += 45;}}// 創建"清空"按鈕CreateWindow("BUTTON", "清空", WS_CHILD | WS_VISIBLE,10, 230, 280, 30, hwnd, (HMENU)17, NULL, NULL);break;}case WM_COMMAND: {int id = LOWORD(wParam);if (id >= 1 && id <= 16) {const char* buttonValues[] = {"7", "8", "9", "+","4", "5", "6", "-","1", "2", "3", "*","0", ".", "=", "/"};if (buttonValues[id - 1][0] == '=') {Calculate();} else {ButtonClick(buttonValues[id - 1][0]);}} else if (id == 17) { // 清空按鈕currentInput = "";UpdateDisplay();}break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 注冊窗口類const char CLASS_NAME[] = "SimpleCalculator";WNDCLASS wc = {};wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "手持計算器", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 315, 310, NULL, NULL, hInstance, NULL);if (hwnd == NULL) {return 0;}ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg = {};while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

示例6、繪制直線、圓和三角形

Windows API中的GDI(Graphics Device Interface,圖形設備接口)是一個用于處理圖形和圖像輸出的子系統。它允許程序與各種輸出設備(如顯示器、打印機等設備無關性)進行交互,繪制圖形、文本和圖像。

GDI的作用

  1. 繪制圖形:GDI提供了一系列函數,用于繪制基本形狀(如線條、矩形、圓形、多邊形等)。程序員可以使用這些函數在窗口上繪制想要的圖形。
  2. 文本處理:GDI也可以用于繪制文本。它支持多種字體和文本格式,程序員可以選擇字體、大小和顏色來顯示文本。
  3. 圖像處理:GDI能夠加載并顯示位圖(BMP)、圖標等圖像格式。程序員可以將圖像繪制到窗口或打印機上。
  4. 設備無關性:GDI使得程序可以不依賴于特定的硬件設備。無論是在顯示器上繪制,還是在打印機上輸出,GDI提供的接口都是一致的。這意味著,程序可以在不同的輸出設備上運行,而不需要進行太多修改。
  5. 設備上下文(DC:在GDI中,設備上下文是一種數據結構,表示繪圖設備的狀態。程序在繪圖時需要獲取設備上下文,以便使用它來進行繪圖操作。

GDI的基本操作

  1. 創建窗口:在窗口上繪制圖形的第一步是創建一個窗口。這可以通過Windows API中的函數來實現。
  2. 獲取設備上下文:在繪制之前,程序需要獲取窗口的設備上下文(HDC),這樣才能在窗口上進行繪制。
  3. 繪制操作
    • 使用GDI函數繪制圖形(如MoveToEx和LineTo繪制直線)。
    • 使用TextOut函數繪制文本。
    • 使用BitBlt函數復制圖像。
  4. 釋放資源:繪制完成后,程序需要釋放獲取的設備上下文,以避免資源泄露。

先看效果圖:

源碼如下:

#include <windows.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_PAINT: {PAINTSTRUCT ps;HDC hdc = BeginPaint(hwnd, &ps);// 設置顏色HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255)); // 藍色SelectObject(hdc, hPen);// 畫直線MoveToEx(hdc, 50, 50, NULL); // 起點LineTo(hdc, 200, 50); // 終點// 畫圓Ellipse(hdc, 50, 70, 150, 170); // x1, y1, x2, y2// 畫三角形POINT vertices[] = { {200, 70}, {250, 170}, {150, 170} };Polygon(hdc, vertices, 3);// 釋放資源DeleteObject(hPen);EndPaint(hwnd, &ps);break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {const char CLASS_NAME[] = "SampleWindowClass";WNDCLASS wc = {};wc.lpfnWndProc = WndProc; // 設置窗口過程wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "繪圖示例", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hInstance, NULL);if (hwnd == NULL) {return 0;}ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

示例7、繪制紅五角星

使用Windows API中的GDI (圖形設備接口)。

先看效果圖:

源碼如下:

#include <windows.h>
#include <math.h>#define M_PI 3.14159265358979323846 // 定義π(如未定義)// 計算五角星頂點的函數
void DrawStar(HDC hdc, int centerX, int centerY, int size) {POINT points[10];double angle;int i;// 計算五角星的頂點for (i = 0; i < 10; i++) {angle = (i * 36.0) * (M_PI / 180.0); // 角度轉換為弧度// 外部頂點if (i % 2 == 0) {points[i].x = centerX + (int)(size * cos(angle));points[i].y = centerY - (int)(size * sin(angle));}// 內部頂點else {points[i].x = centerX + (int)(size * 0.5 * cos(angle));points[i].y = centerY - (int)(size * 0.5 * sin(angle));}}// 繪制五角星HPEN hPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0)); // 紅色SelectObject(hdc, hPen);SelectObject(hdc, GetStockObject(NULL_BRUSH)); // 無填充Polygon(hdc, points, 10); // 繪制五角星// 釋放資源DeleteObject(hPen);
}// 消息處理函數
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_PAINT: {PAINTSTRUCT ps;HDC hdc = BeginPaint(hwnd, &ps);// 設置背景顏色FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));// 繪制紅五角星DrawStar(hdc, 200, 150, 100);EndPaint(hwnd, &ps);break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, msg, wParam, lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {const char CLASS_NAME[] = "StarDrawingWindow";WNDCLASS wc = {};wc.lpfnWndProc = WndProc; // 設置窗口過程wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);// 創建窗口HWND hwnd = CreateWindowEx(0, CLASS_NAME, "繪制紅五角星", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hInstance, NULL);if (hwnd == NULL) {return 0;}ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循環MSG msg;while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76431.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【高校主辦】2025年第四屆信息與通信工程國際會議(JCICE 2025)

重要信息 會議網址&#xff1a;www.jcice.org 會議時間&#xff1a;2025年7月25-27日 召開地點&#xff1a;哈爾濱 截稿時間&#xff1a;2025年6月15日 錄用通知&#xff1a;投稿后2周內 收錄檢索&#xff1a;EI,Scopus 會議簡介 JCICE 2022、JCICE 2023、JCICE 2…

【Linux】Linux 操作系統 - 03 ,初步指令結尾 + shell 理解

文章目錄 前言一、打包和壓縮二、有關體系結構 (考)面試題 三、重要的熱鍵四、shell 命令及運行原理初步理解五、本節命令總結總結 前言 本篇文章 , 筆者記錄的筆記內容包含 : 基礎指令 、重要熱鍵 、shell 初步理解 、權限用戶的部分問題 。 內容皆是重要知識點 , 需要認真理…

Python: sqlite3.OperationalError: no such table: ***解析

出現該錯誤說明數據庫中沒有成功創建 reviews 表。以下是完整的解決方案: 步驟 1:創建數據庫表 在插入數據前,必須先執行建表語句。請通過以下任一方式創建表: 方式一:使用 SQLite 命令行 bash 復制 # 進入 SQLite 命令行 sqlite3 reviews.db# 執行建表語句 CREATE T…

VSCode CLine 插件自定義配置使用 Claude 3.7 模型進行 AI 開發

一個互聯網技術玩家&#xff0c;一個愛聊技術的家伙。在工作和學習中不斷思考&#xff0c;把這些思考總結出來&#xff0c;并分享&#xff0c;和大家一起交流進步。 本文介紹如何在 Visual Studio Code (VSCode) 中安裝和自定義配置 CLine 插件&#xff0c;并使用 Claude 3.7 模…

【VSCode配置】運行springboot項目和vue項目

目錄 安裝VSCode安裝軟件安裝插件VSCode配置user的全局設置setting.jsonworkshop的項目自定義設置setting.jsonworkshop的項目啟動配置launch.json 安裝VSCode 官網下載 安裝軟件 git安裝1.1.12版本&#xff0c;1.2.X高版本無法安裝node14以下版本 nvm安裝&#xff08;github…

linux shell編程之條件語句(二)

目錄 一. 條件測試操作 1. 文件測試 2. 整數值比較 3. 字符串比較 4. 邏輯測試 二. if 條件語句 1. if 語句的結構 (1) 單分支 if 語句 (2) 雙分支 if 語句 (3) 多分支 if 語句 2. if 語句應用示例 (1) 單分支 if 語句應用 (2) 雙分支 if 語句應用 (3) 多分支 …

榕壹云在線商城系統:基于THinkPHP+ Mysql+UniApp全端適配、高效部署的電商解決方案

項目背景&#xff1a;解決多端電商開發的痛點 隨著移動互聯網的普及和用戶購物習慣的碎片化&#xff0c;傳統電商系統面臨以下挑戰&#xff1a; 1. 多平臺適配成本高&#xff1a;需要同時開發App、小程序、H5等多端應用&#xff0c;重復開發導致資源浪費。 2. 技術依賴第三方…

神經動力學系統與計算及AI拓展

大腦&#xff0c;一個蘊藏在我們顱骨之內的宇宙&#xff0c;以活動脈動&#xff0c;如同由電信號和化學信號編織而成的交響樂&#xff0c;精巧地協調著思想、情感和行為。但是&#xff0c;這種復雜的神經元舞蹈是如何產生我們豐富多彩的精神生活的呢&#xff1f;這正是神經動力…

K8s常用基礎管理命令(一)

基礎管理命令 基礎命令kubectl get命令kubectl create命令kubectl apply命令kubectl delete命令kubectl describe命令kubectl explain命令kubectl run命令kubectl cp命令kubectl edit命令kubectl logs命令kubectl exec命令kubectl port-forward命令kubectl patch命令 集群管理命…

本地化部署DeepSeek-R1蒸餾大模型:基于飛槳PaddleNLP 3.0的實戰指南

目錄 一、飛槳框架3.0&#xff1a;大模型推理新范式的開啟1.1 自動并行機制革新&#xff1a;解放多卡推理1.2 推理-訓練統一設計&#xff1a;一套代碼全流程復用 二、本地部署DeepSeek-R1-Distill-Llama-8B的實戰流程2.1 機器環境說明2.2 模型與推理腳本準備2.3 啟動 Docker 容…

單片機方案開發 代寫程序/燒錄芯片 九齊/應廣等 電動玩具 小家電 語音開發

在電子產品設計中&#xff0c;單片機&#xff08;MCU&#xff09;無疑是最重要的組成部分之一。無論是消費電子、智能家居、工業控制&#xff0c;還是可穿戴設備&#xff0c;小家電等&#xff0c;單片機的應用無處不在。 單片機&#xff0c;簡而言之&#xff0c;就是將計算機…

【位運算】兩整數之和

文章目錄 371. 兩整數之和解題思路&#xff1a;位運算 371. 兩整數之和 371. 兩整數之和 ? 給你兩個整數 a 和 b &#xff0c;不使用 運算符 和 - &#xff0c;計算并返回兩整數之和。 示例 1&#xff1a; 輸入&#xff1a;a 1, b 2 輸出&#xff1a;3示例 2&#xff1…

使用Python從零實現一個端到端多模態 Transformer大模型

嘿&#xff0c;各位&#xff01;今天咱們要來一場超級酷炫的多模態 Transformer 冒險之旅&#xff01;想象一下&#xff0c;讓一個模型既能看懂圖片&#xff0c;又能理解文字&#xff0c;然后還能生成有趣的回答。聽起來是不是很像超級英雄的超能力&#xff1f;別急&#xff0c…

新聞推薦系統(springboot+vue+mysql)含萬字文檔+運行說明文檔

新聞推薦系統(springbootvuemysql)含萬字文檔運行說明文檔 該系統是一個新聞推薦系統&#xff0c;分為管理員和用戶兩個角色。管理員模塊包括個人中心、用戶管理、排行榜管理、新聞管理、我的收藏管理和系統管理等功能。管理員可以通過這些功能進行用戶信息管理、查看和編輯用…

游戲引擎學習第218天

構建并運行&#xff0c;注意一下在調試系統關閉前人物的移動速度 現在我準備開始構建項目。如果我沒記錯的話&#xff0c;我們之前關閉了調試系統&#xff0c;主要是為了避免大家在運行過程中遇到問題。現在調試系統沒有開啟&#xff0c;一切運行得很順利&#xff0c;看到那個…

基于混合編碼器和邊緣引導的拉普拉斯金字塔網絡用于遙感變化檢測

Laplacian Pyramid Network With HybridEncoder and Edge Guidance for RemoteSensing Change Detection 0、摘要 遙感變化檢測&#xff08;CD&#xff09;是觀測和分析動態土地覆蓋變化的一項關鍵任務。許多基于深度學習的CD方法表現出強大的性能&#xff0c;但它們的有效性…

Go語言從零構建SQL數據庫(6) - sql解析器(番外)- *號的處理

番外&#xff1a;處理SQL通配符查詢 在SQL中&#xff0c;SELECT * FROM table是最基礎的查詢之一&#xff0c;星號&#xff08;*&#xff09;是一個通配符&#xff0c;表示"選擇所有列"。雖然通配符查詢看起來簡單&#xff0c;但在解析器中需要特殊處理。下面詳細介…

淺析Centos7安裝Oracle12數據庫

Linux下的Oracle數據庫實在是太難安裝了&#xff0c;事賊多&#xff0c;我都懷疑能安裝成功是不是運氣的成分更高一些。這里操作系統是Centos7&#xff0c;Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。 Oracle下載鏈接: https…

02-redis-源碼下載

1、進入到官網 redis官網地址https://redis.io/ 2 進入到download頁面 官網頁面往最底下滑動&#xff0c;找到如下頁面 點擊【download】跳轉如下頁面&#xff0c;直接訪問&#xff1a;【https://redis.io/downloads/#stack】到如下頁面 ? 3 找到對應版本的源碼 https…

2024年博客之星的省域空間分布展示-以全網Top300為例

目錄 前言 一、2024博客之星 1、所有排名數據 2、空間屬性管理 二、數據抓取與處理 1、相關業務表的設計 2、數據抓取處理 3、空間查詢分析實踐 三、數據成果挖掘 1、省域分布解讀 2、技術開發活躍 四、總結 前言 2024年博客之星的評選活動已經過去了一個月&#xf…