上一页 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 下一页 |