我创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函数绘制到我的窗口上?
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] 举报,一经查实,本站将立刻删除。