Funksjonen DeferWindowPos oppdaterer det angitte flere vinduet – struktur for det angitte vinduet. Deretter returnerer funksjonen en referanse til den oppdaterte strukturen. EndDeferWindowPos -funksjonen bruker informasjonen i denne strukturen for å endre plasseringen og størrelsen på en rekke windows samtidig. Funksjonen BeginDeferWindowPos oppretter strukturen.
() HDWP DeferWindowPos HDWP hWinPosInfo, / / håndtere til intern strukturHWNDhWnd, / / håndtere til vinduet for å plassereHWNDhWndInsertAfter, / / plassering-rekkefølgen håndtereInt x, / / horisontal posisjon int y, / / vertikal posisjon int cx, // width int cy, // heightUINTuFlags / / vinduet-posisjonering flags);
| Verdi | Betydning |
|---|---|
| HWND_BOTTOM | Plasserer vinduet nederst i Z-rekkefølge. Hvis parameteren hWnd identifiserer et vindu, vinduet mister sin øverste status og er plassert nederst i alle andre vinduer. |
| HWND_NOTOPMOST | Plasserer vinduet fremfor alt ikke-øverste windows (det vil si bak alle øverste windows). Dette flagget har ingen virkning hvis vinduet er allerede en ikke-vindu. |
| HWND_TOP | Plasserer vinduet på toppen av Z-rekkefølge. |
| HWND_TOPMOST | Plasserer vinduet fremfor alt ikke-øverste windows. Vinduet beholder posisjonen øverste selv når den er deaktivert. |
Denne parameteren ignoreres hvis flagget SWP_NOZORDER er angitt i parameteren uFlags.
| Verdi | Betydning |
|---|---|
| SWP_DRAWFRAME | Tegner en ramme (definert i vinduets klassen beskrivelse) rundt vinduet. |
| SWP_FRAMECHANGED | Sender en WM_NCCALCSIZE melding til vinduet, selv om vindusstørrelsen ikke er endret. Hvis dette flagget ikke er angitt, sendes WM_NCCALCSIZE bare når vindusstørrelsen endres. |
| SWP_HIDEWINDOW | Skjuler vinduet. |
| SWP_NOACTIVATE | Aktiverer ikke vinduet. Hvis dette flagget ikke er angitt, kan det hende at vinduet er aktivert og flyttet til toppen av den øverste eller ikke-øverste gruppen (avhengig av innstillingen for parameteren hWndInsertAfter ). |
| SWP_NOCOPYBITS | Forkaster hele innholdet i klientområdet. Hvis dette flagget ikke er angitt, er gyldig innholdet i klientområdet lagret og kopiert tilbake til klientområdet når vinduet er størrelse eller plassering. |
| SWP_NOMOVE | Beholder gjeldende posisjon (ignorerer parameterne x og Y ). |
| SWP_NOOWNERZORDER | Endrer ikke eiervinduets posisjon i Z-rekkefølge. |
| SWP_NOREDRAW | Ikke omtegne endringer. Hvis dette flagget er angitt, oppstår ingen oppdatering av noe slag. Dette gjelder klientområdet, nonclient området (inkludert tittellinjen og rullefelt), og noen del av det overordnede vinduet avdekket som et resultat av vinduet blir flyttet. Når dette flagget er angitt, må programmet eksplisitt ugyldiggjøre eller trekke tilbake alle deler av vinduet og overordnet vindu som trenger oppdatering. |
| SWP_NOREPOSITION | Samme som SWP_NOOWNERZORDER-flagg. |
| SWP_NOSENDCHANGING | Forhindrer at vinduet motta WM_WINDOWPOSCHANGING-melding. |
| SWP_NOSIZE | Beholder gjeldende størrelse (ignorerer parameterne cx og cy ). |
| SWP_NOZORDER | Beholder gjeldende Z-rekkefølge (ignorerer parameteren hWndInsertAfter ). |
| SWP_SHOWWINDOW | Viser vinduet. |
Returverdien identifiserer det oppdaterte flere vinduet-struktur. Referansen som ble returnert av denne funksjonen kan være forskjellig fra håndtaket sendes til funksjonen. Et nytt håndtak som denne funksjonen returnerer bør sendes under det neste kallet til funksjonen DeferWindowPos eller EndDeferWindowPos.
Hvis det finnes ikke nok systemressurser funksjonen skal lykkes, er verdien som returneres NULL. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.
Hvis et kall til DeferWindowPos mislykkes, kan det hende at programmet bør forlate operasjonen vinduet plassering og ikke kalle EndDeferWindowPos.
Hvis SWP_NOZORDER ikke er angitt, plasserer vinduet identifisert av parameteren hWnd i posisjon etter vinduet identifisert av parameteren hWndInsertAfter i systemet. Hvis hWndInsertAfter er NULL eller HWND_TOP, plasserer vinduet hWnd øverst i Z-rekkefølgen i systemet. Hvis hWndInsertAfter er satt til HWND_BOTTOM, plasserer systemet vinduet hWnd nederst i Z-rekkefølge.
Alle koordinatene for underordnede vinduer er relative til øverste venstre hjørne av det overordnede vinduet klientområdet.
Et vindu kan gjøres som et vindu ved å sette hWndInsertAfter til HWND_TOPMOST-flagg og å sikre at SWP_NOZORDER-flagget ikke er angitt, eller ved å angi vindusplasseringen i Z-rekkefølge slik at det er over alle eksisterende øverste Vinduer. Når en ikke-øverste vinduet gjøres øverste, er sin eid windows også gjort i øverste. Dens eiere, men er ikke endret.
Hvis verken SWP_NOACTIVATE eller SWP_NOZORDER-flagget er angitt (det vil si når programmet ber om at et vindu aktiveres samtidig og sin posisjon i Z-rekkefølgen endret), brukes verdien som er angitt i hWndInsertAfter bare under følgende omstendigheter:
Et program kan ikke aktivere et inaktivt vindu uten å vise det til toppen av Z-rekkefølge. Et program kan endre et aktivert vindu plassering i Z-rekkefølge uten begrensninger, eller de kan aktivere et vindu og deretter flytte det til toppen av det øverste eller ikke-øverste Vinduer.
Et vindu er ikke lenger øverste Hvis det omplasseres til bunnen (HWND_BOTTOM) av Z-rekkefølge eller etter eventuelle ikke-øverste vinduet. Når en øverste vinduet gjøres ikke-øverste, er dens eiere og vinduene eide også laget ikke-øverste windows.
En ikke-øverste vinduet kan eie et vindu, men ikke omvendt. Alle vinduer (for eksempel en dialogboks) eies av en vindu er selve gjort en øverste vinduet for å sikre at alle eid Vinduer Bo over deres eier.
nbsp; Windows &NT: krever versjon 3.1 eller senere.
Windows:Krever Windows 95 eller senere.
Windows CE:Som ikke støttes.
Topptekst:Deklarert i winuser.h.
Importere biblioteket:Bruk user32.lib.
Oversikt over Windows, vinduet funksjoner, BeginDeferWindowPos, EndDeferWindowPos, ShowWindow