windows mobile 5 收件箱的EntryID

lightfoot 2008-11-05 10:44:10
我的获取代码如下:
ULONG rgTags[] = { 1, PR_CE_IPM_INBOX_ENTRYID};
hr = pMsgStore->GetProps((LPSPropTagArray) rgTags, MAPI_UNICODE, &ulValues, &rgprops);

其中rgprops中会获得收件箱对应的EntryID
然后我注册了一个CAdviseSink,当有新短信来时lpNotifications含有对应msg store的EngtryID

我比较两个EngtryID,代码如下:
if(memcmp(lpNotifications->info.obj.lpParentID, rgprops[0].Value.bin.lpb, 5))
{
退出
}

当收件箱有新信息时,在wm6平台下会正确执行
但在wm5 standard平台下,lpNotifications中的EngtryID与当前获取的EngtryID对应补上
求高手解
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaylee527 2008-11-07
  • 打赏
  • 举报
回复
classic平台哪有sms inbox?
lightfoot 2008-11-07
  • 打赏
  • 举报
回复
在顶一下问题,有做过这个平台的人没~~
lightfoot 2008-11-05
  • 打赏
  • 举报
回复
to wang_junjie: 你可以自己给自己发短信,不就模拟收发短信了么:)

to zxjl0214: 我是在模拟器上调试的
现在要解决的就是你说的这个问题
0 == memcmp(lpNotifications[i].info.obj.lpParentID, rgprops[0].Value.bin.lpb, rgprops[0].Value.bin.cb)
这个判断语句在wm6上没问题,当消息来时,判断一下是不是Inbox里的消息,是的话执行,不是的话退出;

但是在wm5上,lpNotifications[i].info.obj.lpParentID消息的ID与rgprops[0].Value.bin.lpb的ID一直不相等;
也就是说消息给的ID和我获取的ID一直不相等(没有语法错误在里面,应为wm6可以执行)

补充:收件箱信息用的宏:PR_CE_IPM_INBOX_ENTRYID
北方大冬瓜 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zxjl0214 的回复:]
LS说的是模拟器?如果是真机的话,那SmartPhone不是不能发短信了?呵呵。

LZ的代码有问题,呵呵
//Notify可能不止一次哦!!!刚好WM6上的第一个消息就是fnevObjectCreated,你的代码才是对的;那如果第一个消息是其它类型的呢?

下面的代码才是正确的
for(UINT i = 0; i < cNotif; ++i)
{
switch(lpNotifications[i].ulEventType)
{
case fnevObjectCreated:
//判断条件应该如下…
[/Quote]

谢谢指出问题,把 Classic 和 Standard 弄混了,很少用这两种 SDK,呵呵。
zxjl0214 2008-11-05
  • 打赏
  • 举报
回复
LS说的是模拟器?如果是真机的话,那SmartPhone不是不能发短信了?呵呵。

LZ的代码有问题,呵呵
//Notify可能不止一次哦!!!刚好WM6上的第一个消息就是fnevObjectCreated,你的代码才是对的;那如果第一个消息是其它类型的呢?

下面的代码才是正确的
for(UINT i = 0; i < cNotif; ++i)
{
switch(lpNotifications[i].ulEventType)
{
case fnevObjectCreated:
//判断条件应该如下,而不应该写死5
//lpNotifications[i].info.obj.cbParentID == rgprops[0].Value.bin.cb &&
//0 == memcmp(lpNotifications[i].info.obj.lpParentID, rgprops[0].Value.bin.lpb, rgprops[0].Value.bin.cb)
}
}
北方大冬瓜 2008-11-05
  • 打赏
  • 举报
回复
standard 不是没有短信吗?
beyondma 2008-11-05
  • 打赏
  • 举报
回复
真机上呢?我遇到过的一次情况是签名有问题导致无法得到通知,不过模拟器上应该不能啊,没用过WM5的模拟器,提醒一下:)
lightfoot 2008-11-05
  • 打赏
  • 举报
回复
用拉,我也单步debug跟踪了,wm6上会如预期的运行
但wm5上lpNotifications[i].info.obj.lpParentID消息的ID与rgprops[0].Value.bin.lpb的ID一直不相等
zxjl0214 2008-11-05
  • 打赏
  • 举报
回复
你也用了for循环了吗?

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