我建了一个单文档工程在单文档的VIEW类中我创建了一个子对话框
int CDataDisplayView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
 DWORD style = WS_VISIBLE|WS_CHILD;
    if( !myComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MYCOMM) )
{
AfxMessageBox("创建MsComm控件失败!");
return -1;
}
CRect rc;
GetClientRect(&rc);
pDlg1 = new CValueDlg;
pDlg1->Create(IDD_VALUE,this);//创建显示数值的非模态对话框
pDlg1->ShowWindow(SW_SHOW);
pDlg1->MoveWindow(rc.left+10,rc.top+10,300,300,true);
m_bCreateValueDlg = true;//防止非模态对话框被重复创建的变量

我在CValueDlg的CLOSE方法中给CDataDisplayView类发送消息
void CValueDlg::OnClose() 
{
::PostMessage(GetParent()->m_hWnd,WM_VALUEDLGCLOSED,0,0);
CDialog::OnClose();
}
我在CDataDisplayView类中处理子对话框关闭的消息
if(pDlg1)
{
delete pDlg1;
pDlg1 = NULL;
}
m_bCreateValueDlg = false;
    return 0; 

我单文档程序菜单上有一个显示这个子对话框的菜单项
void CDataDisplayView::OnValueShow() 
{
CRect rc;
GetClientRect(&rc);
if(!m_bCreateValueDlg)
{
 CValueDlg *pDlg1 = new CValueDlg;
 pDlg1->Create(IDD_VALUE,this);//创建显示数值的非模态对话框
 pDlg1->ShowWindow(SW_SHOW);
 pDlg1->MoveWindow(rc.left+10,rc.top+10,300,300,true);
 m_bCreateValueDlg = true;
    }
else
 pDlg1->SetFocus();}
问题是但我关闭了子对话框后,在单击菜单项打开时,程序其他部分,访问不了pDlg1新创建的内存了,怎么才能访问呢,我不想用隐藏子对话框再打开的方法。