Diff for "Kenial-PalmProgrammingDevelopDailyNotes" UserPreferences
 
Help Info Print View Search Diffs Edit
 À妽º   Ã£±â   Freeboard   Subjectless   Images   ÃÖ±Ù±Û 

Differences between version dated 2003-04-16 13:59:39 and 2024-11-23 16:19:47
Deletions are marked like this.
Additions are marked like this.

See also [PalmProgramming]

----

[[TableOfContents]]

----

==== 2002³â 11¿ù ====

delete ±¸¹®À» {{{MemPtrFree()}}} ÇÔ¼ö·Î ¹Ù²Û °Í¸¸À¸·Î ¹ö±× ¼Ò¸ê. &[...&]

 

Àú¼öÁØÀÇ Èû. ³î¶øµµ´Ù...

 

...

 

Lightweight C++ Framework for PalmOS. ÆÁ.

 

Palm ÇÁ·Î±×·¡¹Ö¿¡¼­´Â È­¸é¿¡ º¸ÀÌ´Â ¸ðµç ¸®¼Ò½º(Æû ÄÁÆ®·Ñ)¿¡ ´ëÇØ ±× ÇØ´ç ¸®¼Ò½ºÀÇ struct°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¸é Field°°Àº °æ¿ì´Â FieldTypeÀ̶ó´Â ±¸Á¶Ã¼°¡ Á¸ÀçÇÏÁö¸¸, LabelÀÇ °æ¿ì¿¡´Â LabelTypeÀ̶ó´Â ±¸Á¶Ã¼´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ´ë½Å, ControlTypeÀ̶ó°í ÇÏ´Â »óÀ§ÀÇ ±¸Á¶Ã¼°¡ Á¸ÀçÇÑ´Ù. (FieldType ±¸Á¶Ã¼µµ ÀϺδ ControlType ±¸Á¶Ã¼·Î ij½ºÆÃÇؼ­ 'ÀϺÎ'´Â »ç¿ëÇÒ ¼ö ÀÖ´Ù. Áï, ControlType ±¸Á¶Ã¼´Â FieldTypeÀÇ »óÀ§ ±¸Á¶Ã¼)

 

Lightweight C++ Framework for PalmOS(ÀÌÇÏ FW)¿¡¼­´Â Æû ÄÁÆ®·Ñ¿¡ ´ëÇØ Wrapper Ŭ·¡½º¸¦ Á¦°øÇÏ°í ÀÖ´Ù : List, Field Ŭ·¡½º°¡ Á¦°øµÇ¸ç, (ÀÌ µÎ ÄÁÆ®·ÑÀÇ ÀÌ¿ëÀÌ °¡Àå ³­ÇØÇϱ⠶§¹®ÀÎ µí) WidgetÀ̶ó´Â »óÀ§ Ŭ·¡½º¸¦ °®´Â´Ù.

 

ÇÏÁö¸¸, List, Field ÄÁÆ®·Ñ ÀÌ¿ÜÀÇ °Íµéµµ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Form Ŭ·¡½º¿¡¼­ Áö¿øÇÏ°í ÀÖ´Ù. ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î »ç¿ëÇÑ´Ù :

{{{

  // ÀÌ·± ÆûÀÌ Á¸ÀçÇÒ ¶§..

  AgentEditForm *f = (AgentEditForm*)(Application::Instance())->GetForm(AgentEditFormForm);

 

  // ÄÁÆ®·ÑÀÇ ºñÈ°¼ºÈ­

  f->EnableControl(AgentEditFormUseEncryptionCheckbox, False)

  // Label, Trigger.. µî ·¹À̺íÀÌ ÀÖ´Â ÄÁÆ®·ÑÀÇ °æ¿ì ·¹À̺íÀ» ÁöÁ¤

  f->SetLabelText(AgentEditFormPasswordSelTrigger,"--Assigned--");

  // üũ¹Ú½º Check

  f->SetCheckBox(AgentEditFormUseEncryptionCheckbox, True);

 

  ±× ¿Ü¿¡µµ HideControl(), ShowControl(), IsCheckBoxSet(), DrawControl(), SetControlLabel() µîÀÌ ÀÖ´Ù.

}}}

==== 2002³â 10¿ù ====

Graham WheelerÀÇ °æ·® C++ ÇÁ·¹ÀÓ¿öÅ© for ÆÊOS¸¦ »ç¿ëÇÏ·Á ³ë·ÂÁß.

(http://www.bradygirl.com/PalmFW/index.html Âü°íURL)

¹¹.. À¯¿ëÇϱâ´Â ÇÏ°Ú´Ù¸¸..

¾ó¸¸Å­ ¿Å°Ü¼­ »ç¿ëÇÒ ¼ö ÀÖÀ»Áö´Â. ¼ÖÁ÷È÷ Àǹ®.

 

==== 2002³â 9¿ù ====

USB to IrDA ¸ðµâÀ» ÀÌ¿ëÇؼ­ ÀÎÅÍ³Ý °¡´ÉÇØÁü.

 

You win -_-d

----

 

¾Æ¾Ç...!

Ŭ¸®¿¡ T650C´Â USB¶ó¼­¸®... ppp Á¢¼ÓÀ» ÇÒ ¼ö°¡ ¾ø´Ù.

¶§¸¶Ä§ ³ëÆ®ºÏµµ ¾ø¾î¼­ IR Åë½Å pppµµ ºÒ°¡´ÉÇÏ´Ù. -_-;

 

µµ´ëü Ŭ¸®¿¡¸¦ ¿Ö °ø¼öÇؿ°Žþß? -_-

 

...

 

Ŭ¸®¿¡ÀÇ HR(HiRes, °íÇØ»óµµ) °ü·Ã API »ç¿ë½Ã, ±âÁ¸ API¿Í ȣȯµÇ°Å³ª, ±×·¸Áö ¾ÊÀº °ÍµéÀÌ ¸¹´Ù.

 

ÇöÀç N700 ¿¡¹Ä¿¡¼­ Å×½ºÆ®ÇÑ °á°ú´Â :

 WinSetDrawWindow »ç¿ëºÒ´É - µû¶ó¼­ WinCreateOffscreenWindow()µîÀÇ ÇÔ¼ö·Î ¸¸µç °¡»ó À©µµ¿ì(Win32¿¡¼­ÀÇ MemDC¿Í ºñ½ÁÇÑ °³³ä)¿¡ ¹º°¡¸¦ ±×¸± ¼ö°¡ ¾ø±â ¶§¹®¿¡ °¡»ó À©µµ¿ì »ç¿ëµµ ºÒ°¡ÇÏ´Ù.

 È­¸é¿¡ ¹º°¡¸¦ ±×¸®´Â ÇÔ¼öÀÇ °æ¿ì¿¡´Â, ¿¹Àü ÀÏ¹Ý API¸¦ »ç¿ëÇϸé ÀúÇØ»óµµ ¸ðµå¿¡ ¸ÂÃç¼­ ±×·ÁÁø´Ù. (ȤÀº, ¿¡·¯°¡ ³­´Ù)

 

 ÇØ°á¹æ¹ý ;

{{{

ÀúÇØ»óµµ ºñÆ®¸ÊÀÇ ¼Ò½º µ¥ÀÌÅ͸¦ ÇöÀç Æû À©µµ¿ì¿¡(ºñÆ®¸Ê ¼Ò½ºÀÇ ÁÖ¼Ò°ªÀ» ¾Ë¾Æ³»¼­) Ä¥Çعö¸°´Ù.

¹®Á¦ÀÇ ¼ÒÁö°¡ ÀÖ´Â °ÍÀ¸·Î º¸ÀÌÁö¸¸, ¾ÆÁ÷±îÁö´Â Á¤»óÀûÀ¸·Î-°ÑÀ¸·Î º¸±â¿¡´Â-µ¿ÀÛÇÏ°í ÀÖ´Ù.

}}}

 

==== 2002³â 8¿ù ====

BMP »ý¼º ¹× °¡»ó À©µµ¿ì¿¡¼­ ³»¿ë ¿Å±â±â

{{{

 WinHandle hWndScreen,oldDrawWinH;

 UInt16 error;

 BmpType* pBmpScreen

 

 oldDrawWinH = WinGetDrawWindow();

 

 pBmpScreen = BmpCreate(160,160,8,NULL,&error);

 if(pBmpScreen)

 {

  hWndScreen = WinCreateBitmapWindow(pBmpScreen, &error);

  if(hWndScreen)

  {

   WinSetDrawWindow(hWndScreen);

   WinSetForeColor(BLACK);

   WinDrawLine(0,0,10,10);

   WinDrawLine(10,10,20,20);

   WinSetForeColor(WHITE);

   WinDrawLine(10,10,0,0);

   WinDrawLine(20,20,10,10);

  }

 }

 WinSetDrawWindow(oldDrawWinH); // ¿ø·¡ À©µµ¿ì ÇÚµé ¼³Á¤À¸·Î µ¹¾Æ¿È

 WinSetDrawMode(winPaint);

 

 WinDrawBitmap(pBmpScreen,0,0); // ½ÇÁ¦ ºñÆ®¸ÊÀ» ±×·ÁÁÖ´Â ÄÚµå

 

 WinDeleteWindow(hWndScreen, true);

 hWndScreen = NULL;

 delete pBmpScreen;

 pBmpScreen = NULL;

}

}}}

