c ++ - Windows API: Kan WM\_DESTROY sendes uden WM\_CLOSE på forhånd?

Indlæg af Hanne Mølgaard Plasc

Problem



Standardmetoden til at håndtere Windows-levetiden i Windows lytter efter en WM\_CLOSE-besked, og afgør derefter om vinduet skal lukkes eller ej og eventuelt behandling af WM\_DESTROY-meddelelsen (til oprydning mv.) Efterfølgende.


Er der noget scenario, hvor WM\_DESTROY kunne sendes uden WM\_CLOSE på forhånd? Jeg mener 'ved systemet', ikke ved manuelt at ringe DestroyWindow() eller PostMessage(). Eller er det sikkert at stole på, at WM\_CLOSE altid sendes før WM\_DESTROY?

Bedste reference


Ja. Hvis du opretter en MFC-dialogbaseret applikation og trykker på knappen 'Annuller' (IDCANCEL som ID), sender den ikke WM\_CLOSE-hændelsen. Også hvis du trykker på 'Esc' -tasten, samme ting.


Hvis du klikker på 'X' -knappen i det øverste højre hjørne af dialogboksen, bliver ja WM\_CLOSE sendt.

Andre referencer 1


I WM\_COMMAND-sektionen i en Dialogex-meddelelsessløjfe er det muligt at tilføje en sag til WM\_DESTROY. Denne sag indfanger en Escape keydown som standard, så en akkompagnerende EndDialog erklæring på betingelsen kan så starte en [[PostQuitMessage. [6] [7]