[翻译]-WinCE 程序设计 (3rd 版)--1.4 Hello2

Hello2
既然已经有了基础,那么是时候把Hello1升级一下,至少应该让人可以看见它。因为很多Windows CE系统没有控制台驱动程序,Hello2创建一个消息框而不是用printf来显示“Hello CE”文字。Hello2的程序如下表1-2所示:
列表1-2: Hello2, 使用MessageBox函数的简单应用程序

Hello2.cpp
//======================================================================
// Hello2 - 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) {
  
         MessageBox (NULL, TEXT ("Hello World"), TEXT ("Hello2"), MB_OK);
    return 0;
}

编译并运行Hello2,可以看到如图1-2所示的小窗口。

图1-2(略)
运行在Windows CE桌面的Hello2


替代printf的MessageBox函数为Hello2提供了2个特性。第一个也是最明显的一个就是它创建一个窗口,并在上面显示"Hello World"文本。第二个特性是MessageBox函数直到用户关闭消息窗口才会返回。这允许Hello2一直保持运行,直到用户关闭窗口。


MessageBox函数原型如下:
int MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
第1个参数是顶层窗口的句柄,它是消息窗口的父窗口。目前我们把这个参数置为NULL,因为Hello2还没有任何其它窗口。第2个参数是准备显示在窗口里的文字。注意传入的字符串是用TEXT宏包裹的,确保它能够编译成Unicode版本。第3个参数lpCaption是显示在窗口标题栏的文字。最后一个参数uType是一系列标志位,规定消息框如何显示在屏幕上。标志位规定了消息框中按扭的数量和类型,规定了图标的类型以及消息框窗口的风格设置。

表1-2列出了Windows CE下有效的标志位
表1-2: 默认标志位

标志位

按钮或者图标

用于按钮

 

MB_OK

OK

MB_OKCANCEL

OK and Cancel

MB_RETRYCANCEL

Retry and Cancel

MB_YESNO

Yes and No

MB_YESNOCANCEL

Yes, No, and Cancel

MB_ABORTRETRYIGNORE

Abort, Retry, and Ignore

用于图标

 

MB_ICONEXCLAMATION, MB_ICONWARNING

Exclamation point

MB_ICONINFORMATION, MB_ICONASTERISK

Lower case i within a circle

MB_ICONQUESTION

Question mark

MB_YESNO

Yes and No

MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND

Stop sign

MB_DEFBUTTON1

First button

MB_DEFBUTTON2

Second button

MB_DEFBUTTON3

Third button

For Window Styles:

 

MB_SETFOREGROUND

Bring the message box to the foreground.

MB_TOPMOST

Make the message box the topmost window.

MessageBox的返回值指出用户按了哪个按扭。返回值如下:

IDOK

OK button pressed

IDYES

Yes button pressed

IDNO

No button pressed

IDCANCEL

Cancel button pressed or Esc key pressed

IDABORT

Abort button pressed

IDRETRY

Retry button pressed

IDIGNORE

Ignore button pressed

此时值得注意的是,如果你调试和重新编译这个程序,它不会被再次下载到目标设备上的,因为程序早先的版本仍然正在目标系统上运行。换句话说,当您在eVC++中启动一个新的build时,您要确保Hello2没有运行在远程系统上,否则编译过程里的自动下载过程就会失败。如果发生这种情况,关闭应用程序,选择eVC++里[Update Remote File]菜单命令去下载新的编译后的文件。

Hello2展示了一个简单的窗口,但窗口只能按MessageBox函数允许的形式进行配置。如何显示一个完全由程序配置的窗口呢?在我们这样做之前,对Windows 应用程序如何工作的做一个快速浏览是必要的。

发布了2 篇原创文章 · 获赞 1 · 访问量 26万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章