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