一、什么是今日插件,如何实现?
大家看过windows
mobile操作系统的手机吧,在“开始”->“今日”菜单项,点击后即显示今日屏幕。今日屏幕上有很多项小窗口,看起来一条一条的,这个一条一条
的小窗口就是今日插件。点击每一项会运行一个程序或者弹出一个对话框。今日插件其实只是一个实现了特定接口的被注册的,可被今日屏幕找到的一个DLL。每
个今日插件DLL必须用指定的序号导出两个函数,一个是必须导出的InitializeCustomItem函数,序号为240。一个是可选导出的函数
CustomItemOptionsDlgProc,序号为241。每个今日插件DLL的def文件看起来像下面这样: LIBRARY libname EXPORTS CustomItemOptionsDlgProc @241 NONAME 大家再点一下“开始” ->“设置”->“个人”->“今日”点击后会弹出个今日控制面板,切换到项目,可以看到所有今日项目列表。 二、今日插件注册表
注册表位于HKEY_LOCAL_MACHINE/Software/Microsoft/Today/Items项,所有系统注册了的今日插件都罗列在这里。下面解析下其中注册值的含义: Enable : DWORD 表示今日插件是否在今日屏幕上显示,0表示不显示,1表示显示。大家可以在今日插件控制面板上更改这个值。 Order : DWORD 今日插件在今日屏幕上显示的顺序,如果值为0则显示在今日屏幕最顶部。 Selectability : DWORD
是否选中能力。如果值为0或者没有,则表示该今日插件不可选中,并且收不到任何通知。为1则表示由今日屏幕自动管理今日插件的选中,不发送通知。值为2则
今日屏幕使用今日选中API去跟踪当前项的选中,发送通知。 Type : DWORD 表示插件类型。如果值为0表示保留的插件,显示设备拥有者信息。值为1表示日程。值为2表示邮件。值为3表示任务。值为4表示用户自定义插件。 Options : DWORD 该值控制今日插件是否有一个选项对话框。0表示没有对话框。1表示有对话框。 三、怎样注册和安装今日插件
在HKEY_LOCAL_MACHINE/Software/Microsoft/Today/Items注册表项新建一个项,项名任意。 添加下面的值: Type : 4 Enabled : 1 Options : 1或0 DLL : 你的DLL的全路径名。 四、选择今日插件,如何让其高亮显示呢?
首先、注册表值,Selectability 必须为1。否则插件就处于不可选中状态。 第二、用户点击插件时,在处理WM_LBUTTONDOWN消息时,向其父窗口,即今日屏幕,发送TODAYM_TOOKSELECTION消息,以请求将选中焦点转到本插件上。 case WM_LBUTTONDOWN: ::PostMessage(::GetParent(m_hWnd), TODAYM_TOOKSELECTION, (WPARAM)m_hWnd, 0); 第三、当选中焦点成功转到本插件时,会收到WM_TODAYCUSTOM_RECEIVEDSELECTION消息。 第四、当选择焦点丢失时会收到WM_TODAYCUSTOM_LOSTSELECTION。 最后、在处理WM_EARSEBKGND时,请求父窗口绘制背景水印。绘制背景水印代码如下: TODAYM_DRAWWATERMARK twm; twm.hdc = (HDC)wParam; twm.hwnd = m_hWnd; //今日插件窗口句柄 SendMessage(::GetParent(m_hWnd), TODAYM_DRAWWATERMARK, 0, &twm);今日插件心得
InitializeCustomItem @240 NONAME
今日插件心得(转自http://eidolonlj.spaces.live.com/)
最新推荐文章于 2024-08-13 12:17:24 发布
本文介绍了Windows Mobile系统中今日插件的概念与实现方法。详细解释了今日插件的注册表配置、DLL导出函数及如何实现插件的注册、安装和高亮显示等功能。
11月12日
2794

被折叠的 条评论
为什么被折叠?



