Windows Mobile 建立与短信信箱的连接
2010-06-03 22:56:00 来源:WEB开发网IMAPISession *m_pSession=NULL;
hr=MAPILogonEx(NULL,NULL,NULL,NULL,&m_pSession);
if(FAILED(hr) || NULL==m_pSession)
{
//异常处理
}
3. 如何终止与短信(邮件)系统的会话,并释放Session对象
使用IMAPISession接口中Logoff方法可以终止与短信(邮件)系统的会话,Logoff方法定义为:
HRESULT IMAPISession::Logoff(ULONG ulUIParam,ULONG ulFlags,ULONG ulReserved);
方法返回一个HRESULT对象,通过它可以判断调用是否成功。前两个参数的意义与MAPILogonEx中的同名参数相同,最后一个参数保留不用。对于短信操作来说,三个参数均可设置为NULL。
当成功Logoff以后,如果确信不再需要Session对象以后,可以通过Release方法释放对象。源代码如下:
if(NULL!=m_pSession) //释放Session
{
HRESULT hr=m_pSession->Logoff(NULL,NULL,NULL);
if(FAILED(hr))
{
//异常处理
}
m_pSession->Release();
m_pSession=NULL;
}
4. 短信(邮件)仓库接口IMsgStore
IMsgStore继承自IMAPIProp接口,而IMAPIProp接口又继承自IUnknow接口,这个接口中值得我们重点关注的函数有GetProps,OpenEntry两个函数,后面我们将会通过这两个函数获取具体信箱(Folder)对象。
5. 建立与短信仓库的连接
在实现连接以前,先来看一个很有意思的宏
#define SizedSPropTagArray(_ctag, _name)
struct _SPropTagArray_ ## _name
{
ULONG cValues;
ULONG aulPropTag[_ctag];
} _name
为什么说这个结构体有意思,仔细看一下就知道了,利用了一个带参数的宏,实现了动态声明结构体的功能,更奇妙的是,连结构体的名称都可以动态创建。大家别怪我顾洛寡闻,这种声明方式还真是不太常见。这个数据结构在Cemapi中扮演一个很重要的角色,通过定制的实现它,可以告诉函数,我希望获取或设置那些属性。看下面一段程序:
SizedSPropTagArray(2 , Columns) = {
2,
PR_ENTRYID, //Entry ID
PR_DISPLAY_NAME //Display Name
更多精彩
赞助商链接