源代码: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("响应成功");
}
因此,通过点击按钮,在按钮的消息响应函数中,就能编写数据交换的代码了!