gpt4 book ai didi

C++:将控制台窗口设置为 WS_POPUP

转载 作者:可可西里 更新时间:2023-11-01 09:25:31 28 4
gpt4 key购买 nike

我正在尝试创建一个无边框的控制台窗口。
我能够将 windowstyle 设置为 WS_POPUP,它删除了边框,但是有一些小故障; Glitches..

似乎控制台窗口上有一些部分没有被重绘,或者类似的东西,但我已经尝试在整个窗口上使用 InvalidateRect() 和其他重绘函数,但它们没有似乎有效。
有人建议使用 SetWindowPos()(带有 SWP_FRAMECHANGED),但这也没有任何作用。

我已经研究这个问题有一段时间了,我很确定它与未正确绘制的客户区域有关(不要在这方面引用我的话)

此外,当我先向下滚动然后向上滚动时,底部的故障部分会变成黑色/透明,但我的程序中的文本有时不会显示在它下面,据我所知这表明它没有背景,所以它具有某种“变色龙”效应。

有什么想法吗?

最佳答案

我终于明白了。 (非常感谢 Maximus)
我不得不使用 SetWindowRgn(),就像他建议的那样。

最终代码看起来像这样:

HWND hWnd = GetConsoleWindow();
RECT rcScr, rcWnd, rcClient;

GetWindowRect(hWnd, &rcWnd);
GetWindowRect(GetDesktopWindow(), &rcScr);
GetClientRect(hWnd, &rcClient);

MoveWindow(hWnd, (rcScr.right / 2) - 330, (rcScr.bottom / 2) - 180, rcWnd.right - rcWnd.left, rcWnd.bottom - rcWnd.top, 1);
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);
SetWindowRgn(hWnd, CreateRectRgn(rcClient.left + 2, rcClient.top + 2, rcClient.right + 2, rcClient.bottom + 2), TRUE);
ShowWindow(hWnd, 1);

关于C++:将控制台窗口设置为 WS_POPUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992542/

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