Translated from https://bbs.csdn.net/topics/390540690
1. If you create a non-modal window, choose one of the following two practices.
(1) Chatting.m_lpdlg = new Cchatdialog;
Chatting.m_lpdlg->create (Idc_dialog_chat,this);
Chatting.m_lpdlg->showwindow (Sw_show);
(2) Chatting.m_lpdlg = new Cchatdialog (this);
Chatting.m_lpdlg->showwindow (Sw_show);
A window is typically created with a parameter constructor.
You create two windows, you can only use one, and there will be resource leaks.
Do nothing unless you have a single-argument constructor.
Otherwise
Chatting.m_lpdlg = new Cchatdialog (this);
Chatting.m_lpdlg->create (Idc_dialog_chat,this);
The code is equivalent to
Chatting.m_lpdlg = new Cchatdialog ();
Chatting.m_lpdlg->create (Idc_dialog_chat,this);
Chatting.m_lpdlg->create (Idc_dialog_chat,this);
The CREATE function calls two times, naturally with the second call, however, the resource leaks, can not be solved.
2, in Cchatdialog inside GetParent () obtained is the creation of the pass in the This
The role of GetParent () in MFC (RPM)