第一个Windows CE程序
说了这么多,就让我们一起看一下你的第一个Windows CE程序吧。列表1-1显示了Hello1--为Windows CE写的一个简单的Hello World应用程序。
Listing 1-1: Hello1, 一个简单的Windows应用程序
Hello1.cpp
//======================================================================
// Hello1 - A simple application for Windows CE
//
// Written for the book Programming Windows CE
// Copyright (C) 2003 Douglas Boling
//======================================================================
#include "windows.h"
//
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow) {
printf ("Hello World\n");
return 0;
}
如您所见,除了程序入口点外,代码看上去十分类似经典的Kernighan和Ritchie版程序。在注释之后,有一行代码
#include "windows.h"
这个文件包含了一组文件,它们中定义了Windows API及其用到的结构和常量。
程序的入口点是本程序和标准C程序之间最大的差别。作为C标准入口
int main (char **argv, int argc)
的替代品,Windows CE通过标准Windows入口点[注1]
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow);
构建程序环境。
Windows CE在一些方面不同于桌面版的Windows。第1个参数,hInstance为其它应用程序指明具程序实例,也为需要验证这个EXE的Windows API函数提供了程序实例。参数hPrevInstance是从旧的Win16 API(Windows 3.1及更早的系统)遗留下来的。包括Windows CE在内的所有Win32 操作系统中,hPrevInstance 始终是0,可以忽略掉。
参数lpCmdLine指向一个Unicode字符串,包含了命令行文本。从微软Windows CE浏览器启动的应用程序没有命令行参数,但在某些情况下,例如当系统自动启动一个程序时,系统包含一个命令行参数来说明程序为什么被启动。参数lpCmdLine 是Windows CE与XP出现差异的情况之一,在Windows CE里,命令行字符串是Unicode字符串,在其它版本的Windows 里,命令行字符串总是ASCII的。
最后一个参数,nCmdShow,指明了程序主窗口的初始状态。由父进程,通常是浏览器传递这个参数到程序里。它对应用程序如何配置主窗口给出了说明。该参数可能会规定窗口最初显示成图标(SW_SHOWMINIMIZE),或者显示最大化(SW_SHOWMAXIMIZED)来覆盖整个桌面,或者显示为普通(SW_RESTORE)大小来表明窗口按标准可变大小方式显示在屏幕上。其它值规定窗口初始状态对用户不可见,或者规定窗口可见但不能成为活动窗口。在Windows CE里,这个参数的值被限制成3个状态:普通(SW_SHOW)、隐藏(SW_HIDE)和非激活显示(SW_SHOWNOACTIVATE)。除非应用程序需要强制它的窗口预先确定状态,在程序主窗口被创建后,这个值是不加修改,只是简单的传递给ShowWindow函数的。
下一行是这个应用程序唯一的功能行:
printf ("Hello World\n");
Windows CE支持大部分标准C库,包括printf,getchar等等。这一行有趣的地方在于它不像Windows CE其它任何地方,这个串不是Unicode而是ANSI。下面是对这个现象的合理解释:对于用ANSI标准编译的C标准库,printf和诸如strcpy等其它字符串库函数用的是ANSI字符串。当然,Windows CE支持这些标准函数的Unicode版,例如 wprintf, getwchar,和 wcscpy。
最后,用return 0;结束程序。
其它进程可以用Win32 API函数GetExitCodeProcess获取返回值。
构建第一个应用程序
要在你的系统上从头创建Hello1,可以启动MS eVC++,在[File]菜单上选择[新建]创建一个新工程。当看到新工程的对话框,可以明显的看到WinCE编程与标准Win32编程的变化。你有机会选择在图1-1中所显示的各种平台。对于非MFC或ATL工程,首选是WCE Pocket PC应用(用于Pocket PC)和WCE应用(用于其它Windows CE系统)。您还可以选择适当的目标CPU。例如,选择Win32(WCE MIPI)来为使用MIPS CPU的Windows CE平台编译程序。无论是何种目标设备,都要确保选择WCE模拟器。这样你就可以在用XP下的模拟器中运行例子程序了。
图1-1 平台列表使eVC++能够面向不同的Windows CE平台。
接下来,eVC++会询问您是否想创建一个空的工程、一个简单程序或者一个Hello World 应用。对本书里所有的例子,都选择空工程。这样做是为了避免代码向导向例子添加任何额外的代码。在[File]菜单选择[New],Hello1.cpp创建新文件。
当为Hello 1创建或从CD复制了合适的源文件,选择Win32(WCE x86em) Debug作为目标平台,之后build这个程序。这一步会编译源代码,如果没有编译错误的话,系统自动启动模拟器,并把EXE程序放到模拟器文件系统里,接下来你可以启动Hello1。如果你在Windows 98或Me系统下,模拟器系统能够会显示一个错误信息,因为模拟器只能在Win2000或XP下运行。
如果你有Windows CE系统,比如Pocket PC(PPC),把PPC连接到PC上,方法和同步PC的内容到PPC一样。打开微软ActiveSync,建立PPC和PC的链接。为了Windows CE设备能够运行,虽然ActiveSync链接并不是必须的,但我发现让它运行可以为开发环境和Windows CE系统之间建立一个更稳定的链接。
一但PC和Windows CE设备之间的链接成功和运行,切换回eVC++,选择合适的目标设备(如适合iPaq Pocket PC的Win32 [WCE ARM] Debug)进行编译和rebuild。和为模拟器创建程序一样,如果没有错误,eVC++自动下载编译程序到远程设备上。程序要么被放到对象存储的根目录上,要么放在\windows\start菜单目中。
运行该程序
要在嵌入式Winodows CE设备H/PC上运行Hello1,单击手持式PC的My Computer图标,找到根目录下的文件,之后双击应用程序图标启动程序。
要在Pocket PC上运行程序,从设备的Start菜单选择程序就可以了。因为eVC++已经把程序下载到\windows\start菜单所在的目录了。这种方式下,下载的应用程序自动显示在Start菜单里。
有问题?
如果在Pocket PC上点击图标或开始菜单选择Hello1程序,似乎没什么反应。在手持式PC上,程序似乎只是刷新了一下屏幕。这是因为程序启动、写到控制台并结束了。除非你从一个已经创建的控制台启动程序,否则Windows CE会在Hello1执行printf语句时,创建一个控制台窗口,并且在Hello1结束的时候自动关闭控制台。
在Pocket PC上,应用程序可以运行,但Pocket PC并不为诸如printf之类的输出提供控制台显示的功能。通过把驱动程序console.dll放到Pocket PC的Windows 目录里,可以为Pocket PC增加控制台支持。驱动程序从驱动程序接口获取输入,创建屏幕窗口,打印输出字符串。控制台启动程序可以从手持式PC和嵌入式版本的Windows CE获得。
注1:虽然从技术上可以改变入口点原型来匹配C的标准入口点,但通常不值得这么麻烦的。
分享到:
相关推荐
lazarus-1.0.8-fpc-2.6.2-cross-arm-wince-win32 freepascal 用于开发WINCE程序
Windows CE(简称WinCE)是微软公司开发的一款嵌入式操作系统,主要用于掌上设备、工业控制、汽车电子、医疗设备等领域的应用。它的设计思路是将完整的Windows桌面系统精简,形成一个轻量级、高效能、可定制的操作...
标题 "Lazarus-0.9.28.2-fpc-2.2.4-cross-arm-wince-win32" 暗示了一个用于开发针对Windows CE(掌上设备操作系统)应用程序的开源集成开发环境(IDE)——Lazarus的一个特定版本。Lazarus是Free Pascal编译器(FPC...
在本文中,我们将深入探讨Windows CE(WinCE)程序设计的关键知识点,包括其架构、开发环境、编程语言支持以及实际应用案例。 1. Windows CE 架构: Windows CE是一个模块化、可裁剪的操作系统,可以适应各种硬件...
标题 "hobd汉化版-wince" 指向的是一个专为Windows CE(Wince)操作系统汉化的HOBD软件版本。HOBD,全称是"Handy OBD-II",是一款用于汽车诊断的工具,它可以连接到车辆的OBD-II接口,读取并解析车载计算机的数据,...
.NET CF for Windows CE (Wince) 曲线控件是在嵌入式系统开发中,特别是在分析仪器行业的软件开发中常用的一种技术。这篇文章将详细介绍如何在Windows CE平台上利用C#.NET来绘制曲线,以及如何利用特定的控件进行...
Windows CE(简称Wince)是微软推出的一种嵌入式操作系统,广泛应用于掌上电脑、工业设备、汽车电子等场合。本教程将深入探讨Wince程序设计的基础与高级特性,帮助初学者快速掌握这一领域的核心技能。 一、Windows ...
《Wince程序设计 第三版》是一本深入探讨Windows CE.NET平台编程的权威指南,主要针对希望在嵌入式系统中开发应用程序的程序员。这本书详细介绍了如何利用Microsoft的嵌入式操作系统来创建高效、功能丰富的应用程序...
Qt-WinCE是Qt框架在Windows CE操作系统上的移植版本,它允许开发者使用Qt工具集创建在Windows CE设备上运行的应用程序。本文将详细介绍如何在Windows CE平台上安装和配置Qt环境,以及如何编译Qt-WinCE程序。 ### 一...
WINCE教学示例 Windowsce实例 wince学习 wince教材WINCE教学示例 Windowsce实例 wince学习 wince教材WINCE教学示例 Windowsce实例 wince学习 wince教材WINCE教学示例 Windowsce实例 wince学习 wince教材WINCE教学...
"VS2005-CoreCon-x86-WINCE600"这个安装包就是专门为Windows CE 6.00平台的开发设计的,它包含了构建、调试和测试嵌入式应用程序所需的工具和组件。 首先,"CoreCon"是Visual Studio 2005中的核心连接组件,它是...
Qt-WinCE是Qt框架在Windows CE操作系统上的移植版本,允许开发者使用Qt库创建在Windows CE设备上运行的应用程序。本文档详细介绍了如何在SAMSUNG i718+手机上搭建Qt嵌入式开发环境并安装Qt-WinCE。 1. **准备工作**...
wince程序设计中文影印版 积分要多了,不好意思,我也不知道怎么取消 一共三个压缩包,须全部下载了解压,只让传10m,没办法啊 part1 http://download.csdn.net/source/257557 part2 ...
Windows CE工具是针对微软Windows CE操作系统的一套开发和管理工具,这个名为"Windows-CE-Tools.rar"的压缩包显然包含了这些重要的工具集合,对于想要深入理解和开发基于Windows CE平台的初学者来说,是一个非常宝贵...
《WinCe程序设计第4版》是一本深入探讨Windows CE操作系统下程序开发的专业书籍,针对.wince环境提供了全面且深入的指导。Windows CE是微软公司为嵌入式设备设计的一个实时操作系统,它在各种小巧便携设备、工业控制...
PDF到Windows CE程序设计是一个涉及移动设备开发的重要主题。Windows CE是一种嵌入式操作系统,广泛应用于掌上电脑、工业设备和车载系统等。本资源提供了一本关于如何在Windows CE平台上进行程序设计的PDF电子书,这...
C# 各种文件格式的转换 ----winCE试验版 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等
在本文中,我们将深入探讨Windows CE(简称WinCE)的应用程序设计,这是一个针对嵌入式操作系统的专业知识领域。Windows CE是微软开发的一个可裁剪、实时性较强的嵌入式操作系统,广泛应用于各种智能设备,如掌上...
《WinCE_eBook》是一本专注于Windows CE开发的权威教程,涵盖了从基础知识到高级应用的全方位内容。Windows CE是一款微软公司开发的嵌入式操作系统,广泛应用于各种智能设备和工业控制系统。通过本教程,读者可以...
Windows CE 是一个高度可定制的操作系统,专为各种嵌入式设备设计。在开发过程中,选择合适的开发工具至关重要。 1. **Windows CE Platform Builder**:这是一款用于构建Windows CE操作系统映像的工具。它具有高度...