---

ÇöÀç ±â±âÀÇ »ç¿ëÀÚÀ̸§ ¾Ë¾Æ³»±â(HotSync½Ã ½Äº°¿ëµµ·Îµµ »ç¿ë)

{{{

 Char szUserName[32];

 DlkGetSyncInfo (NULL, NULL, NULL, szUserName, NULL, NULL);

}}}

----

¸ð´ÞÆû Á¦´ë·Î »ç¿ëÇϱâ

{{{

 FormPtr previousForm = FrmGetActiveForm();

 FormPtr frm = FrmInitForm(ID_PASSWORD);

 UInt16 hitButton;

 FieldPtr fieldPtr;

 MemHandle passwdH;

 

 FrmSetActiveForm(frm);

 FrmSetEventHandler(frm, PasswordFormHandleEvent);

 

 /* Set default password to blank */

 fieldPtr = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, ID_PASSWORD_PASSWORD));

 passwdH = MemHandleNew (maxlength);

 MemMove (MemHandleLock (passwdH), "\0", 1);

 MemHandleUnlock (passwdH);

 FldSetTextHandle (fieldPtr, (Handle)passwdH);

 FrmSetFocus(frm, FrmGetObjectIndex(frm, ID_PASSWORD_PASSWORD));

 

 hitButton = FrmDoDialog(frm);

 

 if (hitButton == ID_PASSWORD_OK)

 {

  MemSet (password, maxlength, 0);

  if ((FldGetTextPtr (fieldPtr) != NULL) && ((StrLen (FldGetTextPtr (fieldPtr)) + 1) < maxlength))

   MemMove (password, FldGetTextPtr (fieldPtr), StrLen (FldGetTextPtr (fieldPtr)) + 1);

  else

   hitButton = ID_PASSWORD_CANCEL;

 }

 

 if (previousForm)

  FrmSetActiveForm(previousForm);

 FrmDeleteForm(frm);

 

 return (hitButton == ID_PASSWORD_OK);

}}}

----

ÄÁÆ®·ÑÀ» Æû¿¡¼­ °¨Ãß±â/º¸¿©ÁÖ±â

{{{

 FrmHideObject(frmP,FrmGetObjectIndex(frmP,PreferencesNamingPortField));

 FrmShowObject(frmP,FrmGetObjectIndex(frmP,PreferencesNamingPortField));

}}}

¸î°¡Áö ¹æ¹ýÀÌ ´õ ÀÖÀ» ¼ö ÀÖÀ¸³ª, ¾î¶² ÄÁÆ®·Ñ¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ÁÁ´Ù.

 

PopTrigger¸¦ Ŭ¸¯Çؼ­ ´Ù¸¥ Çʵ带 ¼±ÅÃÇصµ, LabelÀÇ ³»¿ëÀÌ ÀÚµ¿À¸·Î ¹Ù²îÁö ¾ÊÀ¸¹Ç·Î ¹Ù²Ù´Â Äڵ带 ³Ö¾îÁà¾ß ÇÑ´Ù. popSelectEvent¸¦ ¹ÞÀÚ.

 

¸ð´Þ ÆûÀ» ¸ð´Þ¸®½ºÃ³·³ »ç¿ëÇϱâ

{{{

 ¸Þ´º, ȤÀº ¹öÆ°ÀÌ Å¬¸¯µÇ¾úÀ» ¶§ FrmGotoForm(FORM_ID)·Î ÆûÀ¸·Î À̵¿

 AppHandleEvent¿¡¼­ frmLoadEvent°¡ ¹ß»ýÇÏ°Ô µÇ¹Ç·Î, FrmInitForm, FrmSetActiveFormÀ» È£ÃâÇÑ´Ù.

 FrmSetEventHandler(frmP, PreferencesFormHandleEvent); ·Î ÇØ´ç Æû¿¡ À̺¥Æ® Çڵ鷯¸¦ ÇÒ´ç.

 ±×·± ´ÙÀ½ ƯÁ¤ ¹öÆ°ÀÇ À̺¥Æ®¿¡ FrmGotoForm(MainForm)¸¦ ÇÒ´çÇÏ°í, frmCloseEvent½Ã FrmEraseForm(frmP); FrmDeleteForm(frmP);¸¦ È£Ãâ.

 ÀÌ·¯¸é ¸Þ¸ð¸®ÀÇ ³¶ºñ¾øÀÌ(¹°·Ð ¸ÞÀÎÆûÀº °è¼Ó ¸Þ¸ð¸®¿¡ ³²¾Æ ÀÖÁö¸¸..) ´Ù¸¥ ÆûÀ» È£ÃâÇß´Ù°¡ Áö¿ï ¼ö ÀÖ´Ù.

 ¹°·Ð ¹öÆ°ÀÌ OK/Cancel»ÓÀ϶§´Â ±×³É FrmDoDialog()¸¦ ¾²´Â°Ô ÁÁ´Ù.

}}}

 

