GetClientRect的有关问题

GetClientRect的问题
为什么我的窗口是最大化显示的,但是在initdlg中用GetClientRect得到的矩形才几百的大小

然后我发现让窗口最大化的instance里这句m_pMainWnd->ShowWindow(SW_MAXIMIZE);是在initdlg之后才执行,可能是这个原因导致得到的矩形大小不对

后来改成在frame::precreatewindow里面
cs.style|=WS_MAXIMIZE|WS_VISIBLE;
或者
cs.x=0;
cs.y=0;
cs.cx=GetSystemMetrics(SM_CXSCREEN);
cs.cy=GetSystemMetrics(SM_CYSCREEN);
都无法使窗口默认最大化显示,请问这都是怎么回事啊

------解决方案--------------------
用setwindowpos或者movewindow
------解决方案--------------------
重载CMainFrame的ActivateFrame函数
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: 在此添加专用代码和/或调用基类
nCmdShow = SW_SHOWMAXIMIZED;
CFrameWnd::ActivateFrame(nCmdShow);
}


在PreCreateWindow里加入
cs.cx=::GetSystemMetrics(SM_CXSCREEN);
 cs.cy=::GetSystemMetrics(SM_CYSCREEN);
是肯定可行的   如果不行  肯定是你在其他地方又把窗口还原回去了
------解决方案--------------------
在 OnInitDialog 函数里,在 CDialog::OnInitDialog 后面写上一句 ShowWindow(SW_MAXIMIZE) 就行了
------解决方案--------------------
最大化一般是先创建窗口后,然后通过MoveWindow行成的最大化,因此,最好不要用全局的CRect,每次画图时在OnPaint中GetClient