我想做一个基于对话框的应用程序,有如下几个问题想请教:
1、如何实现一个非模式对话框在产生另一个非模式对话框后自己隐藏,在产生的非模式对话框关闭后又重新显示?
2、非模式对话框用DestroyWindow()关闭后是不是一定要在PostNcDestroy消息处理中delete this ?
3、如何把一个非模式对话框中的数据传递到另一个非模式对话框中?
1、如何实现一个非模式对话框在产生另一个非模式对话框后自己隐藏,在产生的非模式对话框关闭后又重新显示?
2、非模式对话框用DestroyWindow()关闭后是不是一定要在PostNcDestroy消息处理中delete this ?
3、如何把一个非模式对话框中的数据传递到另一个非模式对话框中?
2。不用
3。获取另一个非模式对话框的实例
在第二个非模态对话框的OnOK或者OnCancel中重新显示第一个:ShowWindow(SW_SHOW); 2。不用了,DestroyWindow()帮你做完了3。可以用全局变量
或者在第二个非模态对话框中得到第一个非模态对话框的实例指针,把数据传过来
CDialog2noModeDlg成员
CDlg1 dlg;
void CDialog2noModeDlg::OnButton1()
{
//dlg 成员变量,CDlg1类
dlg.Create(IDD_DIALOG1);
dlg.ShowWindow(SW_SHOW);
}class CDlg1成员
int x ;
CDlg2 dlg;
void CDlg1::OnButton1()
{
x = 1 ;
dlg.Create(IDD_DIALOG2,this);
dlg.ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
}
class CDlg2 成员
void CDlg2::OnOK()
{
//访问数据
CDlg1 * pDlg = (CDlg1 *)GetParent();
int x = pDlg->x ;
pDlg->x ++; SendMessage(WM_CLOSE);
GetParent()->ShowWindow(SW_SHOW);
}不用delete this
你用GetParent()得到父窗口是一个办法,不过在生成这一对话框时一定要用dlg.Create(IDD_DIALOG2,this)不能用dlg.Create(IDD_DIALOG2,NULL)吧。
不过还是不明白为什么要用SendMessage(WM_CLOSE),而不是用DestroyWindow()?
为什么用GetParent()->ShowWindow(SW_SHOW),而不用pDlg->ShowWindow(SW_SHOW)?请指教。