WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程PlamPALM开发教程-第十二章 专业编程技巧

PALM开发教程-第十二章 专业编程技巧
作者:palmheart  来源:palmheart.net  发布时间:2005-12-21 3:39:54
它们相应的代码:About窗体,本程序的关于对话框;prefs窗体,一个用来显示优先权的对话框。在这一章我们只是在这两个窗体上添加一个OK按钮以示它们的存在。
文件Calculator.rsrc的内容添加
我们将向窗体添加一个about窗体、一个prefs窗体和一个菜单项。
1. 运行构造器并打开文件Caculator.rsrc;
2. 创建about窗体的框架,我们将拷贝calc窗体然后作一些修改;
3. 选中calc窗体;
4. 选择Edit | Copy并按下CTRL-C拷贝窗体;
5. 选择Edit | Paste并按下CTRL-V将窗体粘贴到构造器上,此时会出现一个对话框显示输入该窗体的ID;
6. 选中Unique ID;
7. 将窗体的名字改为“about”;
8. 双击打开about窗体,进入窗体属性选项;
9. 选中Save Behind,设置title为Caculator;
10. 将按钮向下移动20个象素,避免和calc窗体的按钮重合,这样就可以容易的和calc窗体进行切换。当一切完成后,about窗体应如图12-3所示:




现在创建prefs窗体。拷贝粘贴About窗体并重命名为“prefs”。将title属性改为“Caculator Preference”
将按钮位置在下移20个象素,完成后的窗体应如图12-4所示:





然后添加一个菜单栏使我们可以在两个新建窗体间切换。首先从菜单栏资源类型和列表中创建一个菜单栏并按下CTRL-K,将其命名为“calc”。选择Resource type创建一个新的菜单并按下CTRL-K,并将其命名为“options”。双击打开菜单栏,将一个菜单拖动到菜单编辑框中。将菜单命名为Options,然后按下CTRL-K添加菜单项,并命名为Preferences...,快捷键为“R”。另外一个菜单项命名为About Calculator。设计完成后,菜单栏如下图所示:




fabout.c模块
现在开始为我们新建的窗体和菜单添加代码。下面所示的是fabout.c的源代码。它包括了about窗体的事件处理函数以及这些函数的原型。因为在结构上它和fcalc.c十分相似,所以我建议将fcalc.c拷贝,在这样的基础上进行修改。最后别忘了将fabout.c保存在AppSource下面。

//////////////////////////////////////////////////////////////////////////////
// fabout.c
// Code for the "about" form.
// Copyright (c) 1999, Robert Mykland. All rights reserved.
//////////////////////////////////////////////////////////////////////////////

//////////////
// Includes //
//////////////

#include "app.h" // The definitions for this application

///////////////////////
// Global Prototypes //
///////////////////////

Boolean aboutFormEventHandler( EventPtr spEvent );

//////////////////////
// Global Functions //
//////////////////////

//----------------------------------------------------------------------------
Boolean aboutFormEventHandler(
//----------------------------------------------------------------------------
// Handles events for this form.
// Returns true if it fully handled the event.
//----------------------------------------------------------------------------
EventPtr spEvent )
//----------------------------------------------------------------------------
{
// Handle the event
switch( spEvent->eType )
{
// A control was selected
case ctlSelectEvent:

// Return to the calling form
FrmReturnToForm( 0 );
return( false );

// A menu item was selected
case menuEvent:

// Handle the menu event
aboutFormMenuEventHandler( spEvent );
return( true );
}

// We're done
return( false );
}

在aboutFormEventHandler()中,我们处理了两种类型的事件。如果一有按钮按下,那么就调用FrmReturnToForm()将控制权交给所要引用的窗体。利用这个函数,我们就可以建立一个弹出窗体,它只能由函数FrmPopupForm()引发而不能被FrmGotoForm()所调用。由于about窗体通常都是弹出窗体,所以这样做并不会影响代码的可重用性。
对于菜单事件,我们调用了函数aboutFormEventHandler()。它是我们在app.h中的一个宏定义。在头文件中给出此宏定义,就可以让我们在不同的程序中的菜单上重用此代码。
Fabout.h模块
此头文件和calc的头文件本质上是一致的,所以我们拷贝fcalc.h并将其重命名为fabout.h。将其添加到工程中并放置在AppIncludes下面。修改代码和以下所示一致:

#ifndef FABOUT_H
#define FABOUT_H
//////////////////////////////////////////////////////////////////////////////
// fabout.h
// Definitions for the "about" form.
// Copyright (c) 1999, Robert Mykland. All rights reserved.
//////////////////////////////////////////////////////////////////////////////

///////////////////////
// Global Prototypes //
///////////////////////

Boolean aboutFormEventHandler( EventPtr spEvent );

#endif // FABOUT_H

fprefs.c模块
下面是fprefs.c的源文件。目前该文件除了将“about”改为“fpref”以外,其他的全部和fabout.c相同。将fabout.c拷贝并做相应修改,并添加到AppIncludes下的Calculator工程下面。

//////////////////////////////////////////////////////////////////////////////
// fprefs.c
// Code for the "prefs" form.
// Copyright (c) 1999, Robert Mykland. All rights reserved.
//////////////////////////////////////////////////////////////////////////////

//////////////
// Includes //
//////////////

#include "app.h" // The definitions for this application

///////////////////////
// Global Prototypes //
///////////////////////

Boolean prefsFormEventHandler( EventPtr spEvent );

//////////////////////
// Global Functions //
//////////////////////

//----------------------------------------------------------------------------
Boolean prefsFormEventHandler(
//----------------------------------------------------------------------------
// Handles events for this form.
// Returns true if it fully handled the event.
//----------------------------

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码