在windows mobile上设计UI的时候,经常会碰到多个窗口的情况。有时候,我们需要将一个窗口中的用户输入信息反应到另一个窗口中去,这就涉及到窗口之间的数据传递问题。下面就分native和managed这两种方式来讲讲这个窗口之间数据传递的方法。
1. Native
这个方法是当时我在看MFC时学到的,当时应用的场景是这样的。我建立了一个基于对话框的应用程序(Dialog-based),一些参数设置需要另外一个对话框来呈现给用户,在用户输入完之后,就需要将数据传递给主对话框。当时我是这么实现的:
a) 在 stdafx.h头文件中,加入用户定义消息和传递的数据结构,如:
#define WM_LOCALADDR_SET WM_USER+21 //本地STC地址设置消息定义
typedef struct tagADDRESS {
int nAddr0;
int nAddr1;
int nAddr2;
int nAddr3;
} ADDRESS;
b) 在地址设置对话框的实现文件中,加入“OK”按钮的消息处理函数:
void CLocalAddrSet::OnButtonApply()
{
// TODO: Add your control notification handler code here
UpdateData (TRUE);
ADDRESS rp;
rp.nAddr0 = m_intLocalAddr0;
rp.nAddr1 = m_intLocalAddr1;
rp.nAddr2 = m_intLocalAddr2;
rp.nAddr3 = m_intLocalAddr3;
//发送消息
AfxGetMainWnd ()->SendMessage (WM_LOCALADDR_SET, 0, (LPARAM) &rp);
}