CE MAPI实例讲解 --- Custom Form介绍(九)
来源:互联网 发布:淘宝不能代付怎么办 编辑:程序博客网 时间:2024/05/17 02:59
实际上在微软的2005 SDK SAMPLE已经有了一个比较详细的例子,叫做Customform,大家可以在SDK安装目录/wce500/Windows Mobile 5.0 Pocket PC SDK/Samples/CPP/Win32下面找到这个例子,所以详细代码我就略过了,我们从系统对一个Custom Form的调用逻辑讲起。
1. 用户点击New或者某条已经存在的Message再编辑,tmail查阅对应的Message Type,比如是IPM.SMSText(SMS)还是IPM.Note(Outlook Email)或者还是其它,然后查询注册表Message Type注册的位置(HKEY_CURRENT_USER/Software/Microsoft/Inbox/MsgTypes/IPM)找到正确的Form Dll.
2. 每个Form DLL必须实现FormFactoryEx输出函数,tmail调用FormFactoryEx获取IFormProviderEx对象。
3. 根据不同的需求,调用IFormProviderEx不同的函数,比如如果是新建或者再编辑一条Message,将会调用IFormProviderEx:: CreateComposeForm,如果是播放,则调用IFormProviderEx:: CreateReadForm,如果是获取Message Icon,则调用IFormProviderEx:: GetMsgStatusIconIndex(可以参考《Pocket PC & Smartphone 短信图标轻松换》一文)。
要实现自己的编辑客户端,如果才能让用户方便的创建你定义的Message呢?微软的Sample里面没有涉及到这一点,它所走的流程是:
1. 通过IMailRuleClient截获EMS消息,把它的Message Type改成IPM.SMStext.SDKEMS。
2. 编辑或者播放时,因为类型是IPM.SMStext.SDKEMS,所以会调用自己一注册的EMS Custom Form。
它略过了创建IPM.SMStext.SDKEMS类型Message的细节,那么要如何创建这种类型的消息呢?一种比较方便的方法就是在SMS基础上添加EMS的支持,如下图:
这样,一旦用户点了EMS,那么创建的就是自定义的EMS消息,想要实现它其实很简单,在Customform例子的基础上,我们新建Message Type,比如叫IPM.EMS,替换掉Customform里面所有的IPM.SMStext.SDKEMS,接下来我们只需要对注册表做少许的修改:
以下是IPM.EMS类型的注册:
[HKEY_CURRENT_USER/Software/Microsoft/Inbox/MsgTypes/IPM/EMS]
"GlyphInfo"=hex:/
20,00,00,00,64,00,00,00,64,00,00,00,00,00,00,00,01,00,00,00,03,00,00,00,02,/
00,00,00,00,00,00,00
"DLL"="EMSViewerForm.dll"
"Name"="
在[HKEY_LOCAL_MACHINE/Software/Microsoft/Inbox/Svc/SMS/MsgClasses]下面添加键值:
"IPM.EMS"=dword:00000001
OK,我们单独的EMS 编辑器就成功了。先简单介绍到这里,以后有空继续,欢迎拍砖!
- CE MAPI实例讲解 --- Custom Form介绍(九)
- CE MAPI实例讲解
- CE MAPI实例讲解(2)
- CE MAPI实例讲解(3)
- CE MAPI实例讲解(4)
- CE MAPI实例讲解(5)
- CE MAPI实例讲解(6)
- CE MAPI实例讲解(7)
- CE MAPI实例讲解(8)
- CE MAPI实例讲解(9)
- CE MAPI实例讲解 --- IMAPIAdviseSink的一个例子(四)
- CE MAPI实例讲解 --- 如何设置收件人信息(五)
- CE MAPI实例讲解 --- 如何获取收件人信息(六)
- CE MAPI实例讲解 --- 设置Message附件(七)
- CE MAPI实例讲解 --- 读取Message附件(八)
- CE MAPI实例讲解 --- 如何获取Inbox里的所有消息(一)
- CE MAPI实例讲解 --- 如何获取Inbox里的所有消息(二)
- CE MAPI实例讲解 --- 监视Message的状态改变(三)
- 玩一把试试
- ActiveBar+ActiveSizer
- CE MAPI实例讲解 --- 设置Message附件(七)
- CE MAPI实例讲解 --- 读取Message附件(八)
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- CE MAPI实例讲解 --- Custom Form介绍(九)
- 10个最吃香的网站开发技术
- 单件模式(Singleton Pattern)
- 美国人的生活
- 国外优秀网站收藏(转)
- 【听大师说话4】PHP创始人 Rasmus Lerdorf 访谈 2
- 上的时间很少了
- Configuring Exchange Server 2007 Unified messaging with 3CX Phone System
- ROM-BIOS与实模式1MB常规内存的结构