Je to jednoduchΘ. Nejd°φve se ve funkci PreCreateWindow nastavφ poloha a velikost okna. Nenφ to nutnΘ, ale pokud to neud∞lßte tak nechßpu, proΦ chcete zakßzat zm∞nu jeho velikosti a polohy.
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
// pozice levΘho hornφho rohu okna
cs.x = 0;
cs.y = 0;
// Üφ°ka a v²Üka okna
cs.cx = 400;
cs.cy = 300;
return TRUE;
}
Potom u₧ staΦφ jen odchytit zprßvu WM_WINDOWPOSCHANGING a zm∞nou polo₧ky struktury, kterou mß jako parametr, zakß₧ete zm∞nu velikosti a polohy okna.
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch (message)
{
case WM_WINDOWPOSCHANGING:
if (IsWindowVisible())// Je okno viditelnΘ?
{
WINDOWPOS* lpwp = (LPWINDOWPOS) lParam;
if (lpwp->flags&SWP_HIDEWINDOW) break;// okno se skr²vß (minimalizace) -> nezakß₧eme zm∞nu polohy a velikosti
lpwp->flags &= ~SWP_NOACTIVATE;// zruÜφme zßkaz aktivace okna -> povolenφ obnovenφ z minimalizovanΘho stavu
lpwp->flags |= SWP_NOMOVE|SWP_NOSIZE;// zakßzßnφ zm∞ny polohy a velikosti okna
return 0;
}
break;
}
return CFrameWnd::WindowProc(message, wParam, lParam);
}