emwin父子窗口切换时的问题

emwin中设置窗口之间的切换,A窗口为父窗口,B窗口为子窗口,A窗口通过BUTTON调出B窗口后需要用

        GUI_EndDialog(pMsg->hWin, 0);
    Create*****();

这个代码来清除其余窗口,若不使用的话在A窗口开启其余子窗口过多的情况下会卡死,但是执行代码之后打开B窗口之后作为父窗口的A也被清除了,就无法再开启其余窗口,怎么样才能在不清除A窗口的前提条件下打开一个子窗口之后只消除其余的子窗口呢?
之前是通过设置CLOSE按钮来关闭FRAMEWIN,后来说这样不美观而且麻烦要设置成直接关闭不通过CLOSE,请问各位怎么设置呢?

void CloseBWindow(WM_HWIN hWin) {
  // 关闭 B 窗口,并只清除除 B 窗口以外的其他子窗口
  WM_HWIN hChild = WM_GetFirstChild(hWin);
  while (hChild) {
    if (hChild != hBWindow) {  // B 窗口不清除
      WM_DeleteWindow(hChild);
    }
    hChild = WM_GetNextSibling(hChild);
  }
}

void OpenBWindow() {
  // 创建 B 窗口
  hBWindow = Create*****();

  // 在 A 窗口中添加关闭 B 窗口的回调函数
  WM_SetCallback(hAWindow, [](WM_MESSAGE* pMsg) {
    switch (pMsg->MsgId) {
      case WM_NOTIFY_PARENT:
        if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
          if (pMsg->hWinSrc == hButton) {
            // 显示 B 窗口
            GUI_SelectLayer(1);
            WM_ShowWindow(hBWindow);

            // 关闭除 B 窗口以外的其他子窗口
            CloseBWindow(pMsg->hWin);
          }
        }
        break;
      default:
        WM_DefaultProc(pMsg);
        break;
    }
  });
}