Çʵ忡 °ª ½Ø·Á³Ö±â ÃÖÁ¾ÆÇ

{{{

    FieldType* field;

    Char* dest;

    Char tempNum[5];

    Handle handle, oldHandle;

    GetObjectPtr(field, FieldID);

    oldHandle = FldGetTextHandle(field); // get the current text handle

    if(oldHandle)

    {

 FldSetTextHandle(field,NULL); // release this handle from field

 MemHandleFree(oldHandle);

    }

    StrIToA(tempNum, num);

    handle = MemHandleNew(strlen(tempNum)+1);

    dest = (Char*)MemHandleLock(handle);

 strcpy(dest, tempNum);

 MemHandleUnlock(handle);

    FldSetTextHandle(field,handle);

}}}

À§¿Í °°ÀÌ ÇÑ ´ÙÀ½, frmCloseEvent¸¦ ¹ÞÀ» ¶§ °¢ Çʵ忡 FldFreeMemory()¸¦ È£ÃâÇÑ´Ù :

{{{

   FieldType *pField;

   GetObjectPtr(pField, PreferencesNamingPortField);

   FldFreeMemory(pField);

}}}

----

sleep()Àº ÃÊ´ÜÀ§´Ù. ms°¡ ¾Æ´Ï´Ù. &[...&]

 

----

ÇԺηΠ¸®¼Ò½º À§Ä¡¸¦ ¹Ù²ÙÁö ¸»Áö¾î´Ù...

