`
wsql
  • 浏览: 11713016 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

源代码: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("响应成功");

}

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics