📄 hello.c
字号:
#include <Pilot.h>
#include "hello.h"
DmOpenRef dbRef;
static Boolean HelloFormEventHandler(EventPtr event)
{
Boolean handled = false;
switch (event->eType) {
case ctlSelectEvent:
{
UInt i;
UInt *mem;
VoidHand h;
FormPtr frm;
CharPtr str,s;
for (i=0;i<20;i++)
{
h=DmQueryRecord(dbRef, i);
mem=(UInt *)MemHandleLock(h);
str=StrIToA(s, *mem);
MemHandleUnlock(h);
frm=FrmGetActiveForm();
FrmHideObject(frm,FrmGetObjectIndex(frm,cmdLabel));
FrmCopyLabel(frm, cmdLabel, " ");
FrmShowObject(frm,FrmGetObjectIndex(frm,cmdLabel));
FrmCopyLabel(frm, cmdLabel, str);
FrmCustomAlert(cmdButton, s, s, NULL);
}
FrmCustomAlert(cmdButton, "is", "finished", NULL);
handled=true;
}
break;
case frmOpenEvent:
FrmDrawForm(FrmGetActiveForm());
{
#define CREATORID 'YUAN'
#define DBTYPE 'DATA'
#define DBNAME "MyData-YUAN"
Err err =DmCreateDatabase(0, DBNAME, CREATORID, DBTYPE, false);
if ( err != 0)
{
FrmCustomAlert(cmdButton, "IS", "NG", NULL);
if ( err == dmErrAlreadyExists)
{
FrmCustomAlert(cmdButton, "IS", "Exist", NULL);
}
}
if ( err == 0 || err == dmErrAlreadyExists)
{
UInt mode = dmModeReadWrite;
UInt at=dmMaxRecordIndex; // add to the end;
UInt i,ii;
UInt *mem;
VoidHand h;
dbRef = DmOpenDatabaseByTypeCreator(DBTYPE,CREATORID,mode);
for (i=0;i<20;i++)
{
at=0;
h=DmNewRecord(dbRef, &at, sizeof(i));
mem=(UInt *)MemHandleLock(h);
DmWrite(mem,0,&i,sizeof(i));
MemHandleUnlock(h);
DmReleaseRecord(dbRef, at, true); // clears busy bit
}
at=7;
ii=at+at;
h = DmGetRecord(dbRef, at);
mem=(UInt *)MemHandleLock(h);
DmWrite(mem,0,&ii,sizeof(ii));
MemHandleUnlock(h);
DmReleaseRecord(dbRef, at, true);
FrmCustomAlert(cmdButton, "IS", "OPEN", NULL);
}
}
handled = true;
break;
case menuEvent:
if(event->data.menu.itemID==cmdMenu_1)
SndPlaySystemSound(sndInfo);
else
SndPlaySystemSound(sndStartUp);
handled=true;
break;
}
return (handled);
}
static Boolean ApplicationHandleEvent(EventPtr event)
{
FormPtr form;
Word formID;
Boolean handled = false;
if (event->eType == frmLoadEvent) {
formID = event->data.frmLoad.formID;
form = FrmInitForm(formID);
FrmSetActiveForm(form);
switch (formID) {
case formID_hello:
FrmSetEventHandler(form, HelloFormEventHandler);
break;
}
handled = true;
}
return (handled);
}
static void StartApplication()
{
FrmGotoForm(formID_hello);
}
static void EventLoop(void)
{
short err;
int formID;
FormPtr form;
EventType event;
do {
EvtGetEvent(&event, evtWaitForever);
if (SysHandleEvent(&event)) continue;
if (MenuHandleEvent(NULL, &event, &err)) continue;
if (ApplicationHandleEvent(&event)) continue;
FrmDispatchEvent(&event);
} while (event.eType != appStopEvent);
}
static void StopApplication(void)
{
LocalID id=DmFindDatabase(0, DBNAME); // card, name
Err err1=DmCloseDatabase(dbRef);
Err err=DmDeleteDatabase(0, id);
FrmCloseAllForms();
}
DWord PilotMain (Word cmd, Ptr cmdPBP, Word launchFlags)
{
if (cmd == sysAppLaunchCmdNormalLaunch) {
StartApplication();
EventLoop();
StopApplication();
}
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -