sách gpt4 ai đã đi

Thay đổi kích thước bảng điều khiển Windows

In lại 作者:行者123 更新时间:2023-12-05 01:37:40 27 4
mua khóa gpt4 Nike

我一直在想办法调整控制台窗口的大小。这是我正在使用的函数的代码:

#include  
#include

#define WIDTH 70
#define HEIGHT 35

HANDLE wHnd;

void setup() {
SMALL_RECT windowSize = {0, 0, WIDTH - 1, HEIGHT - 1};
COORD bufferSize = { WIDTH , HEIGHT };
wHnd = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTitle("Conway's Game of Life");
SetConsoleWindowInfo(wHnd, 1, &windowSize);
SetConsoleScreenBufferSize(wHnd, bufferSize);
}

虽然它适用于较小的宽度和高度(例如 70 和 35)。它不适合我需要的大小(几乎是两倍大,是的,我相应地调整了缓冲区大小,总是比 windowSize 大一点)。然后它就是常规尺寸。我的下一个想法是,既然它已经很大了,为什么不全屏呢。

SetConsoleDisplayMode(wHnd, CONSOLE_FULLSCREEN_MODE, 0);

在此代码片段之前没有问题,但现在没有,甚至在其他 PC 上也没有。它停止处理旧项目太奇怪了。

知道如何以全屏模式启动它吗? (ALT + ENTER 有效)或者在启动时使控制台窗口变大?我看过 ncurses,但我在 Windows 10 上,不知道如何使用它,此外我的教授可能不希望我使用外部库。谢谢你的帮助!如果我忘记了什么,请告诉我。

1 Câu trả lời

要最大化控制台窗口,您可以执行以下操作:

C++

#include 
#include
#include
#include
#include

#include

std::string get_last_error_msg()
{
auto error_code{ GetLastError() };
if (!error_code)
return {};

LPSTR buffer{};
auto size{ FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&buffer), 0, nullptr) };

// use a unique_ptr for buffer since the ctor of string could throw
std::unique_ptr<>, decltype(&LocalFree)> p{ buffer, LocalFree };
std::string message{ p.get(), size };
return message;
}

bool maximize_console()
{
auto console_window{ GetConsoleWindow() };

if (!console_window) {
std::cerr << "GetConsoleWindow() failed :(\n\n";
trả về false;
}

auto console_out{ GetStdHandle(STD_OUTPUT_HANDLE) };
if (console_out == INVALID_HANDLE_VALUE) {
std::cerr << "GetStdHandle() failed with \"" << get_last_error_msg() << "\" :(\n\n";
trả về false;
}

auto largest_size{ GetLargestConsoleWindowSize(console_out) };
if (!largest_size.X && !largest_size.Y) {
std::cerr << "GetLargestConsoleWindowSize() failed with \"" << get_last_error_msg() << "\" :(\n\n";
trả về false;
}

--largest_size.X;
--largest_size.Y;

if (!SetConsoleScreenBufferSize(console_out, largest_size)) {
std::cerr << "SetConsoleScreenBufferSize() failed with \"" << get_last_error_msg() << "\" :(\n\n";
trả về false;
}

if (!ShowWindow(console_window, SW_MAXIMIZE)) {
std::cerr << "ShowWindow() failed :(\n\n";
trả về false;
}

trả về giá trị đúng;
}

int chính()
{
if (!maximize_console())
return EXIT_FAILURE;
}

C

#include 
#include

#include

LPSTR get_last_error_msg(void)
{
DWORD error_code = GetLastError();
if (!error_code)
return LocalAlloc(LMEM_ZEROINIT, 1);

LPSTR buffer = NULL;
FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&buffer, 0, NULL);

return buffer;
}

bool maximize_console(void)
{
HWND console_window = GetConsoleWindow();

if (!console_window) {
fputs("GetConsoleWindow() failed :(\n", stderr);
trả về false;
}

HANDLE console_out = GetStdHandle(STD_OUTPUT_HANDLE);
if (console_out == INVALID_HANDLE_VALUE) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "GetStdHandle() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
trả về false;
}

COORD largest_size = GetLargestConsoleWindowSize(console_out);
if (!largest_size.X && !largest_size.Y) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "GetLargestConsoleWindowSize() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
trả về false;
}

--largest_size.X;
--largest_size.Y;

if (!SetConsoleScreenBufferSize(console_out, largest_size)) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "SetConsoleScreenBufferSize() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
}

if (!ShowWindow(console_window, SW_MAXIMIZE)) {
fputs("ShowWindow() failed :(\n", stderr);
trả về false;
}

trả về giá trị đúng;
}

int main(void)
{
if (!maximize_console())
return EXIT_FAILURE;
}

关于更改 Windows 控制台大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53221855/

27 4 0
Bài viết được đề xuất: sql - 在 SQL 表中有组合键和主键
Bài viết được đề xuất: linq - .NET 3.5 Linq 数据源和连接
Bài viết được đề xuất: post - dojo.xhrPost 的参数
Bài viết được đề xuất: oop - 必须继承才能实例化的类的正式名称是什么?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com