关于SDI的最大化问题
我修改的程序是基于MFC的SDI,程序运行时默认状态是最大化,即一打开程序就是最大化状态,我在框架类下面添家如下代码:
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: Add your specialized code here and/or call the base class
int nScreenCount=2;
int cxScreen = ::GetSystemMetrics(SM_CXSCREEN);
int cyScreen = ::GetSystemMetrics(SM_CYMAXIMIZED);
CRect rect;
rect.left = 0;
rect.top = 0;
rect.right = cxScreen;
rect.bottom = cyScreen;//wei le bu bei ren wu lan zhe zhu
if(nScreenCount==2)
{
rect.right=rect.right/2;
}
else if(nScreenCount==4)
{
rect.right=rect.right/2;
rect.bottom=rect.bottom/2;
}
WINDOWPLACEMENT wndpl;
wndpl.length=sizeof(WINDOWPLACEMENT); wndpl.showCmd=SW_SHOW; wndpl.flags=WPF_SETMINPOSITION; wndpl.ptMinPosition=CPoint(0,0); wndpl.ptMaxPosition=CPoint(-::GetSystemMetrics(SM_CXBORDER),-::GetSystemMetrics(SM_CYBORDER)); wndpl.rcNormalPosition=rect; SetWindowPlacement(&wndpl);
nCmdShow=SW_SHOW;
CFrameWnd::ActivateFrame(nCmdShow);
}
在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数中设置为:
cs.style &= WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | ~WS_MAXIMIZEBOX/* | WS_MAXIMIZE*/;
这样程序运行起来好象根本没有执行这段代码,运行起来的默认状态还是最大化,当我双击标题栏或者点击还原按钮时,才达到我所要的效果(窗口占屏幕一半),请问各位这是什么原因,帮忙啊,急用,谢谢了。