Windows Mobile 建立与短信信箱的连接
2010-06-03 22:56:00 来源:WEB开发网};
这段程序动态的声明了一个名为_SPropTagArray_Columns的结构体,并且声明了一个名为Columns的结构体变量。这个结构体中有一个ULONG类型的成员变量,和一个长度为2的ULONG类型的数组成员组成。结构体中cValues的值被初始化为 2,aulPropTag[0]=PR_ENTRYID,aulProTag[1]=PR_DISPLAY_NAME。
这里面涉及到了两个常量符号,PR_ENTRYID和PR_DISPLAY_NAME,这两个符号分别表示对象ID和显示名称,这里所说的对象可以是短信(邮件)存储仓库,也可是具体信箱Folder,还可以是短消息本身,调用不同的函数,这些符号会被解释为具体对象的某些属性。
另外还有一个重要的接口需要说明,那就是IMAPITable,这个接口也从IUnKnow中继承。在WM系统中的短信(邮件)仓库、具体信箱 Folder以及Folder中的短信都不是唯一的,在使用Cemapi中的接口方法获取这些对象的时候,将会采用表的形式返回结果,IMAPITable接口的作用就是用于描述这个表的结构。
有了这两个类型作为基础,我们就可以通过尝试获取WM系统中的短信(邮件)仓库列表了,前面提到了IMAPISession接口一个方法 GetMsgStoresTable,从名字上应该就很直观的知道了这个方法的功能,即获取MsgStore(短信邮件仓库)列表。该方法定义为:
HRESULT IMAPISession::GetMsgStoresTable(ULONG ulFlags,LPMAPITABLE FAR * lppTable)
返回值依旧标志方法是否运行成功,不再赘述。参数中
ulFlags:表示字符编码类型,这里好像只有MAPI_UNICODE标志供选择。
lppTable:实际是一个IMAPITable **类型,该方法通过它返回MsgStore(短信邮件仓库)列表。
当GetMsgStoresTable方法成功获取了IMAPITable接口的对象以后,这时该对象里面的数据还是以原始的方式组织的,我们无法获取表中的记录,这时候就需要调用IMAPITable接口中的SetColumns方法来告诉IMAPTABLE对象,内部数据将以什么形式进行组织。该方法定义为:
HRESULT IMAPITable::SetColumns(LPSPropTagArray , ULONG);
返回值用于判断方法调用是否成功。参数说明:
LPSPropTagArray:用于说明IMAPITable中记录的组织形式,把前面提到过的Columns对象作为参数传入,则表示告诉 IMAPITable对象,表格中每条记录有两列,第一列是对象ID(PR_ENTRYID),第二列是对象现实名称 (PR_DISPLAY_NAME)。
ULONG:某种标志,一般设置为0,这里我没有找到相关资料,希望高手们补充。
更多精彩
赞助商链接