一直对Windows Mobile开发很有兴趣。去年已经做过一个这方面的项目了,虽然自己看了很多资料,但是没有系统的学习过。现在应该还只是个入门者吧。

现在想系统的学习一番,我决定把Windows Mobile SDK中的sample都看一遍。我想这样应该能比较全面的掌握Windows Mobile的开发。

边看边写,对自己的学习成果做一个总结,也把心得体会和朋友分享。

今天看了Sample:BasicApp。我安装了wm5.0的sdk,这个程序的代码在

C:/Program Files/Windows CE Tools/wce500/Windows Mobile 5.0 Pocket PC SDK/Samples/CPP/Win32

同样是一个非常简单的小程序。这种非常简单的小程序很适合初学者,主题鲜明,不会被一些花哨的代码勾引。

程序的功能是现实一个窗口,然后在窗口里显示一幅图片和这幅图片的文字说明。点击左键菜单“Switch”,切换另一幅图片和文字说明。

windows mobile系统和windows桌面系统一样也是基于事件驱动的,系统同样会象应用程序发送很多消息。

windows 应用程序不请求来自操作系统的输入,而是由操作系统通知应用程序输入已发生。操作系统通过向应用程序窗口发送“消息”来实现对应用程序的通知,所有窗口都是“窗口类”的实例。

用户的每一个操作都会由系统向运行着的应用程序发送相应的消息, 应用程序的主要工作就是处理系统消息。每个应用程序都有自己的消息队列,以及消息处理机制。

每一个窗口同样也有自己的消息队列和消息处理机制。这些都是我对windows系统的一些机制的理解,如果有什么不对的地方还请大家指出。

让我们来看看代码实现。

只有一个cpp文件,所有内容都在这个文件中。入口函数是WinMain。看看这个程序的架构:

1.winmain函数定义。

2.创建程序窗口对象。

hwnd = CreateMainWindow(nShowCmd);

3.执行程序的消息队列。

while (GetMessage(&msg, NULL, 0, 0) > 0)

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

4.编写窗体过程函数

和winodws中的win32程序结构一样。

在创建程序窗口对象时,程序执行了如下操作:

1.构建一个窗口对象(设计窗体)。

WNDCLASS wc;

ZeroMemory(&wc, sizeof(wc));

wc.lpfnWndProc = MainWindowProc;

wc.hInstance = g_hInstance;

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

wc.lpszClassName = g_szClassName;

在注册时,我们制定了这个窗口的消息处理函数

wc.lpfnWndProc = MainWindowProc;

MainWindowProc 这个函数就是这个窗口的消息处理函数。

2.注册这个对象。

atm = RegisterClass(&wc);

3.创建窗口并显示。

hwnd = CreateWindow((LPCTSTR)atm, szTitle, WS_OVERLAPPED | WS_SYSMENU,

CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, g_hInstance, NULL);

ShowWindow(hwnd, nShowCmd);

4.在MainWindowProc消息处理函数中处理系统给这个窗口发送的消息。

这个简单的框架挺实用的。在移动设备上程序效率还是很重要的,毕竟硬件性能比不过pc。.net这样的东西还是太耗资源了,

还是win32程序效率高,对系统的可控性较好。写win32程序就离不开这个框架。

转载于:https://www.cnblogs.com/xyzlmn/archive/2010/01/22/3168307.html

学习Windows Mobile开发系列笔记(win32基本程序框架)相关推荐

  1. Windows Mobile 开发系列文章收藏 - Windows Mobile 6.x

    收集整理一些Windows Mobile 6.x开发相关文章, 文章及相关代码大部分搜集自网络,版权属于原作者! 智能手机      手机词汇      研发手机基本流程 WAP协议分析(1)     ...

  2. Windows Mobile 开发系列文章收藏 - 讨论篇

    关注Windows Mobile 应用开发, 探讨移动应用未来发展方向, 未来的手机又会是一个什么样子呢?  Windows Mobile 未来会发展成何种高度? 这些方面都值得我们去思考关注, 想了 ...

  3. windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇

    之所以分解来写,是因为在写的过程中会有些穿插的工作,希望能够尽量写的更细节一些. 上篇说的是本地存储的XML和DataSet之间的交互,现在我们来看看windows mobile 是如何与数据库进行交 ...

  4. windows mobile开发循序渐进(5)移动应用程序与webservice之间的数据交互

    上篇遗留问题: 在使用数据库方面,egmkang和瑞雪年给了不少建议,我也测试了SQLite的使用,在对SQL Server CE的查询方面,egmkang的性能方面的测试代码也运行了一遍,很感谢你们 ...

  5. Windows Mobile开发总结 01

    http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html Windows Mobile开发总结 Posted on 2009-08- ...

  6. Windows Mobile开发总结

    结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/As ...

  7. Windows Mobile 开发总结

     转载自:http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html 结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Wi ...

  8. Windows Mobile开发总结 (转帖)

    结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/As ...

  9. Windows Mobile 开发工具和资源

    经常有朋友想学习 Windows Mobile 开发,体验移动开发的乐趣,但不知道从哪里下载各种开发工具和学习资料.于是我整理了一个列表,里面包含了各个版本的 Windows Mobile SDK, ...

最新文章

  1. selenium中javascript调试
  2. DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法
  3. vue java 插件开发_实习模块vue+java小型全栈开发(三)
  4. linux系统改ip地址 永久生效,Linux修改IP永久生效
  5. Netflix如何使用机器学习来提升流媒体质量?
  6. android 监听布局改变,Android通过监听最外层布局的改变监听键盘的状态,软键盘的弹出和收起都会改变外层布局(前提是把Activity的mode设置成压缩);...
  7. 带有AWS Lambda和Java的无服务器FaaS
  8. .bam.bai的意义_业务活动监视器(BAM)2.0带来的革命
  9. 第2篇:Flowable快速工作流脚手架Jsite_配置项目
  10. Pentium M处理器架构/微架构/流水线(1) - 流水线概述
  11. 计算机和绘画的论文,浅析毕沙罗的绘画风格
  12. prettyping.sh: ping 之美
  13. 用python写一个除法的函数_2、Python基础--除法、常用数学函数
  14. Linux命令j解释之cp
  15. java ztree_ztree简介_动力节点Java学院整理
  16. linux 下 dhcp failover相关
  17. cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
  18. 企划学院第十二期游学活动“聚合”郑州站圆满落下帷幕!
  19. 如何制定项目里程碑?
  20. 将excel表格嵌入html,excel中embed的使用

热门文章

  1. 想做数据化转型,为什么必须要上企业级BI?
  2. python中函数用法教程_Python中zip()函数用法实例教程
  3. python属于哪类型的编程语言_Python是什么类型的编程语言,有什么特性
  4. openstack rocky 安装_ubuntu 18.04 安装网易云音乐
  5. 笔记本电脑如何保养_锂电池保养技术 锂电池使用注意事项 锂电池技术培训
  6. java里的foreach迭代器_java 中 for 、foreach 和 迭代器 的学习笔记
  7. C++STL中的priority——queue
  8. 在java中使用关键字导入包_java的import关键字的使用
  9. 蓝桥杯 2017年C语言组大学B组 C/C++
  10. 人脸关键点: DCNN-Deep Convolutional Network Cascade for Facial Point Detection