Sdílet prostřednictvím


CWnd::SetWindowPos

Změní velikost, umístění a pořadí z windows dítě, rozbalovací a nejvyšší úrovně.

BOOL SetWindowPos( 
   const CWnd* pWndInsertAfter, 
   int x, 
   int y, 
   int cx, 
   int cy, 
   UINT nFlags  
);

Parametry

  • pWndInsertAfter
    Identifikuje CWnd objekt, který bude předcházet (být vyšší než) to CWnd objekt v pořadí vykreslování.Tento parametr může být ukazatel CWnd nebo ukazatel na jednu z následujících hodnot:

    • wndBottom umístí okna dole v pořadí vykreslování.Pokud CWnd je vrchní okno okno ztratí svůj status vrchní; systém umístí okno na konci všech oken.

    • wndTop umístí okno nahoře v pořadí vykreslování.

    • wndTopMost umístí okno nad všemi non vrchní windows.Okno zůstává nejvyšší polohy, i když je deaktivován.

    • wndNoTopMost přemístí na začátek všech oken vrchní okno (, za nejvrchnější všechna okna).Tento příznak se neprojeví, pokud je okno již-vrchní okno.

    Pravidla o použití tohoto parametru v části "Poznámky" tohoto tématu.

  • x
    Určuje novou pozici v levé části okna.

  • y
    Určuje novou pozici horní části okna.

  • cx
    Určuje novou šířku okna.

  • cy
    Určuje novou výšku okna.

  • nFlags
    Určuje velikost a možnosti umístění.Tento parametr může být kombinací následujících příznaků:

    • SWP_DRAWFRAME kolem okna kreslí rámeček (definováno při vytváření okna).

    • SWP_FRAMECHANGED odešle WM_NCCALCSIZE zpráva okna, přestože se nezmění velikost okna.Pokud tento příznak není zadán, WM_NCCALCSIZE je odeslán pouze při změně velikosti okna.

    • SWP_HIDEWINDOW skryje okno.

    • SWP_NOACTIVATEOkno neaktivuje.Pokud není tento příznak nastaven, je aktivován a přesunuta do horní části horní nebo skupiny vrchní okno (podle nastavení pWndInsertAfter parametr).

    • SWP_NOCOPYBITS odstraní celý obsah oblasti klienta.Pokud tento příznak není zadán, platný obsah oblasti klienta jsou uloženy a zkopírovat zpět do oblasti klienta po velikosti okna nebo přemístit.

    • SWP_NOMOVEZachová aktuální pozice (ignoruje x a y parametry).

    • SWP_NOOWNERZORDER nemění vlastník okna pozici v pořadí vykreslování.

    • SWP_NOREDRAW není překreslení změny.Pokud je tento příznak nastaven, bez jakéhokoli druhu překreslení dojde.To platí pro klientské oblasti, oblasti nonclient (včetně nadpisu a Posun pruhů) a jakékoli části nadřazené okno zjištěných z okna byl přesunut.Pokud je tento příznak nastaven, musí aplikace explicitně neruší nebo překreslení všech částí okna a nadřazené okno, které musí překreslit.

    • SWP_NOREPOSITION stejné jako SWP_NOOWNERZORDER.

    • SWP_NOSENDCHANGING okně zabraňuje příjmu WM_WINDOWPOSCHANGING zprávy.

    • SWP_NOSIZEZachová aktuální velikost (ignoruje cx a cy parametry).

    • SWP_NOZORDERZachová aktuální pořadí (ignoruje pWndInsertAfter ).

    • SWP_SHOWWINDOW zobrazí okno.

Vrácená hodnota

Nenulová hodnota, pokud je tato funkce úspěšná. jinak, 0.

Poznámky

Windows jsou seřazeny na obrazovce podle jejich pořadí; nad ostatními okny v pořadí, zobrazí se okno nahoře v pořadí vykreslování.

Všechny souřadnice podřízených oken jsou souřadnice klienta (vztažený levý horní roh oblasti nadřazené okno klienta). 

Okno lze přesunout na začátek pořadí vykreslování buď nastavením pWndInsertAfter parametr & wndTopMost a zajistit, aby SWP_NOZORDER je příznak není nastavení nebo nastavení okna programu pořadí vykreslování tak, aby se nad vrchní existující okna.Při-vrchní okno je vrchní jeho vlastnictví windows jsou rovněž nejvyšší.Jeho vlastníky, se nezmění.

Vrchní okno již není vrchní, pokud se poloha dolů (& wndBottom) po jakékoli-a vrchní okno nebo pořadí vykreslování.Při provedení vrchní okno-nejvyšší všechny jeho vlastníků a jeho vlastnictví windows jsou rovněž-vrchní windows.

Pokud ani SWP_NOACTIVATE ani SWP_NOZORDER je určen (když aplikace požaduje, aby okno současně aktivován a umístěny v zadaném pořadí Z), hodnota zadaná v pWndInsertAfter se používá pouze v následujících případech:

  • Ani & wndTopMost ani & wndNoTopMost je určena v pWndInsertAfter parametr.

  • Toto okno není aktivní okno.

Aplikaci nelze aktivovat neaktivního okna bez také uvedení do horní části pořadí vykreslování.Aplikace můžete změnit pořadí vykreslování aktivovaném okně bez omezení.

Vrchní okno může vlastnit vrchní okno, ale nikoli naopak.Žádné okno (například dialogové) vlastněné vrchní okno je sám vrchní okno, aby všechny vlastněné že windows zůstat nad jejich vlastníka.

Systému Windows verze 3.1 a vyšší, můžete windows přesunut na začátek pořadí vykreslování a není uzamčen nastavení jejich WS_EX_TOPMOST styly.Vrchní okno udržuje nejvyšší polohy, i když deaktivován.Například výběrem příkazu WinHelp vždy navrchu vrchní okno nápovědy, a pak je viditelný při návratu do aplikace.

Vytvořit vrchní okno, volání SetWindowPos se pWndInsertAfter parametr rovná & wndTopMost, nebo nastavit WS_EX_TOPMOST styl při vytváření okna.

Pořadí vykreslování obsahuje všechna okna s WS_EX_TOPMOST styl, okno se & wndTopMost hodnota je umístit na začátek všech oken vrchní, ale pod všechny vrchní windows.Když aplikace aktivuje neaktivního okna bez WS_EX_TOPMOST bit, okno přesunete nad všechny-vrchní windows, ale nižší než jakékoli vrchní windows.

Pokud SetWindowPos je volána, když pWndInsertAfter parametr je & wndBottom a CWnd je vrchní okno okno ztratí svůj status vrchní (WS_EX_TOPMOST je zrušeno), a systém umístí okno dole v pořadí vykreslování.

Příklad

void CMyApp::OnHideApplication()
{
   //m_pMainWnd is the main application window, a member of CMyApp
   ASSERT_VALID(m_pMainWnd);

   // hide the application's windows before closing all the documents
   m_pMainWnd->ShowWindow(SW_HIDE);
   m_pMainWnd->ShowOwnedPopups(FALSE);

   // put the window at the bottom of z-order, so it isn't activated
   m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
      SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CWnd

Graf hierarchie

DeferWindowPos

SetWindowPos