{{{

    if (eventP->eType == frmLoadEvent)

    {

        // Load the form resource.

        formId = eventP->data.frmLoad.formID;

        frmP = FrmGetFormPtr(formId);

  if (frmP == 0)

         frmP = FrmInitForm(formId);

        FrmSetActiveForm(frmP);

}}}

À§ ÄÚµå´Â ÆûÀ» ·ÎµåÇÒ ¶§ ¾²´Â °ÍÀε¥, ÀÌÀ¯¾øÀÌ FrmInitForm¿¡¼­ NULL HandleÀ̶õ ¿¡·¯°¡ »¶»¶ ³ª¸é Ʋ¸²¾øÀÌ ¸®¼Ò½º¸¦ Á¦´ë·Î ÀоîµéÀÌÁö ¸øÇÏ´Â °ÍÀ̹ǷÎ... ¸®¼Ò½º Çì´õ ÆÄÀÏÀÇ À§Ä¡°¡ Rsc Æú´õ¿¡ ÀÖ´ÂÁö È®ÀÎÇÏ°í, ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔµÈ rsrc ÆÄÀÏÀÇ °æ·Îµµ È®ÀÎÇغ»´Ù. (È÷µçÆú´õ ¾È¿¡ ÀÖ´Â°Ô ¿¬°áµÇ¾î ÀÖÀ¸¸é Á¶¶©°Å½Ã´Ù)

----

==== 2002³â 7¿ù ====

 

°³¹ßÅøÀ» CodeWarrior R8(update to 8.3)À¸·Î º¯°æÇÏ´Ù.

 

----

Áý ÄÄÅÍ´Â ÂðµûµÇ°í.. À¥¼­¹ö´Â ¸ÀÀÌ°¡°í..

Â¥ÁõÀÌ ¼Ú±¸Ä¡´Â ÇùÖÀÇ ÀÏ»ó¼Ó¿¡ -_-

 

¿¡·¯287°³¿ö´×66°³ÀǼҽºÄڵ带´«¾Õ¿¡µÐÄÚ´õÀdzú¸®¿¡Á¶¶Ç¶ó´Â´Ü¾î°¡½ºÃÄ°£´Ù.

 

ÄÚ´õ¿© ½ÅÈ­°¡ µÇ¾î¶ó.

----

 

GCC ÃÖ°íÀÇ ÀâÁú...

 

¾îÁ¦ÀÇ ±³ÈÆ - ¾öÇÏ°Ô ÇÁ·Î±×·¥ À̸§À» ¹Ù²Ù·Á´Ù°£ Á¶¶§´Â ¼ö°¡ ÀÖ´Ù :

´ÜÁö Helloworld¸¦ TelnetTest·Î ¹Ù²å´Ù°¡

ÇÁ·Î±×·¥ Å©±â°¡ 12¹è(32KB -> 390KB)·Î ´Ã¾î³ª´Â

Ȳ´çÇÑ °æÇèÀ» ÇÔ. -_-

(Âü°í·Î, PalmOS 3.5¿¡¼­, 64KB(65505) ÀÌ»óÀÇ ÄÚµå´Â ·Îµå ÀÚü°¡ ºÒ°¡´ÉÇÏ´Ù.

 ÀÌ´Â PalmOSÀÇ ÁÖ¼Ò ¸ðµ¨ÀÌ 16ºñÆ®Àε¥¼­ ±âÀÎÇÑ´Ù...)

 

----

Ä¿³Ø¼ÇÀÌ ²÷°åÀ» ¶§... Á¦´ë·Î ÀâÈ÷´Â°Ç°¡? ¹¹°¡ ¾î¶»°Ô µÈ°ÇÁö ¿ø... -_-a ;;

 

----

ÀÏ´Ü CClientSocket µé¾î°¡±ä Çߴµ¥...

½º·¹µå °ü·Ã 󸮰¡ °ñ¶§¸®´Â±º... Å«ÀÏÀÌ´Ù -_-;;

´ë°­ °íÃijõ°í ½º·¹µå ó¸® ºÎºÐÀº õõÈ÷ »ý°¢ÇغÁ¾ß°Ú´Ù...

 

...

 

ÀÏ´Ü CClientSocketÀº RFB ÇÁ·ÎÅäÄÝ °ü·Ã ºÎºÐÀÌ ¿©·¯°¡Áö·Î ÇÇ°ïÇÏ°Ô µÇ¾î ÀÖÀ¸´Ï. -_- Àá½Ã º¸·ù.

std ¶óÀ̺귯¸®¶óµµ »ç¿ë °¡´ÉÇÏ°Ô µÅ¾ß ¹» ¾îÄÉ ÇÒ ¼ö ÀÖÀ» µí.

 

CListenSocketÀº AcceptÇßÀ» ¶§...

»õ·Î¿î ¼ÒÄÏ(CClientSocket)À» »ý¼ºÇÑ ÈÄ¿¡ óÀ½ ¼ÒÄÏÀÇ ¼³Á¤À» ÇØÁÖ´Â ºÎºÐ... °ú.

¼ÒÄÏÀÇ ¸®½ºÆ®¸¦ »ý¼ºÇؼ­ °¢ ¼ÒÄÏ¿¡°Ô ½ÇÇà ½Ã°£À» ÇÒ´çÇÏ´Â ºÎºÐÀ» ¸¸µé¾î¾ß ÇÏ°Ú´Ù...

 

Áö±Ý ¾ÆÀ̵ð¾î·Î´Â, ÀÏ´Ü Ã³À½ºÎÅÍ ¸®½ºÆ®¸¦ »ý¼ºÇؼ­

¸®½ºÆ®ÀÇ Ã³À½¿¡ ±âº» ¼ÒÄÏÀ» ³Ö°í (¸®½¼À̵ç Ŭ¶óÀ̾ðÆ®µç) m_bSocketRunningÀº false »óÅ¿¡¼­

¹º°¡ ¾×¼¼½º°¡ µé¾î¿À°Å³ª, ¿¬°áÇϰųª, ±×¶§ºÎÅÍ ¼ÒÄÏÀ» Ãß°¡Çؼ­

°¢ ¼ÒÄÏ¿¡ ½ÇÇà ½Ã°£À» ÇÒ´çÇÏ´Â ºÎºÐÀ» ¸¸µé¾î¾ß ÇÒ °Í °°´Ù.

m_bEnd´Â »ç¿ëÇؾ߸¸ ÇÒ °Í °°´Ù... °á±¹.

¼ÒÄÏÀÌ ÀÛµ¿ÇÏ´ÂÁöÀÇ ¿©ºÎ¸¸À¸·Î´Â ¾ðÁ¦ ¼ÒÄÏÀ» Á׿©¾ßÇÒÁö ¾Ë ¼ö ¾øÀ¸´Ï±î.

 

ÀÚ. ÀÚ.. ÀÏ´ÜÀº ÇÁ·ÎÅäŸÀÔÀ» ¸ñÇ¥·Î.

 

----

 

 Á¤ÀÇ´Â ½Â¸®ÇÑ´Ù. [CXStreamBuffer ¿Ï¼º]

 

¾Æ·¡ ¹®Àå... ÀǵµÇÑ´ë·Î µÉ±î ¾ÈµÉ±î? ±í°Ô »ý°¢ÇغÁ¶ó. Æ÷ÀÎÅ͵µ °á±¹Àº º¯¼ö´Ù.

{{{

MoveNext(pNode);

...

void MoveNext(Node *pNode)

{ pNode = pNode->m_pNext; }

}}}

----

»ðÁú¿¡ »ðÁúÀÇ ¿¬¼Ó.

 

¿ª½Ã óÀ½¿¡ Á¦´ë·Î µ¿ÀÛÇÏ´Â ³ÑºÎÅÍ º¸°í ³ª¼­ ÇÁ·Î±×·¥À» Â¥¾ßÇÑ´Ù. -_-

 

¾î·°Å³ª, Ä¡¸íÀûÀÎ ¿¡·¯´Â Àâ¾ÒÀ¸´Ï..

¿¡·¯³µÀ»¶§ Reject ¶§·ÁÁÖ´Â ºÎºÐÀÌ ¹®Á¦°¡ µÇ´Â°Ç°¡.

 

·ÎÁ÷Àº Àú³á ¸Ô±¸ ¿Í¼­ Àâ¾Æ¾ßÁö. ¶ö¶ó¶ó... -_-;

 

----

..°á±¹Àº ¸®½ºÆ®¸¦ ¸¸µé´Ù..

 

³ëµå¿¡ ÇØ´çÇϴ Ŭ·¡½º¿Í, ¸®½ºÆ®¿¡ ÇØ´çÇϴ Ŭ·¡½º¸¦ ¸Í±Û¾ú´Ù. (CXStreamDataNode, CXObList)

³ªÁß¿¡ void*¸¦ Áö¿øÇϴ Ŭ·¡½º·Î ¸¸µé±â·Î ÇÏ°í, Áö±ÝÀº ÀÏ´Ü ±×³É ¾²±â·ÎÇصû.

 

----

ÇöÀç ÆÊ¿ë stl ¶óÀ̺귯¸®¸¦ ã´Â Áß.

... Á¤ ¾ÈµÇ¸é ListÁ¤µµ´Â ³»°¡ Á÷Á¢ ±¸ÇöÇØ¾ß ÇÒ °Í °°Àºµ¥... ¤Ñ¤Ñ

 

ÇϾÆ..

 

MSLÀ̶ó´Â ¹°°ÇÀÌ À־...

ÀÌ°É ¾²¸é ÀÏ´ÜÀº ±âº»ÀûÀÎ ¶óÀ̺귯¸®´Â »ç¿ë°¡´ÉÇѵí Çѵ¥(IOStream.h µûÀ§¶óµç°¡)

CodeWarrior¿ë ¶óÀ̺귯¸®´Ù. &[...&]

GCC¿¡¼­´Â »ç¿ëÀÌ ºÒ°¡´ÉÇÑ µí ½ÍÀ¸¹Ç·Î. ÀÏ´Ü Å»¶ô.

 

HP »êÇÏ ¿¬±¸¼Ò³ÑµéÀÌ ¸Í±Û¾ú´Ù´Â STL ¶óÀ̺귯¸®¸¦ °¡Á®´Ù°¡ ¾µ±î Çϴµ¥..

list.h¸¦ ÀÎŬ·çµåÇß´õ´Ï. ÀÌ·±.

Palm SDK¿¡ list.h¶õ À̸§À» °¡Áø Çì´õÆÄÀÏÀÌ ÀÌ¹Ì Àֱ⠶§¹®¿¡.. Ãæµ¹ÇÑ´Ù. -_-;

ÀÏ´ÜÀº À̸§ ¹Ù²ã¼­¶óµµ ÁË´Ù ÀÎŬ·çµå¸¦ Çغ¼±î ¸»±î... °í¹ÎÁß. »ðÁúÇϴ°Ű¡µû.

 

ÈÞÀÏÀÇ º¸¶÷Âù »ðÁú. -_- ¹¹ ±×·¡µµ ¾¾µð±Á°í ȸȭÅ×ÀԿűâ´Â°Ç ÇßÀ¸´Ï±î ;

 

----

¸Þ¸ð¸® ÇÚµé »ç¿ë½ÃÀÇ ÁÖÀÇÁ¡ :

PalmOS¿¡¼­ ¸Þ¸ð¸®´Â chunk¶ó´Â ´ÜÀ§·Î ÇÒ´ç¹Þ°Ô µÇ´Âµ¥, ÀÌ´Â Movable, ȤÀº Non-Movable·Î ³ª´µ°Ô µÈ´Ù.

¶ÇÇÑ, ÇÒ´ç¹ÞÀº chunk´Â lockÀ» °É¾î¾ß »ç¿ëÀÌ °¡´ÉÇÏ°í, unlockÀ¸·Î ÇØÁ¦ÇØ ÁÖ¾î¾ß

³ªÁß¿¡ free·Î chunk¸¦ OS¿¡ µÇµ¹·Á ÁÙ ¼ö ÀÖ°Ô µÈ´Ù.

{{{

Handle handle;

// 10¹ÙÀÌÆ® Å©±âÀÇ Movable chunk(=heap)ÀÇ ÇÚµéÀ» ¹ÝȯÇÑ´Ù.

handle = MemHandleNew(10); Char* szTemp;

// ÇÚµéÀÇ Lock count++(ÇÚµéÀ» Àá±Ù´Ù) ÇØ´ç ¸Þ¸ð¸® handleÀÇ Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. (Non-Movable)

szTemp = (Char*)MemHandleLock(handle);

// MemHandleUnlock(handle)µµ µÇÁö¸¸, UnlockÀ» µÎ¹øÇÏ¸é ¿¡·¯°¡ ¹ß»ýÇÑ´Ù (lock count==0À϶§´Â UnlockÇÒ ¼ö ¾ø´Ù.)

MemPtrUnlock(szTemp);

// ¸Þ¸ð¸® ÇÚµéÀ» ¹«È¿È­ÇÏ°í ÇØ´ç chunk¸¦ OS¿¡ ¹ÝȯÇÑ´Ù. MemPtrFree(szTemp)µµ °¡´ÉÇÒ±î?... ÇغÁ¶ó.

MemHandleFree(Handle);

}}}

----

¾Æ·¡ÀÇ Äڵ忡¼­ Under-locked ¿¡·¯ ÇØ°áÁß. (¿¡¹Ä¿¡¼­´Â Á¤»ó ÀÛµ¿ÇÔ...)

-> POSE¿¡¼­ ¿¡·¯ Çڵ鸵 ¿É¼ÇÀÌ ÄÑÁ®ÀÖ´ÂÁö Ç×»ó È®ÀÎ. È®ÀÎ. Á¤»ó ÀÛµ¿Çϱä. °³»ÔÀ̳ª -_-

 

{{{

////////////////////////////////////

//¼öÁ¤ ¹öÀü

        if(strlen(buffer) > 0)

        {

                FieldPtr field;

                Char* dest;

                Handle handle, oldHandle;

                field = (FieldPtr) FrmGetObjectPtr(FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), ID_MAIN_MESSAGEWINDOW));

                oldHandle = FldGetTextHandle(field); // get the current text handle

                FldSetTextHandle(field,NULL); // release this handle from field

 

                handle = MemHandleNew(strlen(buffer)+1);

                dest = (Char*)MemHandleLock(handle);

                strcpy(dest, buffer);

                FldSetTextHandle(field,handle);

                 

                FldDrawField(field);

                oldHandle = FldGetTextHandle(field); // get the current text handle

                FldSetTextHandle(field,NULL); // release this handle from field

                                 

                MemPtrUnlock(dest);

                //MemHandleUnlock(handle); Æ÷ÀÎÅÍ·Î ¹ÞÀº Non-Movable ¿µ¿ªÀ» ÇØÁ¦ÇßÀ¸¹Ç·Î, µû·Î ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

                if(oldHandle)

                {

                        MemHandleFree(oldHandle);

                }

        }

}}}

 

