CWnd::Attach

CWnd::Attachで、CWndオブジェクトにウィンドウハンドルを紐付ける。

CWnd クラス | Microsoft Learn

これでも操作できるがスコープを抜けると破棄されるので注意しないといけない。
子ウィンドウクラスCChildWndを定義。
CChildWnd.hは、

CChildWnd.cppは、

とする。
CFrameWnd_.cppで、

// ハンドラOnItem1_1()
void CFrameWnd_::OnItem1_1(){	// メニュー項目Item1_1のコマンドハンドラ

	CChildWnd childWnd;
	childWnd.Attach(m_hChild);
	childWnd.SetWindowText(_T("Item1-1"));

}

こうすると、

ここまで上手くいくが
ここまで上手くいくが

ここまで上手くいくが、

閉じる時こうなっちゃう。
閉じる時こうなっちゃう。

閉じる時こうなっちゃう。
CFrameWnd_.hで、

m_childWndってメンバにして、
CFrameWnd_.cppは、試行錯誤の上、

こうした。
(m_childWnd.DestroyWindowだとASSERTに引っかかるので。)

これがItem1-1を押すと、
これがItem1-1を押すと、

これがItem1-1を押すと、

こうなって
こうなって

こうなって、

閉じた時にASSERTに引っかからずに終了。
閉じた時にASSERTに引っかからずに終了

閉じた時にASSERTに引っかからずに終了。

Sample/mfc/CWnd/Attach/src/CWnd at master · bg1bgst333/Sample · GitHub