现在的位置: 首页 > 综合 > 正文

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

2012年12月27日 ⁄ 综合 ⁄ 共 1194字 ⁄ 字号 评论关闭

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;

抱歉!评论已关闭.