gpt4 book ai didi

c++ - 如何在 Win32 控制台中隐藏鼠标光标?

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:17 45 4
gpt4 key购买 nike

我有一个函数可以将 Win32 控制台设置为全屏。问题是当它进入全屏时,它并没有隐藏鼠标光标。

全屏与否似乎并不重要。当我调用 ShowCursor(FALSE) 时,鼠标光标仍然显示。怎么可能隐藏呢?

在 ShowCursor() 的文档中,如果函数返回的值大于 0,光标将隐藏。如果它是负数,它将隐藏。该值为我返回 -2,因此在这种情况下它应该隐藏,但事实并非如此。

bool Console::setFullScreen(const bool fullScreen)
{
HWND handle;

if (fullScreen)
{
// Hide the scrollbar
showScrollBar(false);

// Set the window style
handle = GetConsoleWindow();
LONG style = GetWindowLong(handle, GWL_STYLE);
style &= ~(WS_BORDER | WS_CAPTION | WS_THICKFRAME);
SetWindowLong(handle, GWL_STYLE, style);

// Set the window to full screen in windowed mode
ShowWindow(getHandle(), SW_MAXIMIZE);

// Hide the cursor
ShowCursor(FALSE); // Fails
}
else
{
showScrollBar(true);

// Set the window style
handle = GetConsoleWindow();
LONG style = GetWindowLong(handle, GWL_STYLE);
style |= WS_BORDER;
style |= WS_CAPTION;
style |= WS_THICKFRAME;

SetWindowLong(handle, GWL_STYLE, style);

// Set the window to full screen in windowed mode
ShowWindow(getHandle(), SW_NORMAL);

// Show the cursor
ShowCursor(TRUE);
}

return true;
}

最佳答案

我还没有尝试过,但是您可以通过调用 GetConsoleWindow 获取控制台窗口的 HWND 来更改控制台窗口的鼠标光标,然后调用SetClassLong 设置光标。

HCURSOR hNewCursor = LoadCursor(/* whatever*/);
SetClassLong(GetConsoleWindow(), GCL_HCURSOR, hNewCursor);

要使光标消失,请创建一个完全透明的光标。

关于c++ - 如何在 Win32 控制台中隐藏鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49350412/

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