PPC Today界面的开发心得

   这两天为解决PPC Today界面的显示问题着实费了不少脑筋。主要有三个问题:
   1. 点击条目后高亮显示,点击其他条目后取消高亮显示问题。
   2. 按上下键选择条目后,条目不高亮显示的问题。
   3. 由于Today界面中的条目字体大小是按照系统设置的,是可变的,因此就遇到一个获取系统字体大小的问题。

   前两个问题的高亮显示,是依靠标志位来绘制的,获取到条目被选中后,就置标志位为TRUE,否则置为FALSE,然后会进行重绘。重绘时,依靠标志位来判断是否需要高亮绘制条目。获取条目的颜色使用的是TODAYM_GETCOLOR消息,通过发送这个消息,可以获取条目的普通和高亮的颜色。

   关于按上下键选择。MSDN Online上说,会触发WM_TODAYCUSTOM_USERNAVIGATION事件。但是,我在做时,并没有触发该事件。后来发现,该事件的触发条件与TODAYLISTITEM中的dwSelectability设置有关,具体可参照http://www.codeguru.com/cpp/w-p/ce/pocketpc/article.php/c9269__1/。具体做法是在WM_TODAYCUSTOM_QUERYREFRESHCACHE事件中截获TODAYLISTITEM结构体,并将其中的dwSelectability设置为2。TODAYLISTITEM的参数意义见下表:
Value Name and Type Description
DWORD: Type Custom Items must have Type = 4
DWORD: Enabled 0 or 1; 1 causes Today panel to show your component; nevertheless, the user can control it via the Today applet in the Control Panel
DWORD: Options if equals 1, the "Options" button in the Today applet will be enabled
SZ: DLL Pull path to your component
DWORD : Selectability New feature in Win Mobile 2003 SE; allows receiving additional notifications
Values are used as follows:
  • 0 or does not exist—component cannot be selected at all
  • 1—selections are manages automatically. In other words, your component will receive messages like WM_LBUTTONXXX
  • 2—the Today screen will send notification messages to your component when the user sets/releases focus or presses navigation keys

   对于上下键选择,需要注意的是,处理完WM_TODAYCUSTOM_USERNAVIGATION事件后,需要返回FALSE,以使系统进行其他操作,否则,再按上下键就不会上下移动。

   关于字体大小的设置,处理源代码如下:
 1LOGFONT lf;
 2memset(&lf,0,sizeof(LOGFONT));
 3int iFontSizePixel;
 4SHGetUIMetrics(SHUIM_FONTSIZE_PIXEL,&iFontSizePixel, sizeof(iFontSizePixel), NULL);
 5lf.lfHeight = -iFontSizePixel;
 6HFONT hNewFont = CreateFontIndirect(&lf);
 7HGDIOBJ hOldFont = SelectObject(hdc, hNewFont);
 8 
 9DrawText(hdc , theApp.m_strBarText , theApp.m_strBarText.GetLength() , 
10            &rect , DT_VCENTER | DT_LEFT | DT_INTERNAL);

   Selectability参数被设置为2后,需要处理WM_TODAYCUSTOM_ACTION消息,来启动程序。

posted on 2007-07-13 17:43 迷宫の未来 阅读(1011) 评论(9)  编辑 收藏 引用

评论

# re: PPC Today界面的开发心得 2007-10-22 17:09 GG

楼主写的不错。
不过,我觉得,干嘛一定要把dwSelectability设为2,自己来处理选中焦点事件呢?把他设置为1,交给系统去处理得了。我目前就是这么做的,效果也差不多。就是选中的时候,字的颜色,不太好处理。也就是,在选中的时候,文字的颜色,有时候不变,有时候要取反色。不知道楼主对文字的颜色是怎么处理的?  回复  更多评论   

# re: PPC Today界面的开发心得 2007-10-23 11:08 周辉

@GG
把dwSelectability设为2就是为了解决按上下键选择条目时的未反色问题。关于反色及字体颜色问题,MOBILE5.0和MOBILE6.0系统的做法是不同的,在MOBILE6中设置不同的主题对应选中的反色后字体颜色是不同的,MOBILE5好像就没有这中设置。  回复  更多评论   

# re: PPC Today界面的开发心得 2007-12-20 10:20 cohere

我最近也在研究today界面的,希望和LZ多多交流,
我的MSN:wangguolai@tom.com  回复  更多评论   

# re: PPC Today界面的开发心得 2008-01-20 22:38 西煞魄工人

谢谢LZ  回复  更多评论   

# re: PPC Today界面的开发心得 2008-03-12 11:21 cohere

字体的大小怎么改变啊?

wangguolai@tom.com   回复  更多评论   

# re: PPC Today界面的开发心得 2008-03-12 11:29 cohere

字体的大小怎么变大呢?

wangguolai@tom.com   回复  更多评论   

# re: PPC Today界面的开发心得 2008-03-20 15:47 追梦时代

@cohere
字体大小是在系统设置中设置主题字体大小的,程序中没法设置  回复  更多评论   

# re: PPC Today界面的开发心得[未登录] 2008-08-07 14:48 stone

如何提高today界面的 刷新速度啊?  回复  更多评论   

# re: PPC Today界面的开发心得 2010-09-20 18:36 adler

我设置的是1。

case WM_LBUTTONDOWN:

::PostMessage(::GetParent(m_hWnd), TODAYM_TOOKSELECTION, (WPARAM)m_hWnd, 0);

可就是收不到WM_TODAYCUSTOM_USERNAVIGATION消息,

为什么呢?
MSN:adler0518@live.cn  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(10)

随笔档案

文章档案

最新随笔

搜索

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