This event is sent as early as possible during the window destruction process.
For the top level windows, as early as possible means that this is done by wxFrame or wxDialog destructor, i.e. after the destructor of the derived class was executed and so any methods specific to the derived class can't be called any more from this event handler. If you need to do this, you must call wxWindow::SendDestroyEvent() (not implemented in wx) from your derived class destructor.
For the child windows, this event is generated just before deleting the window from wxWindow:'Destroy'/1 (which is also called when the parent window is deleted) or from the window destructor if operator delete was used directly (which is not recommended for this very reason).
It is usually pointless to handle this event in the window itself but it ca be very useful to receive notifications about the window destruction in the parent window or in any other object interested in this window.
wxWidgets docs: wxWindowDestroyEvent