酷代码 AI
菜单

c++windows api黑色背景显示随机一张纸牌,用绘图,不能出现任何错误

以下是一个使用 Windows API 在黑色上显示随机一张纸牌的 C++ 程序。该程序会随机选择一张纸牌(包括花色和点数),并在窗口中绘制出来。 ```cpp #include <windows.h> #include <cstdlib> #include <ctime> // 定义纸牌的花色和点数 const char* suits[] = { "♠", "♥", "♣", "♦" }; const char* ranks[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 窗口过程函数 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); // 设置黑色 HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 0)); RECT rect; GetClientRect(hwnd, &rect); FillRect(hdc, &rect, hBrush); DeleteObject(hBrush); // 随机选择一张纸牌 srand(static_cast<unsigned int>(time(nullptr))); int suitIndex = rand() % 4; int rankIndex = rand() % 13; // 设置文本颜色为白色 SetTextColor(hdc, RGB(255, 255, 255)); SetBkMode(hdc, TRANSPARENT); // 计算文本位置,使其居中显示 int textWidth = 20; // 估计文本宽度 int textHeight = 20; // 估计文本高度 int x = (rect.right - rect.left - textWidth) / 2; int y = (rect.bottom - rect.top - textHeight) / 2; // 绘制纸牌 char card[10]; sprintf_s(card, "%s%s", ranks[rankIndex], suits[suitIndex]); TextOut(hdc, x, y, card, strlen(card)); 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, PSTR szCmdLine, int iCmdShow) { // 注册窗口类 WNDCLASS wc = {}; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.lpszClassName = L"CardWindowClass"; RegisterClass(&wc); // 创建窗口 HWND hwnd = CreateWindow(wc.lpszClassName, L"Random Card", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hInstance, NULL); // 显示窗口 ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); // 消息循环 MSG msg = {}; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return static_cast<int>(msg.wParam); } ``` 代码说明: 1. 纸牌定义:使用 `suits` 数组存储四种花色,`ranks` 数组存储十三种点数。 2. 窗口过程函数 `WndProc`:处理 `WM_PAINT` 消息时,首先设置黑色,然后随机选择一张纸牌,最后将纸牌信息绘制在窗口中心。 3. 主函数 `WinMain`:注册窗口类,创建窗口,显示窗口,并进入消息循环。 编译和运行: 将上述代码保存为 `.cpp` 文件,使用 Visual Studio 等 C++ 编译器进行编译和运行。运行程序后,会弹出一个窗口,窗口为黑色,中央显示一张随机选择的纸牌。 [2026-01-24 09:42:43 | AI问答 | 989点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多