SetWindowPos

Funksjonen SetWindowPos endrer størrelse, posisjon og Z-rekkefølgen på et underordnet, popup-vinduet eller på øverste nivå vindu. Barn, popup, og på øverste nivå windows ordnes i henhold til deres utseende på skjermen. Det øverste vinduet mottar høyest rangering, og er det første vinduet i Z-rekkefølge.

 BOOL SetWindowPos) HWND  hWnd, / / håndtere til vinduetHWNDhWndInsertAfter, / / plassering-rekkefølgen håndtereInt X, / / horisontal posisjonInt Y, / / vertikal posisjon int cx, // width int cy, // heightUINTuFlags / / vinduet-posisjonering flags);
 

Parametere

hWnd
Håndtere til vinduet.
hWndInsertAfter
Håndtere til vinduet skal stå foran vinduet plasserte i Z-rekkefølge. Denne parameteren må være en vindusreferanse eller en av følgende verdier:
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.

Hvis du vil ha mer informasjon om hvordan denne parameteren brukes, kan du se under følgende kommentarer.

X
Angir nye posisjonen til venstre side av vinduet, i klient-koordinater.
Y
Angir nye posisjonen til toppen av vinduet, i klient-koordinater.
cx
Angir vidden av vinduet, i piksler.
cy
Angir nye høyden av vinduet, i piksler.
uFlags
Angir vinduet endrer størrelsen på og plassere flagg. Denne parameteren kan være en kombinasjon av følgende verdier:
Verdi Betydning
SWP_ASYNCWINDOWPOS Hvis kallende tråden ikke eier vinduet, posterer systemet forespørsel til tråden som eier vinduet. Dette forhindrer at kallende tråden blokkerer utførelsen mens andre tråder behandle forespørselen.
SWP_DEFERERASE Forhindrer generasjon av WM_SYNCPAINT-melding.
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.

Returverdier

Hvis funksjonen lykkes, er returverdien ikke-null.

Hvis funksjonen mislykkes, er verdien som returneres Null. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.

Merknader

Hvis flagget SWP_SHOWWINDOW eller SWP_HIDEWINDOW er angitt, kan ikke vinduet flyttes eller størrelse.

Hvis du har endret visse vindu-data ved hjelp av SetWindowLong, må du ringe SetWindowPos at disse endringene skal tre i kraft. Bruk følgende kombinasjon for uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Et vindu kan gjøres som et vindu ved å sette parameteren hWndInsertAfter til HWND_TOPMOST og å sikre at SWP_NOZORDER-flagget ikke er angitt, eller ved å angi en vindusplassering 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. Programmer 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.

Hvis et vindu omplasseres til bunnen (HWND_BOTTOM) av Z-rekkefølge eller etter eventuelle ikke-øverste vinduet, er det ikke lenger øverste. 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 motsatt kan ikke forekomme. 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.

Hvis et program ikke er i forgrunnen, og bør være i forgrunnen, må det kalle funksjonen SetForegroundWindow.

Windows CE: Hvis dette er en synlig vindu på øverste nivå, og SWP_NOACTIVATE-flagget ikke angis, vil denne funksjonen, aktiverer du vinduet. Hvis dette er det aktive vinduet, og enten til SWP_NOACTIVATE-flagget eller SWP_HIDEWINDOW-flagget er angitt, er aktiveringen sendt videre til et annet vindu for synlig på øverste nivå.

Når du angir SWP_FRAMECHANGED-flagget i parameteren nFlags til denne funksjonen, Windows CE, tegner over hele-klient området i vinduet som kan endre størrelsen på klientområdet. Dette er den eneste måten å få ikke-klient-området beregnes og brukes vanligvis når en du har endret vindusstilen ved å kalle SetWindowLong.

SetWindowPos vil alltid føre til en WM_WINDOWPOSCHANGED-meldingen som skal sendes til vinduet. Flaggene vedtatt i denne meldingen er nøyaktig de samme som de ble sendt til funksjonen. Ingen andre meldinger sendes av denne funksjonen.

Windows CE 1.0 støtter ikke HWND_TOPMOST og HWND_NOTOPMOST-konstanter i parameteren hwndInsertAfter.

Windows CE 1.0 støtter ikke SWP_DRAWFRAME eller SWP_NOCOPYBITS-flaggene i fuFlags -paramete.

Hurtiginformasjon

nbsp; Windows &NT: krever versjon 3.1 eller senere.
Windows:Krever Windows 95 eller senere.
Windows CE:Krever versjon 1.0 eller senere.
Topptekst:Deklarert i winuser.h.
Importere biblioteket:Bruk user32.lib.

Se også

Oversikt over Windows, vinduet funksjoner, MoveWindow, SetActiveWindow, SetForegroundWindow

Index