⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hello.c

📁 CD_PALM程序设计入门
💻 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 + -