如何从模态对话框实时传递数据

      模态对话框简单好用,用它传递数据时,直接使用DoModal(), 根据按钮情况 进行数据传递:

      如下例所示:

	CMyDlg  dlg;
	dlg.i=0; // 初始化数据
	dlg.j=0;

	if(dlg.DoModal()==IDOK){
		int i=dlg.i;   //将模态对话框中的变量传递出
		int j=dlg,j;   
	}

 

       但是,这种传递仅能传递模态对话框中最后设定好的数据,而不能传递实时数据,比如,模态对话框中有一个滚动条,主窗口需要实时获得滚动条的值,这时用这种方法便无法获取实时值。

       怎么才能将滚动条的实时值传递给主窗口呢?

       我采用的方法是自定义消息:每当滚动条发生改变时,往主窗口发送消息,将值传递给主窗口。

 

1     stdafx.h中自定义消息

   #define WM_ANGLE_VALUE (WM_USER+100)             //从模态对话框中 传送角度值


2

        1)  MainFrm.h中声明消息映射函数

   afx_msg LRESULT OnAngle(WPARAM wParam,LPARAM lParam);


       2)  MainFrm.cpp定义消息映射函数,并将消息中的参数传递给相应的窗口

LRESULT CMainFrame::OnAngle(WPARAM wParam,LPARAM lParam)
{
	CImportView* pImportView=(CImportView*)m_SplitterWnd.GetPane(0,3);
	pImportView->OnAngle((int)wParam,(int)lParam);

	
	return 0;
}


       3)   MainFrm.cpp中设置消息响应

 ON_MESSAGE(WM_ANGLE_VALUE,OnAngle)

 


3 在模态对话框中发送消息

 

	(theApp.m_pMainWnd)->PostMessage(WM_ANGLE_VALUE,(WPARAM)angle,-1);

 

       由theApp.m_pMainWnd-->PostMessage()可以看出,之所以在MainFrm中定义消息响应函数,是因为在MainFrm中定义消息,可以使得在程序任意地方都可以发送此消息。 因为,程序运行时,theApp 便是这个程序,theAPP.m_pMainWnd,便是此CMainFrame类对象,所以,程序运行时,theApp.m_pMainWnd 在任意个地方都可以获得,故而,在任意个地方都可以发送此消息。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值