我的应用程序绘制了所有自己的窗口边框和装饰。它适用于设置为自动隐藏的Windows任务栏,除非我的应用程序窗口最大化。任务栏不会“卷起”。如果我没有最大化应用程序,即使大小一直到屏幕底部,它也会正常运行。如果我只是调整窗口大小以占用整个显示器(就好像它已经最大化),它甚至可以正常工作。

有帮助吗?

解决方案

我发现了问题。我的应用程序正在处理WM_GETMINMAXINFO消息,并覆盖了参数MINMAXINFO记录中的值。记录中的值被屏幕像素分辨率的7(边框宽度)膨胀。这是有道理的,因为当最大化时,它会将窗口的边界推到屏幕的可见部分之外。它还将ptMaxPosition(窗口原点设置为最大化时的点)设置为-7,-7。我的应用程序将其设置为0,0,最大高度和宽度精确到屏幕分辨率大小(未充气)。不知道为什么这样做;它是由前任撰写的。如果我注释掉该代码并且不修改MINMAXINFO结构,则自动隐藏可以正常工作。

至于为什么,我不完全确定。弹出“自动隐藏”的检测可能是有可能的。任务栏被挂钩到处理WM_MOUSEMOVE消息的机制,而不是WM_NCMOUSEMOVE。随着我的应用程序导致最大化将我的边框停在屏幕的底部,我本来会生成WM_NCMOUSEMOVE事件;单独使用MINMAXINFO,我就会生成WM_MOUSEMOVE。

其他提示

这取决于是否在任务栏属性上选中了“将任务栏保留在其他窗口之上”。如果已选中,则会出现任务栏。

但是,不要试图以编程方式更改最终用户计算机上的此设置以满足您的需求,这被认为是粗鲁和糟糕的做法。您的应用应该适合它部署到的任何环境。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top