c ++ - bestemmelse af Windows-restaureret størrelse

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at generere en bitmap indeholdende, hvad der ville blive vist, hvis et vindue skulle gendannes til skrivebordet. GetWindowRect returnerer det s minimerede størrelse, GetWindowplacement returnerer, hvor det ville gå. Men jeg kan ikke finde en api, der fortæller mig, hvor stor det ville være.


Hvordan bestemmer jeg, hvor stort vinduet ville være, hvis det blev gendannet?

Bedste reference


GetWindowPlacement er faktisk det, du vil have. Brug rcNormalPosition, som er en RECT, der indeholder koordinaterne for den normaliserede position. Eller hvis WPF\_RESTORETOMAXIMIZED er i vindueplacering flags, brug derefter arbejdsområdet på skærmen, som vinduet er tilknyttet.


Når det er sagt, kan GetWindowPlacement til tider returnere vildledende oplysninger i rcNormalPosition på Windows 7. Jeg har overgået dette, når du bruger den halvt skærm Aero snap-funktion. Når du har gjort det, og hvis vinduet er stadig normaliseret, når du stiller spørgsmålet, vil du opdage, at GetWindowPlacement vender tilbage i rcNormalPosition a RECT, der ikke svarer til Aero snap-positionen. Håndter det ved blot at bruge GetWindowRect hvis vinduet er normaliseret.

Andre referencer 1


GetWindowPlacement fortæller dig præcis, hvor stort vinduet ville være. Feltet rcNormalPosition er en RECT, som giver dig dimensionerne. Få højden og bredden, trække toppen fra bunden, venstre fra højre.


Bemærk MSDNs kommentar om, at rektanglet er i arbejdsområdekoordinater , ikke skærmkoordinater:



  Arbejdsområdekoordinaterne afviger fra skærmkoordinater, idet de tager hensyn til placeringerne og størrelserne af applikationsværktøjslinjer (herunder proceslinjen). Arbejdsrumskoordinat (0,0) er det øverste venstre hjørne af arbejdsområdeområdet, hvor skærmområdet ikke bruges af applikationsværktøjslinjer.