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);
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.
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. |
Hvis funksjonen lykkes, er returverdien ikke-null.
Hvis funksjonen mislykkes, er verdien som returneres Null. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.
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.
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.
Oversikt over Windows, vinduet funksjoner, MoveWindow, SetActiveWindow, SetForegroundWindow