开发Pocket+PC+“今日”插件实战演习

开发Pocket+PC+“今日”插件实战演习

ID:37563830

大小:975.73 KB

页数:31页

时间:2019-05-25

开发Pocket+PC+“今日”插件实战演习_第1页
开发Pocket+PC+“今日”插件实战演习_第2页
开发Pocket+PC+“今日”插件实战演习_第3页
开发Pocket+PC+“今日”插件实战演习_第4页
开发Pocket+PC+“今日”插件实战演习_第5页
资源描述:

《开发Pocket+PC+“今日”插件实战演习》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、开发PocketPC"今日"插件实战演习邹建峰VisualC++MVP本次课程内容包括ò今日插件的开发¾什么是插件¾初级开发¾注册表¾初始化¾绘制¾高级开发¾不同选择性的开发¾比较代码收听本次课程需具备的条件ò熟悉C/C++及相关的Windows开发¾API¾WTL¾MFCò会使用EmbededVisualC++或VisualStudio.net2003/2005开发工具Level200今日插件Vs.HomeScreenò今日插件是在PocketPC上òHomeScreen是在Smartphone上ò不同的编程模型¾今日插件是dll¾HomeScreen是Comò本讲座针对是Pocket

2、PC上的今日插件¾开发部分只针对PocketPC¾绝大部分设计理念是相同的今日插件菜单栏今日插件今日插件软键设置今日插件今天插件的结构ò一个DLL¾导出两个函数¾InitializeCustomItem@240¾CustomOptionsDlgProc@241ò每个DLL只能有一个插件ò需要注册到今日(Shell32.exe)ò负责内容的绘制和处理用户输入插件的注册[HKLMSoftwareMicrosoftTodayItemsMyToday]Type=dword:4;自定义插件Enabled=dword:1;是否启用Options=dword:1;是否有Option对话框DL

3、L=“MyToday.dll”;DLL的路径,默认在Windows目录下Selectability=dword:2;是否可以选择(WM5.0SDK才有)Flags=dword:0Order=dword:0;初始化控件ò导入无名的函数(240)ò调用函数来初始化插件:¾检查插件有没有启用¾注册windowclass¾创建窗体,并返回HWNDCreateWindow(szClassName,NULL,WS_VISIBLE

4、WS_CHILD,0,0,GetSystemMetrics(SM_CXSCREEN),HEIGHT,hwndParent,NULL,hInstance,0);Initia

5、lizeCustomItem–代码HWNDAPIENTRYInitializeCustomItem(TODAYLISTITEM*ptli,HWNDhwndParent){if(ptli->fEnabled==0)returnNULL;//ReturnNULLifwearenotenabled.g_hInstance=ptli->hinstDLL;//Storeinstancehandleinourglobalvariable//Createourwindowclass……RegisterClass(&wc);hWnd=CreateWindow(TEXT("MyToday"),TEXT("

6、MyTodayScreen"),WS_VISIBLE

7、WS_CHILD,CW_USEDEFAULT,CW_USEDEFAULT,0,0,hwndParent,NULL,g_hInstance,NULL);g_hWndParent=hwndParent;returnhWnd;}设置今日插件的大小ò设置大小:分为两步¾WM_TODAYCUSTOM_QUERYREFRESHCACHE¾WM_SIZEò处理WM_SIZE消息¾绘制子窗体¾设置合适的布局WM_TODAYCUSTOM_QUERYREFRESHCACHEò今日插件的核心消息ò处理QUERYREFRESHCACHE消息¾该消息每2秒钟收

8、到一次,当返回TRUE,变化控件的大小¾第一次,cyp被设置为0,需要将其设置为正确的高度¾为了改变插件的大小,需要将cyp设置为Height,并返回TRUE¾今日桌面将尽可能的安排插件高度¾改变大小的代价是比较大的,因此只有必要的时候才能返回TRUE绘制今日插件òWM_ERASEBKGND¾TODAYM_DRAWWATERMARK:要求Shell来绘制整个透明背景TODAYDRAWWATERMARKINFOdwi;dwi.hwnd=hWnd;dwi.hdc=(HDC)wParam;GetClientRect(hWnd,&(dwi.rc));SendMessage(GetParent(h

9、Wnd),TODAYM_DRAWWATERMARK,0,(LPARAM)&dwi);绘制今日插件òWM_PAINTò从当前的情景中得到合适的颜色ò使用TODAYM_GETCOLOR来得到正确的颜色¾TODAYCOLOR_TEXT(0x10000004)¾TODAYCOLOR_HIGHLIGHT(0x10000022)¾TODAYCOLOR_HIGHLIGHTEDTEXT(0x10000023)BeforeAfter其他消息òWM_L

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。