..:: Jak vytvo°it okno s pevnou polohou a velikostφ ::..

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);

}