gpt4 book ai didi

c++ - 当打开的控制台窗口关闭时,如何防止我的程序关闭?

转载 作者:太空狗 更新时间:2023-10-29 20:04:23 24 4
gpt4 key购买 nike

我正在尝试从我的主程序 (Win32) 打开控制台。我找到了一些代码,它可以工作,但我不明白。我遇到的问题是,当我在控制台上单击 X 时,它也会关闭程序。

大概是这样的:

int APIENTRY WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) {

// create the main program window, classes registered, etc...
hwnd = CreateWindowEx(0, csClassName, "theNewTimer", WS_POPUP | WS_CLIPCHILDREN, 300, 0, WINDOW_WIDTH, WINDOW_HEIGHT, HWND_DESKTOP, NULL, hThisInstance, NULL);
ShowWindow (hwnd, nFunsterStil);

// and now the console
AllocConsole();
HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
int hCrt = _open_osfhandle((long) handle_out, _O_TEXT);
FILE* hf_out = _fdopen(hCrt, "w");
setvbuf(hf_out, NULL, _IONBF, 1);
*stdout = *hf_out;

HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
FILE* hf_in = _fdopen(hCrt, "r");
setvbuf(hf_in, NULL, _IONBF, 128);
*stdin = *hf_in;


// and then the message loop concluding

我用谷歌搜索了一些,但不知道我在读什么。

最佳答案

您可以做的一件事是禁用控制台窗口上的关闭按钮:

HWND hwnd = ::GetConsoleWindow();
if (hwnd != NULL)
{
HMENU hMenu = ::GetSystemMenu(hwnd, FALSE);
if (hMenu != NULL) DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
}

关于c++ - 当打开的控制台窗口关闭时,如何防止我的程序关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20232685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com