you can steer clear of memory drip in cases where modeless discussion allocated around the heap by utilizing overriding PostNcDestroy.
Dialogs are not designed for auto-cleanup ( while Main frame windows, View home windows are). In case you want to provide the actual auto-cleanup with regard to dialogs then you definitely must override the PostNcDestroy fellow member function in your derived course. To include auto-cleanup to your class, call your own foundation class after which perform a remove this. To get rid of auto-cleanup out of your class, phone CWnd::PostNcDestroy directly rather than the PostNcDestroy fellow member inside your direct foundation course.
void MyDialog::PostNcDestroy()
CDialog::PostNcDestroy();
delete this;
The salt water evaporates (through MSDN):
When wrecking a Home windows windowpane, the final Windows message sent to the window is actually WM_NCDESTROY. The default CWnd handler for your message (CWnd::OnNcDestroy) will detach the actual HWND in the C++ item and call the digital perform PostNcDestroy. Some classes override this particular perform to delete the C++ object.
"delete this" will free any kind of C++ memory linked to the C++ item. Although the fall behind CWnd destructor phone calls DestroyWindow if m_hWnd is actually non-NULL, this doesn't result in infinite recursion since the handle will be detached and NULL during the cleanup phase.
|