新建两个对DIALOGBAR对话框和相关连的类,第二个对话框类做为第一个对话框的成员。把第一个对话框的style设置成child用来框覆盖掉视图窗口,代码如下:
void CChildView::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
if(pViewDlg == NULL)
{
pViewDlg = new CViewDlg;
pViewDlg->Create(IDD_DIALOGBAR,this);
}
CRect clientRect;
GetClientRect(clientRect);
pViewDlg->SetWindowPos((CWnd *)HWND_TOP,0,0,clientRect.Width(),clientRect.Height(),SWP_SHOWWINDOW);
}
第二个对话框做为第一个对话框的成员并把style属性设成Popup,border属性设成dialog frame。在第一个对话框的OnInitDialog函数创建非模态对话框2
BOOL CViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(pPopDlg == NULL)
{
pPopDlg = new CPopDlg;
pPopDlg->Create(IDD_DIALOGBAR1,this);
} return TRUE; // return TRUE unless you set the focus to a control
}
这时有第二个对话框的OnInitDialog获取第一个对话框中的成员数据是无效数据。代码如下
BOOL CPopDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int ver,vol;
ver = ((CViewDlg *)GetParent())->GetVer();
vol = ((CViewDlg *)GetParent())->GetVol();
return TRUE;
}
其中变量ver和vol都是无效的。但是如果把第二个对话框的style属性设成child后,ver,vol的值就是正确的值了。谁知道是什么原因不?
void CChildView::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
if(pViewDlg == NULL)
{
pViewDlg = new CViewDlg;
pViewDlg->Create(IDD_DIALOGBAR,this);
}
CRect clientRect;
GetClientRect(clientRect);
pViewDlg->SetWindowPos((CWnd *)HWND_TOP,0,0,clientRect.Width(),clientRect.Height(),SWP_SHOWWINDOW);
}
第二个对话框做为第一个对话框的成员并把style属性设成Popup,border属性设成dialog frame。在第一个对话框的OnInitDialog函数创建非模态对话框2
BOOL CViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(pPopDlg == NULL)
{
pPopDlg = new CPopDlg;
pPopDlg->Create(IDD_DIALOGBAR1,this);
} return TRUE; // return TRUE unless you set the focus to a control
}
这时有第二个对话框的OnInitDialog获取第一个对话框中的成员数据是无效数据。代码如下
BOOL CPopDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int ver,vol;
ver = ((CViewDlg *)GetParent())->GetVer();
vol = ((CViewDlg *)GetParent())->GetVol();
return TRUE;
}
其中变量ver和vol都是无效的。但是如果把第二个对话框的style属性设成child后,ver,vol的值就是正确的值了。谁知道是什么原因不?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货