Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
如何编写Windows CE结构的应用程序
来源:http://www.cnemb.com/   作者:
字体大小:[大][中][小]

  我选择编写的这一应用程序,虽然相对简单,但你却可以从中知道怎么去编写比较复杂的程序(比“Hello World.”复杂)。这一应用程序包括属性页和属性表,即所说的TAB控件,它含有自定义的图标和跳格符,能把参数选择保存到注册表中。

  程序开发的一个关键之处是保持和微软用户界面相一致的特性。在开发过程中我尽可能的采用了微软的应用程序的字体和布局,商业开发人员更应该为他们的Windows CE应用程序设计出优美的界面。

  类结构

  所有的代码加起来也有几千行,共分为5个文件。我选择用微软基础类库(MFC)来实现,软件也具有很好的扩展性。

  CCNETConfig:这是程序的主线程,它起动与注册表的连接,建立与CPageTab1, CPageTab2, and CPageTab3的关联,然后利用属性表生成模态对话框,CCNETConfig是独立的。

  CPropertySheet: CpropertySheet类基本上是空的,当你点击不同的标签时,MFC会处理不同的属性页,CpropertySheet也是独立的。

  CPageTab: CpageTab类包含了与各自标签相关的代码,它完成属性页上数据的保存,传递,校验。

  用户界面

  在默认状态下,Embedded Tools软件上传应用程序到\Windows\Start Menu目录下。如果你把应用程序上传到\Windows\Start Menu\Settings目录下,在文件夹中也可以找到图标,如下图所示。

  这一结构程序具有三个属性页。CPageTab1处理的是与数据更新相关的任务,CpageTab2处理参数选择相关的任务,CpageTab3传送到cnet.com的任务。

  从整体上看,程序并不是很复杂。程序员可以很容易地把代码移植到诸如无线802.11b驱动程序上。

  属性页面和其属性

  每一个类都有它的特有成员变量表,这些变量能够通过MFC’s DDX保持编译环境的设置。在每一属性页的OnInitDialog函数中都执行UpdateData(FALSE)事件,然后在OnKillActive事件中通过UpdateData(TRUE)校验并把参数保存到注册表。

  当OnKillActive事件被触发时程序就会把所有的信息保存到注册表,即使在程序发生异常的时候。而函数OnInitDialog则是对程序进行了初始化。

  通过利用资源编辑器,我建立了如图D所示的三个属性表。标题栏遵循了其他程序的设计标准,标题栏下面的文字也采用了其他程序的字体和颜色。

  字体下面的直线是采用1bit位图实现并当成一幅图片,除此之外,我还添加了检查框,静态文本框,编辑框,组合框等。

  自定义静态文本框的字体和风格

  为了获取静态文本框的合适字体,必需在CpageTab类中触发WindowProc事件,而只要发送WM_CTLCOLORSTATIC消息就可以更换静态文本框中的当前字体和字体的颜色了。

  WM_CTLCOLORSTATIC把hDC和hWnd传送到静态文本框。

  你可以看到,我使用了一个静态变量来生成字体,然后重载这一指针变量就可以更改这些字体。如果你不想改变字体,即不要重载PropertyPages中的WindowProc事件,代码的其他部分都会正常运行。

  除了要生成合适的字体外,我还注重把界面设计成具有Windows CE系统专业的水平。

  生成带有属性页的属性表

  对于以上我生成的附带属性页的属性表,你一定会迷惑这一整个过程。我只是采用了MFC向导来自动生成四个独立的类,其中一个是派生于CpropertySheet类,其他三个是派生于CpropertyPage类。在CWinApp::InitInstance事件中,我在属性表中增加了属性页。

  我还举例说明了怎么样从CPropertySheet 和 CpropertyPage而不是从CPropertySheet 和CpropertyPage派生出对象。

  我初始化了所有的变量并把页和表关联起来,之后调用DoModal事件就可以生成模态对话框。

  当InitInstance返回FALSE,MFC不再执行窗体消息循环。我可以通过使用CPropertySheet::Create()而不是使用CPropertySheet::DoModal()来生成一个非模态对话框。如果我这样做,程序就返回TRUE,窗体消息循环就会进行。如果生成一个非模态对话框而返回FALSE,就会退出消息循环。

  访问注册表

  为了保存信息到注册表中,程序必需执行CpageTab类中的OnInitDialog和OnKillActive事件。Listing C中的代码说明了这一过程。

  MFC能自动访问注册表,这一过程程序执行了GetProfileInt, GetProfileString, WriteProfileInt, 和 WriteProfileString函数。

  我采用EMbedded Tools 3.0软件中的Windows CE远程注册表编辑器来查看远距离设备上的注册表。


  将键值保存在HKEY_CURRENT_USER\Software\CNET Networks, Inc\CNETConfig\etc…

  你也应该注意到如何把关键字保存在HKEY_CURRENT_USER\Software\CNET Networks, Inc\CNETConfig\etc…下。

  当采用MFC方式时,通常程序员都要调用

  WriteProfileInt
  WriteProfileString
  GetProfileInt
  GetProfileString

  为了保存或恢复注册表中程序的原内容,下面函数要在以下位置访问注册表:

  HKEY_CURRENT_USER\Software\<company name>\<application name>\<section name>\<value name>。

  软件名称通过SetRegistryKey来设置,各个部分名称和其他一些变量可以由以上的四个函数来实现。

  Unicode(统一的字符编码标准)

  在本文中所有的代码中,你应该注意到TEXT都是在圆括号内出现的,这是因为Windows CE采用Unicode标准来编写代码。Unicode要本质上是采用每字符16位而不是每字符8位的方式。

  程序中我也采用了L””来替代TEXT(“”),这一方法显得更加方便,这也是采用了Unicode标准的字符串的原因。

  结论

  在编译器提供的功能强大的帮助文献下,我成功地编写了一个Windows CE结构应用程序,程序可以访问和保存变量到注册表。程序的代码很少,却十分牢固,高效,并具有很好的扩展性。我也花了主要精力把界面尽可能地达到标准窗口的水准,我想这些对程序员的编程经历有很大的帮助

