微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++:控制台窗口有奇怪的边界..?

我创build了一个程序 – 除其他外 – 更改控制台窗口大小,并从中删除窗口边框(主要是通过将窗口样式设置为WS_POPUP)。

现在在我的电脑上,应用程序执行没有任何问题,但是当我在另一台计算机(或VirtualBox)中运行代码时,我得到一些时髦的故障。

这是一个图像,显示我所说的这些故障:

如果用户在控制台窗口顶部移动/打开了一个窗口,然后再将控制台窗口再次移到顶部,则会出现这些故障。

所以很自然地,我认为摆脱这个问题的最简单的方法就是把控制台窗口放在最前面 ,但是这并没有帮助,因为现在这些故障只是从新的东西窗口被移动/打开在控制台窗口的顶部(或者更确切地说在下面) 。

看起来,这些小问题的地方在某处被caching/存储,并没有注意到窗口已经被调整了大小。

GetClientRect(hWnd,&rClnt); rClnt.top += 1; rClnt.bottom -= 2; rClnt.right -= 1; SetwindowRgn(hWnd,CreateRectRgnIndirect(&rClnt),1); SetwindowLongPtr(hWnd,GWL_STYLE,WS_POPUP); exStyle = getwindowlongPtr(hWnd,GWL_EXSTYLE); exStyle &= ~WS_EX_CLIENTEDGE; SetwindowLongPtr(hWnd,GWL_EXSTYLE,exStyle); BringWindowToTop(hWnd); SetwindowPos(hWnd,HWND_TOPMOST,((rScr.right / 2) - rWnd.right / 2) - 1,(rScr.bottom / 2) - rWnd.bottom / 2,SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOSIZE);// After this I just use ShowWindow().

在Linux中捕获input

在Windows上部署Qt应用程序?

未定义的引用_imp__CryptProtectData @ 28

使用SetParent将窗口embedded到外部进程中的各种问题

用于Windowsapp store的C ++ / CX HTTP Web服务器

在成员函数中使用'删除'后,我可以访问其他成员函数。 为什么?

为什么截图没有使用SelectObject和BitBlt函数绘制到我的窗口上?

链接Windows 7上的.lib文件

execve()做什么?

从窗口中删除button

我设法解决这个问题。

我所做的只是将SetwindowRgn()函数移到了ShowWindow()上方(这将在代码片段的最后)。

删除了毛刺的地区,现在我的窗口显示正确。

之后有一个窗口没有居中的bug,但是我通过改变来修复它

if(!SetwindowPos(hWnd,SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOSIZE))

if(!SetwindowPos(hWnd,((rScr.right / 2) - rClnt.right / 2) - 1,(rScr.bottom / 2) - rClnt.bottom / 2,SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOSIZE))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