📄 csmsread.c
字号:
smsBuf[smsDispLen]=*((char *)&asiicChar);
smsDispLen++;
}
//if(*((char *)&asiicChar+1)!=0) FldInsert(field,(char *)&asiicChar+1,1);
//if(*((char *)&asiicChar)!=0) FldInsert(field,(char *)(&asiicChar),1);
pointer+=2;
}
}
FldInsert(field,smsBuf,smsDispLen);
}//decodeing end
else
{
FldInsert(field,(char *)pointer+1,smsLen);
}
MemHandleUnlock(recordH);
}
/*
* FUNCTION: GetObjectPtr
*
* DESCRIPTION:
*
* This routine returns a pointer to an object in the current form.
*
* PARAMETERS:
*
* formId
* id of the form to display
*
* RETURNED:
* address of object as a void pointer
*/
static void * GetObjectPtr(UInt16 objectID)
{
FormType * frmP;
frmP = FrmGetActiveForm();
return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID));
}
/*
* FUNCTION: MainFormInit
*
* DESCRIPTION: This routine initializes the MainForm form.
*
* PARAMETERS:
*
* frm
* pointer to the MainForm form.
*/
static void MainFormInit(FormType *frmP)
{
const char *wizardDescription;
UInt16 fieldIndex;
//char *numStr;
//ControlType *ctl;
UInt16 mode=dmModeReadOnly;
gLibDB = DmOpenDatabaseByTypeCreator(libDBType,libCreatorID,mode);
if(gLibDB)
{
isTableExist=true;
wizardDescription="database exist 呵呵";
curRecord=0;
}
else
{
isTableExist=false;
wizardDescription="smsdb数据库不存在!!";
}
fieldIndex = FrmGetObjectIndex(frmP, textSms);
field = (FieldType *)FrmGetObjectPtr(frmP, fieldIndex);
FrmSetFocus(frmP, fieldIndex);
FldInsert(field, wizardDescription, StrLen(wizardDescription));
fieldIndex = FrmGetObjectIndex(frmP, tfPhone);
phoneField = (FieldType *)FrmGetObjectPtr(frmP, fieldIndex);
//if (phoneField)
//{
// FldDelete(phoneField, 0, 0xFFFF);
// FldDrawField(phoneField);
//}
//*
/*
ctl = GetObjectPtr(lbPosition);
numStr = CtlGetLabel(ctl);
StrIToA(numStr,maxRecord);
CtlSetLabel(ctl,numStr);
//*/
maxRecord=0;
curRecord=0;
if(isTableExist)
{
maxRecord = DmNumRecords(gLibDB);
FldDelete(field, 0, 0xFFFF);
FldDrawField(field);
curRecord = 0;
decodeRec(curRecord,false);
}
}
/*
* FUNCTION: MainFormDoCommand
*
* DESCRIPTION: This routine performs the menu command specified.
*
* PARAMETERS:
*
* command
* menu item id
*/
static Boolean MainFormDoCommand(UInt16 command)
{
Boolean handled = false;
switch (command)
{
case menuSayMore:
FrmAlert (AboutFrm);
break;
}
return handled;
}
/*
* FUNCTION: MainFormHandleEvent
*
* DESCRIPTION:
*
* This routine is the event handler for the "MainForm" of this
* application.
*
* PARAMETERS:
*
* eventP
* a pointer to an EventType structure
*
* RETURNED:
* true if the event was handled and should not be passed to
* FrmHandleEvent
*/
static Boolean MainFormHandleEvent(EventType * eventP)
{
Boolean handled = false;
FormType * frmP;
switch (eventP->eType)
{
case menuEvent:
return MainFormDoCommand(eventP->data.menu.itemID);
case frmOpenEvent:
frmP = FrmGetActiveForm();
FrmDrawForm(frmP);
MainFormInit(frmP);
handled = true;
break;
case frmUpdateEvent:
/*
* To do any custom drawing here, first call
* FrmDrawForm(), then do your drawing, and
* then set handled to true.
*/
break;
case ctlSelectEvent:
{
if(isTableExist)if (eventP->data.ctlSelect.controlID == btPrev)
{
/* The "Clear" button was hit. Clear the contents of the field. */
FieldType * field = (FieldType*)GetObjectPtr(textSms);
if (field)
{
FldDelete(field, 0, 0xFFFF);
FldDrawField(field);
}
if(isTableExist)
{
curRecord--;
if(curRecord<0)
curRecord=maxRecord-1;
decodeRec(curRecord,false);
}
break;
}
if(isTableExist)if (eventP->data.ctlSelect.controlID == btNext)
{
/* The "Clear" button was hit. Clear the contents of the field. */
FieldType * field = (FieldType*)GetObjectPtr(textSms);
if (field)
{
FldDelete(field, 0, 0xFFFF);
FldDrawField(field);
}
if(isTableExist)
{
curRecord++;
if(curRecord==maxRecord)
curRecord=0;
decodeRec(curRecord,false);
}
break;
}
if(isTableExist)if(eventP->data.ctlSelect.controlID == btDecode)
{
/* The "Clear" button was hit. Clear the contents of the field. */
FieldType * field = (FieldType*)GetObjectPtr(textSms);
if (field)
{
FldDelete(field, 0, 0xFFFF);
FldDrawField(field);
}
if(isTableExist)
{
decodeRec(curRecord,true);
}
break;
}
if(isTableExist)if(eventP->data.ctlSelect.controlID == btCopyToClip)
{
if(phoneField)
{
FldSetSelection(phoneField,0,20);
FldCopy(phoneField);
}
break;
}
break;
}
}
return handled;
}
/*
* FUNCTION: AppHandleEvent
*
* DESCRIPTION:
*
* This routine loads form resources and set the event handler for
* the form loaded.
*
* PARAMETERS:
*
* event
* a pointer to an EventType structure
*
* RETURNED:
* true if the event was handled and should not be passed
* to a higher level handler.
*/
static Boolean AppHandleEvent(EventType * eventP)
{
UInt16 formId;
FormType * frmP;
if (eventP->eType == frmLoadEvent)
{
/* Load the form resource. */
formId = eventP->data.frmLoad.formID;
frmP = FrmInitForm(formId);
FrmSetActiveForm(frmP);
/*
* Set the event handler for the form. The handler of the
* currently active form is called by FrmHandleEvent each
* time is receives an event.
*/
switch (formId)
{
case MainForm:
FrmSetEventHandler(frmP, MainFormHandleEvent);
break;
}
return true;
}
return false;
}
/*
* FUNCTION: AppEventLoop
*
* DESCRIPTION: This routine is the event loop for the application.
*/
static void AppEventLoop(void)
{
UInt16 error;
EventType event;
do
{
/* change timeout if you need periodic nilEvents */
EvtGetEvent(&event, evtWaitForever);
if (! SysHandleEvent(&event))
{
if (! MenuHandleEvent(0, &event, &error))
{
if (! AppHandleEvent(&event))
{
FrmDispatchEvent(&event);
}
}
}
} while (event.eType != appStopEvent);
}
/*
* FUNCTION: AppStart
*
* DESCRIPTION: Get the current application's preferences.
*
* RETURNED:
* errNone - if nothing went wrong
*/
static Err AppStart(void)
{
curRecMem = MemHandleNew(MAX_SMS_MEM);
return errNone;
}
/*
* FUNCTION: AppStop
*
* DESCRIPTION: Save the current state of the application.
*/
static void AppStop(void)
{
/* Close all the open forms. */
DmCloseDatabase(gLibDB);
FrmCloseAllForms();
MemHandleFree(curRecMem);
}
/*
* FUNCTION: RomVersionCompatible
*
* DESCRIPTION:
*
* This routine checks that a ROM version is meet your minimum
* requirement.
*
* PARAMETERS:
*
* requiredVersion
* minimum rom version required
* (see sysFtrNumROMVersion in SystemMgr.h for format)
*
* launchFlags
* flags that indicate if the application UI is initialized
* These flags are one of the parameters to your app's PilotMain
*
* RETURNED:
* error code or zero if ROM version is compatible
*/
static Err RomVersionCompatible(UInt32 requiredVersion, UInt16 launchFlags)
{
UInt32 romVersion;
/* See if we're on in minimum required version of the ROM or later. */
FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);
if (romVersion < requiredVersion)
{
if ((launchFlags &
(sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) ==
(sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp))
{
FrmAlert (RomIncompatibleAlert);
/* Palm OS versions before 2.0 will continuously relaunch this
* app unless we switch to another safe one. */
if (romVersion < kPalmOS20Version)
{
AppLaunchWithCommand(
sysFileCDefaultApp,
sysAppLaunchCmdNormalLaunch, NULL);
}
}
return sysErrRomIncompatible;
}
return errNone;
}
/*
* FUNCTION: PilotMain
*
* DESCRIPTION: This is the main entry point for the application.
*
* PARAMETERS:
*
* cmd
* word value specifying the launch code.
*
* cmdPB
* pointer to a structure that is associated with the launch code
*
* launchFlags
* word value providing extra information about the launch.
*
* RETURNED:
* Result of launch, errNone if all went OK
*/
UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
Err error;
error = RomVersionCompatible (ourMinVersion, launchFlags);
if (error) return (error);
switch (cmd)
{
case sysAppLaunchCmdNormalLaunch:
error = AppStart();
if (error)
return error;
/*
* start application by opening the main form
* and then entering the main event loop
*/
FrmGotoForm(MainForm);
AppEventLoop();
AppStop();
break;
}
return errNone;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -