InitInstance里面pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);

解决方案 »

  1.   

    我知道你们说的是对的。但是你们却是没有回答我得问题呀。
    我得问题是:不明白为什么这个做法不对。
    precreatewindow函数中不也写着可以修改cs的属性来改变窗口的属性。并且,如果如果在App Wizard中选中让窗口最大化的话,程序框架生成的代码就是在precreatewindow函数中如此修改cs属性的!
      

  2.   

    不对,你即使把precreatewindow中的
    cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
    | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
    省掉还是一样最大化,说明问题根本不在这里。
    因为是在InitInstance里面加入了pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); 
      

  3.   

      是不是WS_MINIMIZEBOX与WS_MAXIMIZEBOX有冲突。呵呵。我是菜鸟。随便说说的
      

  4.   

    ShowWindow的调用会改变原来窗口的风格。所以即使你设定窗口的风格为WS_MAXIMIZE,但是调用ShowWindow时却用了SW_SHOW,那么原来的WS_MAXIMIZE将会被取消;同理,即使你原来的窗口没有WS_MAXIMIZE风格,而ShowWindow时用了SW_MAXIMIZE或SW_SHOWMAXIMIZED,则你的窗口会被最大化显示并加入风格WS_MAXIMIZE。因此,要想使你的程序一运行就最大化,只能是修改ShowWindow的参数,修改WS_MAXIMIZE是无济于事的(似乎有另一种方法可以使CreateWindow时的WS_MAIMIZE不至于无效,但那似乎与解决你的问题无关)。
    另外很多其他的窗口风格也存在类似的问题,所以可能会给你一种错觉:怎么在PreCreateWindow里修改窗口风格总是没有什么用——事实上,肯定不是这样,对于大部分窗口风格,这种改动还是有效的。