Er vindueshåndtag (HWND) unikke, eller bliver de nogensinde genbrugt?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg tænker, om der er håndtag af samme værdi?


For at afklare mit spørgsmål, lad os sige, at jeg åbner Notesblok, indtast nogle tekst, gem det og luk Notesblok. Hvis jeg gentager dette tusind gange (eller endnu mere), vil jeg nogensinde have mulighed for at se det samme vindueshåndtag (HWND) værdi bruges til Notepads hovedvindue, der blev brugt første gang? Hvis ja, hvorfor?

Bedste reference


Af pigeonhole principal, ja, de kan ikke være unikke. Faktisk opretholder Microsoft stadig kompatibilitet med 16-bit Windows, og derfor er håndtag 16-bit værdier, så der er højst 65536 mulige håndteringsværdier. [3]

Andre referencer 1


Ja. Der er kun et begrænset antal værdier, et håndtag kan repræsenteres af, så Windows skal genbruge dem i sidste ende.


Når et håndtag er lukket, er det væk, du kan ikke gøre noget med det, det eksisterer ikke, og du bør ikke se på det.


Og hvis du senere åbner et andet håndtag, er det muligt, at Windows genbruger håndteringsværdien.

Andre referencer 2


Jeg vil råde dig til at gøre absolut ingen antagelser om håndteringsværdier.


Du bør ikke tænke på konkrete håndteringsværdier til alle praktiske formål. Et håndtag skal betragtes som en uigennemsigtig pladsholder til noget andet. Du kan passere håndtaget rundt for at henvise til noget (fx et vindue) uden at have en henvisning til den virkelige ting, men du skal aldrig se på håndtaget selv . Det faktum, at det er en numerisk værdi, skal betragtes som en implementeringsdetalje, dvs. ikke vigtigt (medmindre du måske gør en form for lavt niveau systemer programmering).


Når det er sagt, støtter jeg @jalfs svar: Håndter værdier kan genbruges. Hvis jeg overhovedet skulle antage det, ville jeg antage, at en håndteringsværdi kunne genbruges når som helst .

Andre referencer 3


Ja, vindueshåndtag er genbrugt.


Dokumentation til IsWindow funktionen siger: [4]



  En tråd bør ikke bruge IsWindow til et vindue, som det ikke skabte, fordi vinduet kunne ødelægges efter denne funktion blev kaldt. Da vindueshåndtagene genbruges , kan håndtaget endda pege på et andet vindue .