2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
剛又想到個(gè)idea 再來第三種方法
void CTestDlg::OnButton3()
{
// TODO: Add your control notification handler code here
static calTNT dlg;//想想static int x = 1;是神馬語法現(xiàn)象
static int flag = 0;
if(!flag)
{
dlg.Create(IDD_DIALOG1);
flag = 1;
}
dlg.ShowWindow(SW_SHOW);
}
模特、非模態(tài)兩種方法都給你寫一個(gè)程序里頭了 vc6 mfc 對(duì)話框工程
主對(duì)話框類名CTestDlg 彈出的對(duì)話框名 calTNT
主對(duì)話框上添加一個(gè)編輯框 兩個(gè)按鈕
編輯框關(guān)聯(lián)CString類型變量m_TNT2
彈出對(duì)話框類 添加一個(gè)編輯框 關(guān)聯(lián)變量CString類型m_TNT1
給彈出對(duì)話框的OK按鈕添加響應(yīng)函數(shù)
void calTNT::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
((CTestDlg *)AfxGetMainWnd())->m_TNT2 = m_TNT1;
AfxGetMainWnd()->UpdateData(FALSE);
CDialog::OnOK();
}
主對(duì)話框類 的頭文件和源文件 都加上 彈出對(duì)話框類的頭文件
先來模態(tài)的,主對(duì)話框的button1
void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
calTNT dlg;
dlg.DoModal();
}
很簡(jiǎn)單
再來看非模態(tài) 給主對(duì)話框類添加頭文件類聲明中添加成員指針變量 和析構(gòu)函數(shù)聲明
public:
calTNT *p;
CTestDlg(CWnd* pParent = NULL); // standard constructor
~CTestDlg();
主對(duì)話框類源文件 構(gòu)造函數(shù)中將此指針 初始化為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;
}
添加析構(gòu)函數(shù)實(shí)現(xiàn)
CTestDlg::~CTestDlg()
{
if(p)
{
delete p;
}
}
最后按鈕2 建立非模態(tài)
void CTestDlg::OnButton2()
{
// TODO: Add your control notification handler code here
if(!p)
{
p = new calTNT();
p->Create(IDD_DIALOG1);
}
p->ShowWindow(SW_SHOW);
}

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
那有什么意義啊
關(guān)閉了,可以說就是銷毀了。那么所賦值也沒了
你可以試試構(gòu)造傳參,直接在構(gòu)造里傳遞過去啊
C測(cè)試Dlg dlg(TNT1);
- 2 回答
- 0 關(guān)注
- 234 瀏覽
添加回答
舉報(bào)