----

==== 2002³â 6¿ù ====

 

{{{

////////////////////////////////////////////

// ¸Þ¸ð¸® ´©Ãâ ¾øÀÌ Çʵ忡 Ãâ·ÂÇÏ´Â ·çƾ

        Char buffer[1024];

        Int16 nBufferLen;

        nBufferLen = Receive(buffer,1024);

        //////////////////////////////////////

        // ¸Þ½ÃÁöâ¿¡ Ãâ·ÂÇÏ´Â ·çƾ

        if(strlen(buffer) > 0)

        {

                FieldPtr field;

                Char* dest;

                Handle handle, oldHandle;

                field = (FieldPtr) FrmGetObjectPtr(FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), ID_MAIN_MESSAGEWINDOW));

 

                handle = MemHandleNew(strlen(buffer)+1);

                dest = (Char*)MemHandleLock(handle);

                strcpy(dest, buffer);

                 

                FldSetTextHandle(field,handle);

                                                 

                FldDrawField(field);

                oldHandle = FldGetTextHandle(field); // get the current text handle

                FldSetTextHandle(field,NULL); // release this handle from field

                                 

                MemPtrUnlock(dest);

                MemHandleUnlock(handle);

                 

                if(oldHandle)

                {

                        MemHandleFree(oldHandle);

                }

        }

}}}

----

 

ProcessEvent()ÀÇ ÀÛ¼º ¿Ï·á. select()¸¦ ÀÌ¿ëÇÑ ExceptionÀº 󸮵ÇÁö ¾ÊÀ½. (PalmOS¿¡¼­ Áö¿øÇÏÁö ¾ÊÀ½)

CClientSocket, CListenSocket, CXStreamBuffer(+CXStreamData) Ŭ·¡½ºÀÇ ÆÄÀϵé Ãß°¡, ÄÁ¹öÀü ½ÃÀÛ

 

setsockopt()·Î Non-Blocking ¸ðµå¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø´Ù.

Except for the netSocketOptSockNonBlocking option, all

options listed above have equivalents in the sockets API. The

netSocketOptSockNonBlocking option was added to this call

in the net library in order to implement the functionality of the

UNIX fcntl() control call, which can be used to turn nonblocking

mode on and off for sockets.

----

 

Palm ³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö½Ã ÁÖÀÇ»çÇ× :

  NetLib- ·Î ½ÃÀ۵Ǵ ÆÊ °íÀ¯ÀÇ API ´ë½Å, Berkeley Socket API¸¦ »ç¿ë°¡´ÉÇÏ´Ù.

  ÀÌ´Â ´Ü¼øÈ÷ ´ÙÀ½ Çì´õ ÆÄÀÏÀ» includeÇÔÀ¸·Î½á °¡´ÉÇÏ´Ù :

  #include <unix/sys_socket.h>

 

  ´ë½Å °í·ÁÇØ¾ß ÇÒ Á¡Àº, ³×Æ®¿÷ °ü·Ã Àü¿ª º¯¼ö¸¦ ¹Ì¸® ¼±¾ðÇØ¾ß ÇÑ´Ù.

  ¼±¾ðÇؾßÇÒ Àü¿ª º¯¼ö´Â ´ÙÀ½°ú °°´Ù. (°³¹ß¹®¼­³ª À§ Çì´õ ÆÄÀÏÀ» ÂüÁ¶)

{{{

// Àü¿ª º¯¼ö

Err errno;

Int32 AppNetTimeout;

Char AppINETString[16];

NetHostInfoBufType AppHostInfo;

NetServInfoBufType AppServInfo;

UInt16 AppNetRefnum;

Err h_errno;

}}}

  p.s:ÇöÀç ¸¸µé°í ÀÖ´Â {{{CXPalmSocket}}} Ŭ·¡½º´Â Berkeley Socket API¸¦ »ç¿ëÇÑ Å¿¿¡,

      Àü¿ª º¯¼ö¸¦ »ç¿ëÇÏ°í ÀÖ´Ù.

      Àü¿ª º¯¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é Ŭ·¡½º ¸â¹ö º¯¼ö·Î ¹­À» ¼öµµ ÀÖÀ» °Í °°Àºµ¥.. °ð ¼öÁ¤ÇÒ ¿¹Á¤.

 

