2 回答
TA贡献1801条经验 获得超16个赞
刚又想到个idea 再来第三种方法
void CTestDlg::OnButton3()
{
// TODO: Add your control notification handler code here
static calTNT dlg;//想想static int x = 1;是神马语法现象
static int flag = 0;
if(!flag)
{
dlg.Create(IDD_DIALOG1);
flag = 1;
}
dlg.ShowWindow(SW_SHOW);
}
模特、非模态两种方法都给你写一个程序里头了 vc6 mfc 对话框工程
主对话框类名CTestDlg 弹出的对话框名 calTNT
主对话框上添加一个编辑框 两个按钮
编辑框关联CString类型变量m_TNT2
弹出对话框类 添加一个编辑框 关联变量CString类型m_TNT1
给弹出对话框的OK按钮添加响应函数
void calTNT::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
((CTestDlg *)AfxGetMainWnd())->m_TNT2 = m_TNT1;
AfxGetMainWnd()->UpdateData(FALSE);
CDialog::OnOK();
}
主对话框类 的头文件和源文件 都加上 弹出对话框类的头文件
先来模态的,主对话框的button1
void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
calTNT dlg;
dlg.DoModal();
}
很简单
再来看非模态 给主对话框类添加头文件类声明中添加成员指针变量 和析构函数声明
public:
calTNT *p;
CTestDlg(CWnd* pParent = NULL); // standard constructor
~CTestDlg();
主对话框类源文件 构造函数中将此指针 初始化为NULL
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestDlg)
m_TNT2 = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
p = NULL;
}
添加析构函数实现
CTestDlg::~CTestDlg()
{
if(p)
{
delete p;
}
}
最后按钮2 建立非模态
void CTestDlg::OnButton2()
{
// TODO: Add your control notification handler code here
if(!p)
{
p = new calTNT();
p->Create(IDD_DIALOG1);
}
p->ShowWindow(SW_SHOW);
}
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报