Upload by 小刘(2007-6-29)
IC
·基于Linux的嵌入式POS的GUI..
·Linux嵌入式系统与硬件平台的关系
·基于嵌入式Linux的打印控制系统的..
·Linux下获得CPU利用率和内存使..
·擂台战:嵌入式Linux面临图形化挑..
·面向多媒体应用的嵌入式Linux实时..
·Linux系统内存磁盘初始化技术详细..
·Linux下的网络HOOK实现以及使..
·Linux系统下搭建C/C++开发的..
·移动电话挑战嵌入式Linux
·在嵌入式Linux上实现JFFS文件..
·基于嵌入式Linux系统界面的研究
·Linux的向“心”力运动
·支持基于Linux的USB设备的三种..
·基于ARM的嵌入式Linux开发平台
·主流嵌入式Linux动态扩展技术比较..
·嵌入Linux基于MiniGUI信息..
·蓝牙模块在HHARM2410上的移植
·基于Linux的嵌入式系统在测控系统..
·uClinux在嵌入式系统中的移植研..
·用busybox制作嵌入式Linux..
·基于uClinux的远程温度监控系统..
·uClinux内核移植相关代码分析
·linux驱动相关
·WinCE系统下BootLoader..
·Windows CE环境下无线网卡的..
·Windows CE中实现蓝牙串口驱..
·WinCE--嵌入式系统简介
·Windows CE OAL层的结构..
·Windows CE 软件开发入门(..
·Windows CE 软件开发入门 ..
·Windows CE 软件开发入门(..
·Windows CE开发初步教程
·使用 Windows CE .NET..
·Windows CE开发之起步停车
·基于Windows CE的嵌入式电子..
·浅谈Windows CE应用程序的可..
·Windows CE下驱动程序开发基..
·Windows CE上的声音处理
·设计和优化MicrosoftWind..
IC
推荐技术文章:
IC
IC

©2007 版权归ICGLE所有   页面执行时间:62.500毫秒