Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 当我的应用程序最大化时,自动隐藏任务栏不显示_Windows_Taskbar - Fatal编程技术网

Windows 当我的应用程序最大化时,自动隐藏任务栏不显示

Windows 当我的应用程序最大化时,自动隐藏任务栏不显示,windows,taskbar,Windows,Taskbar,我的应用程序绘制所有自己的窗口边框和装饰。它适用于设置为自动隐藏的Windows任务栏,除非我的应用程序窗口最大化。任务栏不会“卷起”。如果我的应用程序没有最大化,它将正常运行,即使大小一直调整到屏幕底部。它甚至可以正常工作,如果我只是调整窗口的大小,以占据整个显示(好像它是最大化的) 这取决于任务栏属性中是否选中了“将任务栏置于其他窗口之上”。如果选中,则会出现任务栏 但是,不要仅仅为了满足您的需要而在最终用户机器上以编程方式更改此设置,这被认为是不礼貌和不好的做法。你的应用程序应该适合它部署

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

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


但是,不要仅仅为了满足您的需要而在最终用户机器上以编程方式更改此设置,这被认为是不礼貌和不好的做法。你的应用程序应该适合它部署到的任何环境。

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


至于原因,我不完全确定。弹出“自动隐藏”任务栏的检测可能与处理WM_MOUSEMOVE消息的机制挂钩,而不是WM_NCMOUSEMOVE。当我的应用程序使最大化将我的边框停在屏幕底部时,我会生成WM_NCMOUSEMOVE事件;如果不使用MINMAXINFO,我可能会生成WM_MOUSEMOVE。

我也面临同样的问题。我发现当窗口最大化时,任务栏的Ex样式被修改,并且
WS_Ex_TOPMOST
被删除。一种可能的解决方案是:将基类
CFrameWndEx
更改回
CFrameWnd
(如果不使用Ribbon或其他高级功能)。