CPalmXSocket ±âº» ¸Þ¼­µåÀÇ µ¿ÀÛ È®ÀÎ. ¾î·µç ¸Þ½ÃÁö´Â ¹ñ°í ¹Þ´Â°Ç µÈ´Ù!

 

NetLibSysFind (¸Â³ª?) -> NetLibOpen -> NetLibSocketOpen -> ... -> NetLibSocketClose -> NetLibClose

°£´ÜÇÑ ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀº À§¿Í °°Àº ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ÇÒ ¼ö ÀÖ´Ù.

(À§ÀÇ ÇÔ¼ö Áß Çϳª¶óµµ ´©¶ôµÇ¸é Á¤»óÀûÀÎ ÇÁ·Î±×·¡¹ÖÀÌ ºÒ°¡´ÉÇÏ´Ù!)

----

 

Palm ³×Æ®¿÷ ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö¿¡¼­ ´ëÀÀµÇ´Â ŸÀÔ

 

socket(int) - NetSocketRef

sockaddr(struct *void) - NetSocketAddrType

domain(int) - NetSocketAddrEnum

TCP/UDP type(int) - NetSocketTypeEnum

protocol(int) - Int16

sockaddr_in(struct *void) - NetSocketAddrINType

 

system/sys_socket.h ÆÄÀÏ¿¡ Berkeley Socket API°¡ Á¤ÀǵǾî ÀÖ´Ù.

(ÀϺδ ¿ø·¡ ÇÔ¼öÀÇ ¿øÇüÀ¸·Î µ¿ÀÛÇÏ°í, ±×·¸Áö ¾ÊÀº °Íµµ ÀÖ´Ù.)

 

CXSocket -> CPalmXSocketÀ¸·Î ÄÁ¹öÁ¯ ½ÃÀÛ.

----

 

Palm ÇÁ·Î±×·¡¹Ö¿¡¼­ »ç¿ëÇϴ ŸÀÔµé

Development Tools Guide p.383 Âü°í(Int16, UInt32.. °°Àº Çü½Ä. Çڵ鵵 Âü°í)

 

³×Æ®¿÷ °ü·Ã(Berkeley Socket API) : Palm OS Companion2.pds p.144 Âü°í

 

----

{{{

         EvtGetEvent(&e, eventTimeout); // Å¥¿¡ Á¸ÀçÇÏ´Â ´ÙÀ½ À̺¥Æ®¸¦ °¡Á®¿Â´Ù.

 

        // we capture the DateBook and PhoneBook keys to emulate

        // the second and the third mouse buttons

        passSystem = e.eType == keyDownEvent &&

                (e.data.keyDown.chr == hard1Chr ||

                 e.data.keyDown.chr == hard2Chr ||

                 e.data.keyDown.chr == hard3Chr ||

                 e.data.keyDown.chr == hard4Chr ||

                 e.data.keyDown.chr == pageUpChr ||

                 e.data.keyDown.chr == pageDownChr ||

                 e.data.keyDown.chr == vchrKeyboard ||

                 e.data.keyDown.chr == vchrKeyboardAlpha ||

                 e.data.keyDown.chr == vchrKeyboardNumeric) ;

 

        if (passSystem) {

          if (!ApplicationHandleEvent (&e))

        FrmDispatchEvent (&e);

        }

}}}

À§¿Í °°Àº Äڵ带 »ç¿ëÇÔÀ¸·Î½á DateBook, PhoneBook ¹öÆ° µîÀ» ´­·¶À» ¶§ ÇÁ·Î±×·¥À¸·Î À̺¥Æ®¸¦ µ¹¸± ¼ö ÀÖ´Ù.

¿ø·¡ À̺¥Æ®´Â ´ÙÀ½°ú °°ÀÌ Ã³¸®µÈ´Ù :

{{{

        if (!SysHandleEvent (&e))

                if (!MenuHandleEvent (NULL, &e, &err))

                        if (!ApplicationHandleEvent (&e))

                                FrmDispatchEvent (&e);

}}}

FD_ZERO, FD_SET ¸ÅÅ©·ÎÀÇ ¿ëµµ´Â?

 

ÇöÀç Ç¥½ÃÁßÀÎ È­¸éÀ» ³ªÅ¸³»´Â ±¸Á¶Ã¼ :

{{{

/* defines boudaries of the Pilot viewport */

typedef struct {

  rfbRectangle desktop; // Dimensions of unscaled desktop

  unsigned short scaleFactor; // Scale factor for current viewport

  rfbRectangle viewable; // what is visible

  rfbRectangle virtual; // what is in the off-screen window

  rfbRectangle remote; // what is on the server side

  rfbRectangle zoomarea; // specified zoom coordinates

  Boolean zoomarea_ena; // Use specified zoom coordinates

} PRFBViewport;

 

 

NetLibSend ; Purpose Send data to a socket from a single buffer.

Int16 NetLibSend (UInt16 libRefNum, NetSocketRef socket, void *bufP, UInt16 bufLen,

UInt16 flags, void *toAddrP, UInt16 toLen, Int32 timeout, Err *errP)

-> libRefNum Reference number of the net library.

-> socket Descriptor for the open socket.

-> bufP Pointer to data to write.

-> bufLen Length of data to write

-> flags One or more netIOFlagxxx flags. See ¡°I/O Flags.¡±

-> toAddrP Address to send to (a pointer to a NetSocketAddrType), or 0.

-> toLen Size of toAddrP buffer.

-> timeout Maximum timeout in system ticks; -1 means wait forever.

<- errP Contains an error code if the return value is -1.

 

Returns the number of bytes successfully sent. Returns 0 if the

socket has been shut down by the remote host. If the return value is

-1, an error has occurred, and errP contains one of the following

values:

0 No error.

netErrTimeout Call timed out.

netErrNotOpen The referenced net library has not been opened

yet.

netErrParamErr

netErrSocketNotOpen

netErrMessageTooBig

netErrSocketNotConnected

netErrSocketClosedByRemote

netErrIPCantFragment

netErrIPNoRoute

netErrIPNoSrc

netErrIPNoDst

netErrIPktOverflow

netErrOutOfCmdBlocks

netErrOutOfPackets

netErrInterfaceNotFound

netErrInterfaceDown

netErrUnreachableDest

netErrNoMultiPktAddr

netErrWouldBlock

 

Sockets Equivalent

int sendto (int socket, const void *bufP,

int bufLen, int flags, const void *toAddrP,

int toLen);

int send (int socket, const void *bufP,

int bufLen, int flags);

int write (int socket, const void *bufP,

int bufLen,);

 

Comments

This call attempts to write data to the specified socket and returns

the number of bytes actually sent, which may be less than or equal

to the requested number of bytes. The data is passed in a single

buffer that bufP points to.

For datagram sockets, you must only send a single packet at a time.

If the data is too large to fit in a single UDP packet (1536 bytes), no

data is sent and -1 is returned.

The toAddrP field applies only to datagram sockets without an

existing connection. An error is returned if the datagram socket was

previously connected and toAddrP is specified. Stream-based

sockets, by definition, must have a connection established with a

remote host before data can be written. Raw sockets (supported in

Palm OS version 3.0 and higher) must construct the entire IP header,

including the destination address, before data can be sent; thus, the

address is taken from the data to be sent.

If there isn¡¯t enough buffer space to send any data, this call will

block until there is enough buffer space, or until a timeout.

 

NOTE: For stream-based sockets, this call may write only a

portion of the desired data. It always returns the number of bytes

actually written. Consequently, the caller should be prepared to

call this routine repeatedly until the desired number of bytes have

been written, or until it returns 0 or -1.

}}}

