MFC非模态对话框的创建与视图类的数据交换

来源:互联网 发布:mac 自带软件能删除吗 编辑:程序博客网 时间:2024/05/16 10:46
 

 源代码:http://download.csdn.net/detail/nuptboyzhb/4143519

1.       非模态对话框的创建

a.       新建一个对话框的资源,假设ID号为IDD_DIALOG1;然后创建其对应的类,类名为CMyDlg;然后完善各个控件之间的编程;

b.       在视图中,增加一个成员函数 CMyDlg  m_dlg;

c.       在视图类的OnCreat函数中,创建对话框,并将其与相应的对话框资源的ID相关联

m_dlg.Create(IDD_DIALOG1,this);//第一个参数是ID资源号,第二个是父窗口的指针

   m_dlg.ShowWindow(SW_HIDE);//隐藏其显示

d.       在需要触发显示的地方,让其显示

   m_dlg.ShowWindow(SW_SHOW);

 

2.       非模态对话框与视图类的数据交换

(1)       自定义消息

这个是常用的方法,它的大体思路是:在视图中定义一个用户消息;在对话框中需要响应视图里的消息时,用SendMessage函数触发;

(2)       我们可以用一个按钮,完成它们之间的消息传递;

a.       在视图类中增加一个CButton btn对象;

b.       在视图类的OnCreate函数中,创建该对象

btn.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,

CRect(20,0,100,20), &m_dlg, IDC_MYBTN);

             注意:第四个参数,是指父窗口的指针;第五个参数是按钮的ID号;这个ID

号是我们自己定义的;ID号非常重要,我们可以根据ID号,进行消息

映射,以达到点击按钮,响应相应函数的目的;

c.       根据按钮的ID号,我们进行按钮的消息映射响应;

1.       声明消息处理函数     afx_msg void OnMybtn();

2.       映射       ON_COMMAND(IDC_MYBTN,OnMybtn)

3.       实现  

void CXXXView::OnMybtn()

{

       // TODO: Add your command handler code here

       MessageBox("响应成功");

}

       因此,通过点击按钮,在按钮的消息响应函数中,就能编写数据交换的代码了!

原创粉丝点击