Palm OS メモ (CodeWarrior)
Field, CheckBoxの使い方 FieldPtr fld; ControlPtr ctl; fld=GetObjectPtr(MainTextField); FldDelete(fld,0,2); ctl=GetObjectPtr(MainCheck1Checkbox); bool=CtlGetValue(ctl)
オブジェクトの表示・非表示 static void HideObject(UInt16 objectID){ FormPtr frmP=FrmGetActiveForm(); FrmHideObject(frmP,FrmGetObjectIndex(frmP,objectID));} static void ShowObject(UInt16 objectID){ FormPtr frmP=FrmGetActiveForm(); FrmShowObject(frmP,FrmGetObjectIndex(frmP,objectID));} 例:HideObject(MainOKButton);
メモ帳に保存する方法 static void SaveToMemopad(void){ DmOpenRef memoDB; MemHandle MemoRecordHandle; void *MemoRecordPtr; UInt16 MemoIndex=0; char MemoString[256]; //保存する文字列を入れるところ memoDB=DmOpenDatabaseByTypeCreator('DATA','memo',dmModeReadWrite); MemoRecordHandle=DmNewRecord(memoDB,&MemoIndex,StrLen(MemoString)+1); MemoRecordPtr=MemHandleLock(MemoRecordHandle); DmSet(MemoRecordPtr,0,StrLen(MemoString)+1,0); DmWrite(MemoRecordPtr,0,MemoString,StrLen(MemoString)); MemHandleUnlock(MemoRecordHandle); DmReleaseRecord(memoDB,MemoIndex,true); DmCloseDatabase(memoDB);}
グレースケールアプリケーションの対応させ方 スクリーンモードを変えればよい unsigned long depth=4; WinScreenMode(winScreenModeSet,0,0,depth,0); FtrSet(sysFtrCreator,sysFtrNumDisplayDepth,depth); 2..4階調 4..16階調
Webクリッピングで指定したURLを開く方法
static Err GoToURL(char *origurl){ Err err; char *url; DmSearchStateType searchState; UInt16 cardNo; LocalID dbID; url=MemPtrNew(StrLen(origurl)+1); if(!url)return sysErrNoFreeRAM; StrCopy(url, origurl); MemPtrSetOwner(url, 0); err = DmGetNextDatabaseByTypeCreator (true, &searchState, sysFileTApplication, sysFileCClipper, true, &cardNo, &dbID); if (err)MemPtrFree(url);else err=SysUIAppSwitch(cardNo,dbID,(UInt16)sysAppLaunchCmdGoToURL,url); return err;} と書き、 GoToURL("http://www.yyy.zzz/"); GoToURL("file:aaa.pqa/menu.html"); GoToURL("palm:Memo.appl"); などとして開く。
メモリを確保して使う方法 MemHandle bufHan; char *buf; bufHan=MemHandleNew(サイズ); buf=MemHandleLock(bufHan); //適当なコード MemPtrUnlock(buf); MemHandleFree(bufHan);
日付をフィールドに入れる方法 FieldPtr fp; DateTimeType dat; char buf[4]; TimSecondsToDateTime(TimGetSeconds(),&dat); fp=GetObjectPtr(MainYearField);StrIToA(buf,dat.year-1988);FldInsert(fp,buf,StrLen(buf)); fp=GetObjectPtr(MainMonField);StrIToA(buf,dat.month);FldInsert(fp,buf,StrLen(buf)); fp=GetObjectPtr(MainDayField);StrIToA(buf,dat.day);FldInsert(fp,buf,StrLen(buf));
フィールドに最大文字数以上入力したら、次のフィールドに移動する方法 fp=GetObjectPtr(fpre); if(FldGetTextLength(fp)==FldGetMaxChars(fp)){frmP=FrmGetActiveForm(); FldReleaseFocus(fp); FldGrabFocus(GetObjectPtr(fnext)); FrmSetFocus(frmP,FrmGetObjectIndex(frmP,fnext)); eP.eType=fldEnterEvent;FldHandleEvent(GetObjectPtr(fnext),&eP);
BACK