SetWindowPos

De SetWindowPos functie verandert de grootte, positie en Z-volgorde van een kind, pop-, of op het hoogste niveau venster. Kind, pop-, en op het hoogste niveau windows worden geordend volgens hun verschijning op het scherm. Het bovenste venster ontvangt de hoogste rang en is het eerste venster in de Z-volgorde.

 BOOL SetWindowPos ()  HWND  hWnd, / / verwerken naar vensterHWNDhWndInsertAfter, / / plaatsing-volgorde behandelenint X, / / horizontale positieint Y, / / verticale positie int cx, // width int cy, // heightUINTuFlags / / venster-positionering vlaggen);
 

Parameters

hWnd
Ingang naar het venster.
hWndInsertAfter
Ingang naar het venster te voorafgaan aan het venster geplaatst in de Z-volgorde. Deze parameter moet een vensteringang of een van de volgende waarden:
Waarde Betekenis
HWND_BOTTOM Het venster plaatsen aan de onderkant van de Z-volgorde. Als de parameter hWnd een bovenste venster identificeert, het venster zijn bovenste status verliest en is geplaatst op de bodem van alle andere vensters.
HWND_NOTOPMOST Plaatst het venster vooral niet-bovenste windows (dat wil zeggen, achter alle bovenste vensters). Deze vlag heeft geen effect als het venster al een niet-bovenste venster is.
HWND_TOP Het venster plaatsen boven aan de Z-volgorde.
HWND_TOPMOST Het venster plaatsen vooral niet-bovenste windows. Het venster handhaaft haar bovenste positie zelfs wanneer het wordt gedeactiveerd.

Zie voor meer informatie over hoe deze parameter wordt gebruikt, de volgende opmerkingen-sectie.

X
Hiermee geeft u de nieuwe positie van de linkerkant van het venster in de client co÷rdinaten.
Y
Hiermee geeft u de nieuwe positie van de bovenkant van het venster in de client co÷rdinaten.
cx
De nieuwe breedte van het venster in pixels.
cy
Hiermee geeft u de nieuwe hoogte van het venster in pixels.
uFlags
Hiermee geeft u het venster grootte en plaatsing van vlaggen. Deze parameter kan bestaan uit een combinatie van de volgende waarden:
Waarde Betekenis
SWP_ASYNCWINDOWPOS Als de aanroepende draad niet over het venster beschikt, berichten het systeem het verzoek aan de thread die eigenaar is van het venster. Hiermee voorkomt u dat de aanroepende thread blokkeert de uitvoering ervan, terwijl andere threads de aanvraag verwerkt.
SWP_DEFERERASE Voorkomt dat de generatie van het WM_SYNCPAINT bericht.
SWP_DRAWFRAME Vestigt een frame (gedefinieerd in de klasse Beschrijving van het venster) om het venster.
SWP_FRAMECHANGED Een signaal WM_NCCALCSIZE naar de venster, zelfs als de grootte van het venster niet wordt gewijzigd. Als deze vlag niet is opgegeven, wordt WM_NCCALCSIZE verzonden slechts wanneer de grootte van het venster wordt gewijzigd.
SWP_HIDEWINDOW Verbergt het venster.
SWP_NOACTIVATE Activeert het venster niet. Als deze vlag niet is ingesteld, is het venster geactiveerd en bewogen tot de bovenkant van de beide bovenste of niet-bovenste groep (afhankelijk van de instelling van de parameter hWndInsertAfter ).
SWP_NOCOPYBITS De gehele inhoud van het clientgebied van de teruggooi. Als deze vlag niet is opgegeven, zijn de geldige inhoud van het clientgebied opgeslagen en terug naar de client area gekopieerd nadat het venster is formaat of verplaatst.
SWP_NOMOVE De huidige positie behoudt (negeert de X - en Y -parameters).
SWP_NOOWNERZORDER Verandert niet de eigenaar van venster positie in de Z-volgorde.
SWP_NOREDRAW Doet tekent niet veranderingen. Als deze vlag is ingesteld, treedt geen verversen van welke aard op. Dit geldt voor de clientgebied, het gebied van de nonclient (met inbegrip van de titelbalk en schuifbalken), en een deel van het bovenliggende venster ontdekt als gevolg van het venster wordt verplaatst. Wanneer deze vlag is ingesteld, moet de toepassing expliciet ongeldig of herschrijven delen van het venster en het bovenliggende venster die moeten opnieuw te laten tekenen.
SWP_NOREPOSITION Hetzelfde als de vlag SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Het venster verhindert WM_WINDOWPOSCHANGING bericht ontvangen.
SWP_NOSIZE Altijd de huidige grootte (negeert de parameters cx en cy ).
SWP_NOZORDER Behoudt de huidige Z-volgorde (de parameter hWndInsertAfter negeert).
SWP_SHOWWINDOW Het venster wordt weergegeven.