----

 

 void FrmSetEventHandler (FormType *formP, FormEventHandlerType *handler)

ƯÁ¤ Æû¿¡ ´ëÇØ À̺¥Æ® Çڵ鷯 ÄÝ¹é ·çƾÀ» ¼³Á¤ÇÑ´Ù.

formP ; Pointer to the form object (FormType structure).

handler ; Address of the form event handler function, FormEventHandler.

 

ÆûÀÌ ¿©·¯°³ÀÏ ¶§¿¡ À̺¥Æ® ÇÚµéÀ» ÇÒ´çÇÏ´Â ¹æ½Ä ;

  (EventLoop() ¿¡¼­) ApplicationHandleEvent(EventPtr)À» È£ÃâÇÑ µÚ,

{{{

        if (e->eType == frmLoadEvent)

        {

                formId = e->data.frmLoad.formID;

                frm = FrmInitForm (formId);

                FrmSetActiveForm (frm);

 

                switch(formId)

                {

                        case ID_MAIN:

                                FrmSetEventHandler(frm, MainFormHandleEvent);

                                break;

                                ...

}}}

  À§¿Í °°Àº ±¸¹®À¸·Î ÇöÀç ·ÎµåµÈ ÆûÀ» ½Äº°(frmLoadEvent), Æû¿¡ ´ëÇÑ À̺¥Æ® Çڵ鷯 Äݹé ÇÔ¼ö

MainFormHandleEvent¸¦ ÇÒ´çÇÑ´Ù. ¸¸¾à ³Ñ°Ü¹ÞÀº formID°¡ ¸í½ÃµÈ °ÍÀÌ ¾Æ´Ò °æ¿ì(frmOpenEvent,

frmLoadEvent¸¦ »ç¿ëÇÏ´Â °æ¿ì µî..) frmDispatchEvent·Î À̺¥Æ®¸¦ ÇöÀç ÆûÀÇ À̺¥Æ® Çڵ鷯¿¡

³Ñ°ÜÁØ´Ù.

----

 

RGB °ü·Ã/ÆÈ·¹Æ®, Ä÷¯ À©µµ¿ì ½Ã½ºÅÛ¿¡ °ü·ÃµÈ °ÍÀº 3.5 À̻󿡼­ »ç¿ë °¡´É.

 

Err WinPalette (UInt8 operation, Int16 startIndex, UInt16 paletteEntries, RGBColorType *tableP)

ÇöÀçÀÇ À©µµ¿ì ÆÈ·¹Æ®¸¦ ¼³Á¤/°¡Á®¿À°Å³ª µðÆúÆ® °ª ¼³Á¤ÇÏ´Â ¸í·É(V3.5 ÀÌ»ó)

 

SysLibFind ; ½Ã½ºÅÛ¿¡ ÀÌ¹Ì ·ÎµåµÇ¾î ÀÖ´Â ¶óÀ̺귯¸®¸¦ ãÀ½. ´ëºÎºÐÀÇ ¶óÀ̺귯¸®(NetLib,Serial,IR)Àº

¸®¼ÂµÇ¸é ÀÚµ¿À¸·Î ·ÎµåµÇ±â ¶§¹®¿¡, ±âŸ ¶óÀ̺귯¸®´Â SysLibLoad¸¦ »ç¿ëÇؼ­ ·ÎµåÇÑ ÈÄ »ç¿ëÇÑ´Ù.

{{{

typedef struct RectangleType {

  PointType topLeft;

  PointType extent;

} RectangleType;

}}}

; CRect¿Í ºñ½ÁÇϳª extent.x/y ·Î width/heightÀ» ³ªÅ¸³»´Â°Ô ´Ù¸£´Ù.

 

DmOpenRef DmOpenDatabaseByTypeCreator(UInt32 type, UInt32 creator, UInt16 mode)

ÇÁ·Î±×·¥ÀÌ ±¸µ¿µÉ ¶§ ÇÊ¿äÇÑ »çÀüÁ¤º¸¸¦ °¡Á®¿À´Â ±â´ÉÀ¸·Î »ç¿ë. (V3.5 ÀÌ»ó)

 

  if (e->eType == frmLoadEvent)

  {

    formId = e->data.frmLoad.formID;

À̺¥Æ®°¡ ÀϾÀ»¶§, unionÀÎ data ±¸Á¶Ã¼¿¡¼­ ÇØ´ç À̺¥Æ®¿¡ ¾Ë¸ÂÀº ±¸Á¶Ã¼¸¦ °¡Á®¿Â´Ù. (Áö±Ý °æ¿ì´Â frmLoadEvent)

----

 

Programming Palm OS in a Nutshell

Why Programming for Palm OS Is Different

È­¸é Å©±â ; Åë»óÀûÀ¸·Î 160x160 Å©±â°¡ Áö¿øµÈ´Ù.

ºü¸¥ ¹ÝÀÀ¿¡ ´ëÇÑ ±â´ë ; º¸Åë ÆÊ À¯Àú´Â ÇÏ·ç¿¡ 15~20¹ø ÆÊ ¾ÖÇø®ÄÉÀ̼ÇÀ» º¸Åë ¼ö½ÊÃÊ µ¿¾È ½ÇÇàÇÑ´Ù.

PC¿ÍÀÇ ¿¬°á¼º ; PC-PalmÀÇ ¿¬°á ¼ö´ÜÀÎ Conduit ÇÁ·Î±×·¥ÀÌ Á¸ÀçÇÑ´Ù.

ÀÔ·Â ¹æ¹ý ; Graffiti

Àü¿ø ; ÇÁ·Î¼¼½Ì ÆÄ¿öÀÇ Á¦¾à

¸Þ¸ð¸® ; °¡´ÉÇÏ´Ù¸é, Èü ¸Þ¸ð¸®-¼Óµµ-ÄÚµå »çÀÌÁîÀÇ ¼øÀ¸·Î ÃÖÀûÈ­Çϴ°ÍÀÌ ÁÁ´Ù.

ÆÄÀÏ ½Ã½ºÅÛ ; PalmOS´Â record¶ó ºÒ¸®°í, database·Î Á¶Á÷µÇ´Â ¸Þ¸ð¸® ûũ¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù.

ÇÏÀ§ ȣȯ¼º

 

Palm OS Programming Concepts ; ÆÊ ÇÁ·Î±×·¥Àº º¸Åë ½Ì±Û½º·¹µåÀÇ À̺¥Æ® µå¸®ºì ÇÁ·Î±×·¥ÀÌ´Ù.

¸ðµç ÇÁ·Î±×·¥Àº ½ÇÇàµÉ ¶§ Launch code¸¦ ÀÎÀÚ·Î °®°í, ÇØ´ç ÇÁ·Î±×·¥ÀÇ PilotMainÀ» È£ÃâÇÑ´Ù.

PalmOS´Â À̺¥Æ®±â¹ÝÀÇ ¿î¿µÃ¼Á¦ÀÌ´Ù. ¸ðµç ÇÁ·Î±×·¥Àº À̺¥Æ® ·çÇÁ¸¦ °¡Áö³ª, ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù.

À¯Àú ÀÎÅÍÆäÀ̽º´Â formµé·Î ±¸¼ºµÇ¸ç, UI´Â ¹Ì¸® Á¤ÀÇµÈ UI ¿ä¼Ò, ȤÀº »ç¿ëÀÚ Á¤ÀÇ UI ¿ä¼Ò¸¦ °¡Áú ¼ö ÀÖ´Ù.

¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥Àº ½Ã½ºÅÛ¿¡¼­ Á¦°øÇÏ´Â µ¥ÀÌÅÍ °ü¸® ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.

PalmOS¿¡¼­ Á¦°øÇÏ´Â ¸î¸î °ü¸®ÀÚµéÀ» »ç¿ëÇؼ­ ¿øÇÏ´Â ±â´ÉÀ» ±¸ÇöÇ϶ó. Ç¥ÁØ ANSI C ¶óÀ̺귯¸®´Â PalmOS¿¡¼­ »ç¿ëÇÒ ¼ö´Â ÀÖÀ¸³ª, Å« ½ÇÇà ÆÄÀÏÀ» ¸¸µé°Ô µÈ´Ù.

 

Programming Tools

The CodeWarrior Debugger handles source-level debugging. You can use it with an application running on the Palm OS device, or you can use it in conjunction with one of the other debugging tools below.

The Palm OS Emulator (POSE) tests your application on the desktop computer before downloading it onto the device.

On the Macintosh, you can build a Simulator version of your application to test it. This is a standalone Mac OS application that runs your Palm OS application on a Macintosh computer.

The Palm Debugger is an assembly-level tool. You can also use it to enter commands directly to the Palm device.

 

Where to Go From Here

Palm OS Companion.pdf

The rest of this book provides details on how to implement common application features using the Palm OS SDK. If you¡¯re new to Palm OS programming, you need to read the next three chapters to learn the principles of Palm OS application and UI design, how to implement the main function, and how to implement the standard event loop. The remaining chapters you can read on an as-needed basis.

Example applications

The actual source code for the applications on the Palm OS device is included as examples on your SDK CD. The code can be a valuable aid when you develop your own program. The software development kit provides a royalty-free license that permits you to use any or all of the source code from the examples in your application.

Palm OS Programming Development Tools Guide

The Palm OS Programming Development Tools Guide provides more details on using the tools to debug programs. (You might also be interested in the ¡°Debugging Strategies¡±chapter in this book, which describes programmatic debugging solutions.)

Palm OS Programmer¡¯s API Reference

The reference book provides the details on all of the public data structures and API calls.

Conduit Development Kits and documentation

If you need to write a conduit for your application, see the documentation provided with the Conduit Development Kits.

----

==== 2002³â 5¿ù ====

 

Visual C++¿¡¼­ÀÇ ÆÊ ÄÚµå ÄÚµù

 

GCC ±â¹ÝÀ¸·Î Win32 ȯ°æ¿¡¼­ ÆÊ ÇÁ·Î±×·¡¹ÖÀ» Çϸé... ¼ÖÁ÷È÷ ·¹ÆÛ·±½º º¸±â°¡ ±ÍÂú´Ù. ÀÔ·ÂÀÌ Á¦´ë·Î µÈ°ÇÁö ¾Æ´ÑÁöµµ ¸ð¸£°Ú°í. ±×·² °æ¿ì ¾Æ·¡ ¹æ¹ýÀ» »ç¿ëÇØ º¸ÀÚ :

Visual Assist¸¦ ¼³Ä¡ÇÑ ÈÄ, Visual C++À» ¶ç¿î´Ù. Tools -> Options ¸Þ´º¿¡¼­ Directories Ç׸ñ¿¡¼­ Show directories for: ¸¦ Include files·Î ¼±ÅÃÇÏ°í, C:\PALMDEV\SDK-3.5\INCLUDE, C:\PALMDEV\SDK-3.5\INCLUDE\CORE, C:\PALMDEV\SDK-3.5\INCLUDE\CORE\HARDWARE, C:\PALMDEV\SDK-3.5\INCLUDE\CORE\SYSTEM, C:\PALMDEV\SDK-3.5\INCLUDE\CORE\UI µîÀ» Ãß°¡ÇÑ´Ù. (¼³Ä¡ÇÑ sdkÀÇ ¹öÀü¿¡ µû¶ó, ȤÀº µµ±¸ÀÇ ±¸¼º¿¡ µû¶ó °æ·Î´Â ´Þ¶óÁú ¼ö ÀÖ°Ú´Ù)

¿©ÀüÈ÷ ºÒÆíÇÏ´Ù¸é ÇÒ ¼ö ¾øÁö¸¸, ÃÖ¼ÒÇÑ ÇÔ¼ö À̸§À» Ʋ¸®°Ô ÀÔ·ÂÇÑ °Í °°Àº »ç¼ÒÇÑ ¿¡·¯´Â ½±°Ô ÀâÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.

----

 

Palm¿¡¼­ÀÇ ÄÄÆÄÀÏ

 

m68k-palmos-gcc -palmos3.5 -g

 

´ç¿¬ÇÑ À̾߱âÁö¸¸, »óÀ§ ¹öÀüÀ¸·ÎÀÇ È£È¯¼ºÀº À־ ÇÏÀ§ ¹öÀüÀ¸·ÎÀÇ È£È¯¼ºÀº ¾ø´Ù. °¡´ÉÇÏ¸é ³·Àº ¹öÀüÀÇ sdk·Î ÄÄÆÄÀÏÇÑ´Ù.

----

[ÇÁ·Î±×·¡¹ÖºÐ·ù] [ÀϱâºÐ·ù]


PythonPowered ShowText of this page
EditText of this page
FindPage by browsing, searching, or an index
Or try one of these actions: DeletePage, DeleteUploadedFile, LikePages, SpellCheck, UploadFile