您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 嵌入式开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

Palm应用软件结构探讨
2002-02-09· ·中文··yesky

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


  一个简单的软件“软件的结构”

  在被深入到更复杂的程序之前,我们不妨先创建一个小而简单的软件,这也是一个通过实际的创作过程熟悉程序的好办法。首先,在我们开始编写代码之前,我们讨论一下这个小软件的工作原理。之后,我们将一步一步开始我们的编程工作,并且指出其中的重要元素。

  软件的基本功能

  我们的“软件的结构”软件将在屏幕上显示“软件的结构”字样,然后提供一个按钮。点击这个按钮将显示一个消息框如图,点击上面的“OK”按钮就可以关闭它。这里有两个菜单,每一个菜单拥有几个菜单命令。因为这是一个非常简单的程序,因此当用户点击每一个菜单命令时,只会发出不同的提示音。


图 点击按钮后出现的对话框


图 程序的两个菜单

  “软件的结构”软件的源代码

  现在,您对这个软件做什么心里有数了。下面是实现那些功能的源代码。当您看完它们,我们再往下讨论。

#include file://在SDK3.5中只需声明PalmOS.h即可
#include "StarterRsc.h"


/**************************************************************/
static Boolean MainFormHandleEvent(EventPtr eventP)
{
Boolean handled = false;
FormPtr frmP;

switch(eventP->eType)
{
case frmOpenEvent:
frmP = FrmGetActiveForm();
FrmDrawForm ( frmP);
handled = true;
break;

case ctlSelectEvent:
FrmAlert( HelloAlert );
handled = true;
break;

case menuEvent:
switch( eventP->data.menu.itemID )
{
case SoundInfo:
SndPlaySystemSound( sndInfo );
handled = true;
break;

case SoundWarning:
SndPlaySystemSound( sndWarning );
handled = true;
break;

case SoundError:
SndPlaySystemSound( sndError );
handled = true;
break;

case SoundStartUP:
SndPlaySystemSound( sndStartUp );
handled = true;
break;

case SoundConfimation:
SndPlaySystemSound( sndConfirmation );
handled = true;
break;

case SoundClick:
SndPlaySystemSound( sndClick );
handled = true;
break;
}
break;

default:
break;

}

return handled;
}


/**************************************************************/
static Boolean AppHandleEvent( EventPtr eventP )
{
UInt16 formId;
FormPtr frmP;

if ( eventP->eType == frmLoadEvent )
{
formId = eventP->data.frmLoad.formID;
frmP = FrmInitForm( formId );
FrmSetActiveForm( frmP );

switch( formId )
{
case MainForm:
FrmSetEventHandler( frmP, MainFormHandleEvent );
break;

default:
break;
}

return true;
}

return false;
}


/**************************************************************/
static void AppEventLoop( void )
{
UInt16 error;
EventType event;

do
{
EvtGetEvent( &event, evtWaitForever );

if ( !SysHandleEvent( &event ) )
if ( !MenuHandleEvent( 0, &event, &error ) )
if ( !AppHandleEvent( &event ) )
FrmDispatchEvent( &event );

} while( event.eType != appStopEvent );
}


/**************************************************************/
static void AppStop( void )
{
FrmCloseAllForms();
}


/**************************************************************/
static Err AppStart( void )
{
FrmGotoForm( MainForm );
return 0;
}


/**************************************************************/
UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
Err error;

switch( cmd )
{
case sysAppLaunchCmdNormalLaunch:
error = AppStart();
if( error ) return error;

AppEventLoop();
AppStop();
break;

default:
break;
}

return errNone;
}

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

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 从Palm到Pocket PC
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!