none
似乎发现一个vs2008的bug,求证 RRS feed

  • 问题

  • 写mfc程序,首先在建立项目时选择最大化显示,或者 在应用程序类中的InitInstance()函数中改成
    m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    

    然后如果在建立项目时选择 没有 最大化框, 或者 在框架类的PreCreateWindow(CREATESTRUCT& cs)函数中改成

    cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
             | WS_THICKFRAME | WS_MINIMIZEBOX 
             //|WS_MAXIMIZEBOX   不显示最大化框
          | WS_MAXIMIZE | WS_SYSMENU;
    

    那么编译完成的程序就会出现一种状况:
    一旦启动程序而你的windows的任务栏没有自动隐藏的话就会发现任务栏把程序窗口的最下面一截挡住了,这里一般是状态栏。
    win7,xp下都会发生。
    必须要在让任务栏设置自动隐藏然后再设置为不自动隐藏,或者让任务栏靠左(上,右)显示,再调回来(win7下),下面被挡住的才能正常显示,不被任务栏遮住。而一旦重启程序,又会发生。
    而一旦在先前建立项目时选择有最大化框 或者 上边那一行代码不注释的话,那么就不会产生任务栏遮住状态栏的状况。

    这到底是bug还是有什么深层次的原因呢?

    • 已移动 Vicky SongMicrosoft employee 2012年1月17日 5:40 C++ issue (发件人:Visual Studio 相关讨论(Visual Studio 2010以前版本))
    2012年1月16日 5:03

答案

  • 我没理解错的话你说的无标题栏窗口最大化的时候会充满屏幕

    一直是这样的啊

    应该不是bug

    就是这么设计的


    新浪微博http://weibo.com/xianglitian,欢迎围观
    • 已建议为答案 Itou Miki 2012年1月23日 2:41
    • 已标记为答案 Helen Zhao 2012年1月24日 3:23
    2012年1月17日 2:15

全部回复

  • 我没理解错的话你说的无标题栏窗口最大化的时候会充满屏幕

    一直是这样的啊

    应该不是bug

    就是这么设计的


    新浪微博http://weibo.com/xianglitian,欢迎围观
    • 已建议为答案 Itou Miki 2012年1月23日 2:41
    • 已标记为答案 Helen Zhao 2012年1月24日 3:23
    2012年1月17日 2:15
  • 问题不在标题栏,主要问题是任务栏的问题,标题栏窗口最大化按钮禁用的时候任务栏把程序最下面的一部分(也就是程序的状态栏的地方)挡住了,不禁用的时候任务栏就不挡,而无论禁用与否,现在都是最大化状态,只不过一个能恢复成正常状态,一个不能恢复,任务栏不应该有区别。
    2012年1月17日 16:00