Windows Mobile Incoming Call View Custom

来源:互联网 发布:中英等宽字体windows 编辑:程序博客网 时间:2024/05/17 05:14

Incoming call view custom of Windows Mobile PhoneCanvas

 

关于WinMobile电话自定义, 在SDK Documents里已经有说明 "Phone Canvas Customization"

位置: Shell, GWES, and User Interface > Shell > Shell OS Design Development >

Sample Code: ../WM650/PUBLIC/APPS/OAK/SAMPLES

1. Customizing Controls in the Phone Canvas

Shell > Shell OS Design Development > Phone Canvas Customization >

添加注册表, 告诉MSFT的程序说我们要自定义电话,  并说明要加载哪个DLL文件.

2. PHExtGetPhoneViewInfo 函数.  通过它, 可以调用自己自定义的对话框,

Shell > Shell OS Design Development > Phone Canvas Customization > 这里有说明哪些电话对框可以充许自定义

下面关于PHExtGetPhoneViewInfo的例子:
 

 

这样当有电话进来的时候, 就会调用CalertWndProc,  和调用dwIDD_CALERT_XXX资源对话框了. 我做的是整个来电对话框自己Draw上相关的来电信息,还有接听/挂断按钮,添加菜单等. 没用dwIDD_CALERT_XXX资源对话框, 所以没有试过不用HOOK, 只换Caler资源对框来自定义的情况, 不过文档上说是可以的...

3. 来电时会调用CalertWndProc, 这里要添加一些小小的处理. 这个CallBack里的hWnd是最底层的(用Remote SPY 可以看得到), 所以要用两次GetParent来取得MSFT显示的来电对话框的handle, 将其它Move出显示区域,并对它进行SetWindowLong.

 

4. IncomingCallWndProc 处理. SHBM_SHOW(用Remote SPY 可以看得到)这个就是来电BubbleBox, Show/Hide时的消息

 

上面第3步和第4步是之前自己跟出来, 但这样做会有问题. 就是设置PIN码锁之后, 无法显示来电对话框.

还是因为文档没查仔细的原因, 其实MSFT里文档已经有custom来电的处理方法了. 这样上面的第3,第4步就可以合为以下:

New 3. 通过Phone Canvas Messages来处理

Shell OS Design Development > Phone Canvas Customization > Phone Canvas Reference >

 

不过调用自己的来电时, CreateWindow的话要注意

 

 

如果Window已经Create过了,就要SetWindowPos一下

   
好了, 这样当锁住的时候, 来电同样也可以弹出来了 :-<

OK, 这样当来电的时候就显示自定义的窗口了...
关于来电防火墙的处理嘛,就应该更简单了:-<

关于来电话定义的东西比较多, 这里我先写点对来电对话框自定义显示的小结, 等有时间再写其它的.

发表于 @ 2009年12月31日 09:43:00 | 评论( 5 ) | 编辑| 举报| 收藏

旧一篇:How sign the code by own certificate and install the certificate on device. | 新一篇:Override VK_TTALK & VK_TEND

查看最新精华文章 请访问博客首页相关文章

匿名用户 发表于2010年2月3日 12:00:42  IP:举报回复
hi 我现在正遇到一些lock状态的问题,怎么把创建好的window显示在最前面,看了你的文章,调用了SetWindowPos 但是没有效果,而setwindowlong是可以实现,但是menubar却没有反映,menubar 也 使用setwindowlong修改了WS_EX_ABOVESTARTUP 类型,menubar在左右物理按键是有响应的,触摸屏没有响应,不知道你有没有这方面的经验能解决该问题,非常感谢!
ice520301 发表于2010年2月5日 15:13:54  IP:举报回复
我在6.5上新建了一个新的工程试过了,只要在窗口Create的时候用 CreateWindowEx(WS_EX_ABOVESTARTUP | WS_EX_TOPMOST 显示出来的时候用 SetWindowPos(m_hWnd, HWND_TOPMOST, 0, g_MainWnd.m_nTaskBarHeight, nCxScreen, nCyScreen-2*g_MainWnd.m_nTaskBarHeight, SWP_STARTUP | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW); 这样即使是Locked也能弹出这个窗口的, 你是什么情况啊?
匿名用户 发表于2010年3月1日 21:38:11  IP:举报回复
Hi! Could you, pliz, email me "phcanvas.h" file? I need it very-very much. Email: Adam.Jones.J@gmail.com (Adam.Jones.J at gmail.com) Wolud be great appreciated! Thanks a lot. Alexander.
ice520301 发表于2010年3月3日 16:14:27  IP:举报回复
Had sent the phcanvas.h to you, please check it.
匿名用户 发表于2010年3月8日 11:40:42  IP:举报回复
Hi! 能否也给我发一下"phcanvas.h"和那个oak的例程,非常感谢!我的邮箱是mingzon@gmail.com