在最大化程序窗口时可能会碰到这样的问题:
有时最大化窗口后会遮挡任务栏,而有时当你想全屏显示隐藏任务栏,那任务栏区域却死活无法被占用,哪怕任务栏已被隐藏
经过一轮google,终于找到了解决方法,该方法源自某位网页的答复,转载如下:
//------------------------------------------ from pomelowu(羽战士)回复于 2005-05-08 15:29:33 ------------------------
呵呵,我说错了点,其实主要是WS_MAXIMIZEBOX风格的问题。
具有WS_MAXIMIZEBOX的对话框SW_MAXIMIZE的时候会显示边框,下边界在系统任务栏上沿,而不具有WS_MAXIMIZEBOX的对话框(即使有WS_MINIMIZEBOX)SW_MAXIMIZE的时候,下边界是屏幕下沿,如果处于激活状态会覆盖任务栏。
具体我在
http://community.csdn.net/Expert/topic/3466/3466492.xml?temp=.3282892
中总结过。不过具体的原因也还是不甚明了
//----------------------------------------------------------------------------------------------------------
原贴地址:
http://topic.csdn.net/t/20050508/09/3988456.html
这样一来,只须适时地增加、删除WS_MAXIMIZEBOX风格就能灵活控制显示还是遮挡任务栏了(当然,隐藏任务栏还是需要类似::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_SHOW)的代码来做)
在此得谢谢pomelowu(羽战士)这位仁兄
另外,在还没找到上述方法时我自己也想到了另一曲线救国方案,因为我发现只要在任务栏上右键->属性->不选"保持任务栏在所有窗口最上层",就能在最大化时撑满整个屏幕(占用掉任务栏的区域),接着我用SPY++观察了下勾选该选项前后任务栏的风格变化,发现选中时(即保持在所有窗口最上),其扩展风格中有WS_EX_PALETTEWINDOW,未勾选时则变为WS_EX_TOOLWINDOW 和WS_EX_WINDOWEDGE,如此一来,我觉得只要在全屏时,调整任务栏风格与为勾选时相同,即能撑满全屏了,不过我还没试过: )