У меня есть приложение MDI, которое выполняет позиционирование при запуске в InitInstance класса Application. (Я помню, что читал, что OnCreate основного фрейма - действительно неправильное место, но я больше не знаю, где я читал это ... давным-давно) Я пытаюсь выделить соответствующие части здесь:
BOOL CMyApp::InitInstance()
{
// stuff...
CMyMainFrame* pMyMainFrame=CreateMainFrame();
if (!pMyMainFrame)
return FALSE;
m_pMainWnd = pMyMainFrame;
// stuff...
if (!ProcessShellCommand(cmdInfo))
return FALSE;
int nCmdShow=SW_NORMAL;
UINT flags=WPF_SETMINPOSITION;
WINDOWPLACEMENT aWndPlacement;
CRect rect;
// determine the desired rect of the application window
aWndPlacement.length=sizeof(WINDOWPLACEMENT);
aWndPlacement.showCmd=nCmdShow;
aWndPlacement.flags=flags;
aWndPlacement.ptMinPosition=CPoint(0,0);
aWndPlacement.ptMaxPosition=CPoint(-::GetSystemMetrics(SM_CXBORDER),
-::GetSystemMetrics(SM_CYBORDER));
aWndPlacement.rcNormalPosition=rect;
m_pMainWnd->SetWindowPlacement(&aWndPlacement);
m_nCmdShow=nCmdShow;
pMyMainFrame->ShowWindow(m_nCmdShow);
pMyMainFrame->UpdateWindow();
return TRUE;
}
Я надеюсь, что это работает для вас.