VC 弹出对话框

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:27:38
有两个对话框
子对话框:CGuarantee_Slip_SeeDlg
父对话框:CIPDDlg
主对话框中一个按扭的单击函数:
void CIPDDlg::OnGuaranteeSlipSee()
{
// TODO: Add your control notification handler code here
}
问题:如何让单击这个按扭的时候,弹出子对话框,且子对话框覆盖父对话框。
请详细一点,我才学VC两周,谢谢指点!
函数里面应该如何写?
我想让子对话框覆盖父对话框,也就是单击后,让子对话框把父对话框完全摭住
那样并没有什么效果,因为我并没有为对话框指定大小,我是把父对话框与子对话框随意的拖动大小 ,但是父对话框比子对话框大,子对话框弹出来的时候并不能摭住父对话框,也就是对话框的一个缩放功能,如果在单击弹出子对话框后,能把父对话框缩小或者把子对话框放大,这样应该也可以实现功能,但具体怎么做我不知道,还有,如果把子对话框变大,如何才能做他的按钮随对话框的变大而不影响布局

最简单的办法是暂时隐藏父窗体
void CIPDDlg::OnGuaranteeSlipSee()
{
ShowWindow(SW_HIDE );
CGuarantee_Slip_SeeDlg mdlg(this);
mdlg.DoModal();
ShowWindow(SW_SHOWNORMAL );
}

用DoModal()就可达到遮住效果,但如果要让父对话框隐藏,那就最好用非模态对话框。

CGuarantee_Slip_SeeDlg dlg;
dlg.DoModal();

当然要包含Guarantee_Slip_SeeDlg.h头文件

CRect rc,rcScreen;
GetWindowRect(&rc);
int nWidth=rc.Width();
int nHeight=rc.Height();
int nWidthScreen=::GetSystemMetrics(SM_CXSCREEN); //屏幕宽
int nHeightScreen=::GetSystemMetrics(SM_CYSCREEN); //屏幕高
MoveWindow((nWidthScreen-nWidth)/2,(nHeightScreen-nHeight)/2,nWidth,nHeight);

修改nWidth和nHeight,便可修改窗口长和宽;
找到控件指针,用同样的方法移动窗口中的控件位置。

嗯 第一个问题 子对话框覆盖父对话框的问题
利用子对话框的缩放
1.进入子类的OnInitialDialog()这个函数以后,在这里,用GetParent能够获得父对话框的指针,没错吧。有了父对话框的指针,那么父对话框的窗口位置及大小我们就知道了,对吧?然后我们在这里写上MoveWindow(....)... e 当然是Move子对话框咯。这里要填 左上角x,y以及高和宽,这里的x,y起始与父窗口的左上角...嗯 具体MSDN去
第二个问