Retourwaarden

Als de functie slaagt, is de retourwaarde aan nul.

Als de functie mislukt, is de retourwaarde nul. Te krijgen uitgebreide foutinformatie, Bel GetLastError.

Opmerkingen

Als de vlag SWP_SHOWWINDOW of SWP_HIDEWINDOW is ingesteld, kan niet het venster worden verplaatst of formaat.

Als u bepaalde venster gegevens met behulp van SetWindowLonghebt gewijzigd, moet je bellen SetWindowPos dat de wijzigingen worden van kracht. De volgende combinatie gebruiken voor uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Een venster kan een bovenste venster worden gemaakt door de parameter hWndInsertAfter instelt op HWND_TOPMOST en ervoor te zorgen dat de SWP_NOZORDER vlag niet is ingesteld of door de instelling van een venster positie in de Z-volgorde, zodat het is boven elke bestaande bovenste vensters. Wanneer een niet-bovenste venster bovenste is gemaakt, zijn haar eigendom windows ook bovenste gemaakt. De eigenaren, worden echter niet gewijzigd.

Als noch de SWP_NOACTIVATE noch SWP_NOZORDER vlag is opgegeven (dat wil zeggen, wanneer de toepassing vraagt dat een venster gelijktijdig worden geactiveerd en haar positie in de Z-volgorde wordt gewijzigd), wordt de waarde die is opgegeven in hWndInsertAfter alleen gebruikt in de volgende omstandigheden:

Een toepassing kan een niet-actief venster niet activeren zonder ook brengen het naar de top van de Z-volgorde. Toepassingen kunnen wijzigen van een geactiveerde venster positie in de Z-volgorde zonder beperkingen, of het kan een venster activeren en het verplaatsen naar de bovenkant van de bovenste of niet-bovenste windows.

Als een bovenste venster is verplaatst naar de bodem (HWND_BOTTOM) van de Z-volgorde of na elk niet-bovenste venster, is het niet langer bovenste. Wanneer een bovenste venster is gemaakt niet-bovenste, zijn zijn eigenaars en haar eigendom windows ook niet-bovenste windows gemaakt.

Een niet-bovenste venster kan zelf een bovenste venster, maar het omgekeerde kan niet optreden. Een venster (bijvoorbeeld een dialoogvenster) eigendom van een bovenste venster is zelf gemaakt een bovenste venster, om ervoor te zorgen dat alle eigendom windows blijven boven hun eigenaar.

Als een toepassing niet op de voorgrond, en op de voorgrond moet worden, moet het de SetForegroundWindow functie aanroepen.

Windows CE: Als dit een zichtbaar venster op het hoogste niveau, en de SWP_NOACTIVATE vlag niet is opgegeven, zal deze functie wordt het venster geactiveerd. Als dit het momenteel actieve venster is, en of de SWP_HIDEWINDOW vlag als de vlag SWP_NOACTIVATE is opgegeven, is de activering doorgegeven aan een ander zichtbaar op het hoogste niveau venster.

In de parameter nFlags aan deze functie stelt u de vlag SWP_FRAMECHANGED, wordt het gehele niet-clientgebied van het venster, die van de grootte van het clientgebied veranderen kan opnieuw getekend Windows CE. Dit is de enige manier om het gebied niet-client opnieuw berekend en wordt meestal gebruikt nadat een u hebt de stijl venster gewijzigd door te bellen SetWindowLong.

SetWindowPos zal altijd leiden tot een WM_WINDOWPOSCHANGED-bericht worden verzonden naar het venster. De vlaggen doorgegeven in dit bericht zijn precies dezelfde als die aan de functie wordt doorgegeven. Geen andere berichten zijn verzonden door deze functie.

Windows CE 1.0 ondersteunt niet de constanten HWND_TOPMOST en HWND_NOTOPMOST in de hwndInsertAfter -parameter.

Windows CE 1.0 ondersteunt niet de vlaggen SWP_DRAWFRAME of SWP_NOCOPYBITS in de fuFlags paramete.

Syntaxisinfo

nbsp;áWindows &NT: versie 3.1 of hoger vereist.
Windows:Windows 95 of hoger vereist.
Windows CE:Versie 1.0 of hoger vereist.
Header:Verklaard in winuser.h.
Bibliotheek importeren:User32.lib gebruiken.

Zie ook

Windows, overzicht, functies van het venster, MoveWindow, SetActiveWindow, SetForegroundWindow

Index