我的应用程序绘制了自己的所有窗口边框和装饰。它适用于设置为自动隐藏的 Windows 任务栏,除非我的应用程序窗口最大化。任务栏不会“卷起”。如果我的应用程序未最大化,即使尺寸一直到屏幕底部,它也会正常运行。如果我只是调整窗口大小以占据整个显示屏(就像最大化一样),它甚至可以正常工作。
我发现了问题。我的应用程序正在处理 WM_GETMINMAXINFO 消息,并覆盖参数 MINMAXINFO 记录中的值。记录中的值被夸大了 7(边框宽度)屏幕像素分辨率。这是有道理的,因为当最大化时,它将窗口的边框推到屏幕的可见部分之外。它还将 ptMaxPosition(最大化时窗口原点设置的点)设置为 -7、-7。我的应用程序将其设置为 0,0,并将最大高度和宽度设置为屏幕分辨率大小(未膨胀)。不知道为什么这样做;这是前辈写的。如果我注释掉该代码并且不修改 MINMAXINFO 结构,则自动隐藏将起作用。
至于为什么,我并不完全确定。弹出“自动隐藏”任务栏的检测可能与处理 WM_MOUSEMOVE 消息的机制挂钩,而不是与 WM_NCMOUSEMOVE 挂钩。由于我的应用程序导致最大化将边框停放在屏幕底部,因此我会生成 WM_NCMOUSEMOVE 事件;如果不考虑 MINMAXINFO,我就会生成 WM_MOUSEMOVE。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)