vc中建立非模态对话框的例子

 vc中建立非模态对话框的例子:
1,首先创建一个基于对话框的名为liu的工程。,对话框类名(CLiuDlg) 文件名 liuDlg.h,liuDlg.cpp

2, 添加一个对话框资源,生成一个类(jin)  文件名为 jin.h,jin.cpp

3, 在liuDlg.cpp中添加一个全局变量 ,在类定义的上面添加,代码为:
#include "jin.h"
jin * g_a;  //此全局变量用于指向非模态对话框

4,清空CLiuDlg对话框中的控件,然后添加两个按钮(IDC_BUTTON1,IDC_BUTTON2)和一个listbox(IDC_LIST1)。
5,清空jin对话框中的控件,然后添加两个按钮(IDC_BUTTON1,IDC_BUTTON2)和一个文本框(IDC_EDIT1)。
6, 为 IDC_EDIT1 添加引用变量 :(m_e  CString)
7, 为IDC_LIST 添加引用变量   : (m_l  CListBox)
8, 在按钮IDC_Button1的消息函数中添加如下代码:(用于打开非模态对话框)

 if(!g_a)
 {
  g_a=new jin(this);
  g_a->m_e=CString("liujincai");
  g_a->UpdateData(false);
 }

9, 在按钮IDC_Button2的消息函数中添加如下代码:(用于关闭非模态对话框)

        if(g_a)
 {
  delete g_a;
  g_a=NULL;
 }

10, 在jin.h中添加代码
     在类定义外面添加 #include "liuDlg.h";
     将构造器
     从
     jin(CWnd* pParent = NULL);
     改到
     jin(CLiuDlg* pParent = NULL);
     添加 protected 变量:CLiuDlg * liua; //用于在无模式弹出对话框中访问主对话框

11, 在jin.cpp中添加代码:

构造器改成:

jin::jin(CLiuDlg* pParent /*=NULL*/)
 : CDialog(jin::IDD, pParent)
{
 //{{AFX_DATA_INIT(jin)
 m_e = _T("");
 //}}AFX_DATA_INIT
 if(Create(jin::IDD,pParent))
 {
  ShowWindow(SW_SHOW);
 }
 liua=pParent;
}

 添加:extern jin* g_a;  //应用全局变量,这样可以在本类中使用其它CLiuDlg中定义的全局变量了。

12, 在jin中添加消息:
 
   IDC_BUtton1的消息函数为:

liua->m_l.AddString("northsnow");   //将 northsnow 写到主窗口的listbox中

   IDC_BUtton2的消息函数为:

liua->m_l.AddString("塞北的雪");    //将 塞北的雪 写到主窗口的listbox中

   jin 的 WM_CLOSE 消息函数为:

        CDialog::OnClose();
 delete this;
 g_a=NULL;

这样整个程序就完成了。
  

 

 

 

 

 

你可能感兴趣的:(list,null,delete,button)