¶ó.ÆÄÀÏ ÀúÀå

´ÙÀ½Àº ÆíÁýÇÏ´ø ¹®¼­¸¦ ÆÄÀÏ·Î ÀúÀåÇØ º¸ÀÚ. ApiDrawÀÇ ¹®¼­´Â µµÇüÀÇ ÁýÇÕÀÎ arObj ¹è¿­À̹ǷΠÀÌ ¹è¿­¸¸ ÆÄÀÏ·Î ±×´ë·Î ÀúÀåÇÏ¸é µÈ´Ù. ¾î¶² ¹æ½ÄÀ» »ç¿ëÇÏ´ø ÀúÀåµÈ ÆÄÀϷκÎÅÍ ¿ø·¡ÀÇ ¹è¿­¸¸ ¸¸µé ¼ö ÀÖ´Ù¸é Á¦´ë·Î ÀúÀåÇÑ °ÍÀÌ´Ù. ¹è¿­ ¾Õ¿¡´Â ¸ÅÁ÷ ³Ñ¹ö, ¹öÀü, µµÇüÀÇ °³¼ö µî¿¡ ´ëÇÑ °£·«ÇÑ Á¤º¸¸¦ °¡Áö´Â Çì´õ°¡ »ðÀԵǴµ¥ Çì´õ ±¸Á¶Ã¼¸¦ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù. °¡Àå ±âº»ÀûÀÎ ÆÄÀÏ Çì´õ ¸ð¾çÀÌ´Ù.

 

struct FileHeader

{

   TCHAR szHeader[32];

   int version;

   int arNum;

};

 

ApiDraw ¹®¼­ ¼±µÎ¿¡ ÀÌ Çì´õ¸¦ ÀÛ¼ºÇÏ¿© °ú¿¬ ApiDrawÀÇ ¹®¼­ ÆÄÀÏÀÌ ¸Â´ÂÁö, ÀÐÀ» ¼ö ÀÖ´Â ¹öÀüÀÎÁö, µµÇüÀÇ °³¼ö´Â ¸î °³ÀÎÁö µî¿¡ ´ëÇÑ ±âº»ÀûÀÎ Á¤º¸¸¦ ÀúÀåÇÒ °ÍÀÌ´Ù. ÀúÀå µ¿ÀÛÀº ÆÄÀÏÀÇ À̸§À» ¾î¶»°Ô Ãë±ÞÇÒ °ÍÀΰ¡¿¡ µû¶ó ¸î °³ÀÇ ÇÔ¼ö·Î ³ª´©¾îÁ® ÀÖ´Ù.

SaveToFile ÇÔ¼ö´Â ÁöÁ¤ÇÑ À̸§ÀÇ ÆÄÀÏ·Î ÀúÀåÇϸç SaveAs´Â »ç¿ëÀÚ¿¡°Ô ÆÄÀϸíÀ» ¹°¾î º¸µµ·Ï Çϸç Save´Â ÆíÁý ¹®¼­°¡ À̸§À» °¡Áö´Â°¡ ¾Æ´Ñ°¡¿¡ µû¶ó ÀûÀýÇÑ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. »ç¿ëÀÚ´Â ÆÄÀÏÀÇ À̸§ÀÌ ÀÖ°Ç ¾ø°Ç Save ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù. ÇÊ¿äÇÑ ÆÇ´Ü°ú ÇÔ¼ö È£ÃâÀº Save°¡ ´ã´çÇÑ´Ù.

 

BOOL Save()

{

   if (lstrcmp(NowFile,"À̸§¾øÀ½")==0) {

      return SaveAs();

   } else {

      return SaveToFile(NowFile);

   }

}

 

BOOL SaveAs()

{

   OPENFILENAME OFN;

   TCHAR lpstrFile[MAX_PATH]="";

 

   memset(&OFN, 0, sizeof(OPENFILENAME));

   OFN.lStructSize = sizeof(OPENFILENAME);

   OFN.hwndOwner=hWndMain;

   OFN.lpstrFilter="ApiDrawFile(*.adr)\0*.adr\0Every File(*.*)\0*.*\0";

   OFN.lpstrFile=lpstrFile;

   OFN.nMaxFile=256;

   OFN.lpstrDefExt="adr";

   if (GetSaveFileName(&OFN)==FALSE) {

      return FALSE;

   }

   ChangeCaption(OFN.lpstrFile);

   return SaveToFile(NowFile);

}

 

BOOL SaveToFile(TCHAR *Path)

{

   FileHeader Header;

   HANDLE hFile;

   DWORD dwWritten;

   int idx;

 

   hFile=CreateFile(Path,GENERIC_WRITE,0,NULL,

      CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

   if (hFile==INVALID_HANDLE_VALUE) {

      return FALSE;

   }

 

   strcpy(Header.szHeader,"ApiDraw File");

   Header.version=100;

   Header.arNum=arNum;

   WriteFile(hFile,&Header,sizeof(Header),&dwWritten,NULL);

 

   for (idx=0;idx<arNum;idx++) {

      WriteFile(hFile,arObj[idx],sizeof(DObject),&dwWritten,NULL);

      if (arObj[idx]->Type >= DT_TEXT && arObj[idx]->Type <= DT_META) {

          WriteFile(hFile,arObj[idx]->Text,arObj[idx]->Len,&dwWritten,NULL);

      }

   }

 

   CloseHandle(hFile);

   bModified=FALSE;

   return TRUE;

}

 

½ÇÁ¦·Î ApiDraw ¹®¼­¸¦ ÀúÀåÇÏ´Â ÇÔ¼ö´Â SaveToFile ÇÔ¼öÀÌ´Ù. Àμö·Î Àü´ÞµÈ °æ·Î¿¡ ÆÄÀÏÀ» »ý¼ºÇϰí Çì´õ¸¦ ¸ÕÀú Ãâ·ÂÇÑ ÈÄ arObj ¹è¿­À» ¼ø¼­´ë·Î ÆÄÀÏ·Î Ãâ·ÂÇÑ´Ù. ´Ü¼ø µµÇüÀÇ °æ¿ì´Â DObject ±¸Á¶Ã¼¸¸ ÀúÀåÇÏ¸é µÇÁö¸¸ ÅØ½ºÆ®, ºñÆ®¸Ê, ¸ÞŸ °´Ã¼´Â Text Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â °÷ÀÇ ³»¿ëµµ °°ÀÌ Ãâ·ÂÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÅØ½ºÆ®¿¡ ¾î¶² ¹®ÀÚ¿­ÀÌ ÀÖ¾ú´ÂÁö, ºñÆ®¸Ê ÆÄÀÏÀÇ ±×¸²Àº ¾î¶² °ÍÀÎÁö¸¦ ¾Ë ¼ö ¾øÀ» °ÍÀÌ´Ù. ÆÄÀÏÀ» ÀúÀåÇßÀ¸¸é bModified´Â FALSE°¡ µÇ¾î ÆíÁýµÇÁö ¾ÊÀº »óŰ¡ µÈ´Ù.

SaveAs´Â ÆÄÀÏ ÀúÀå °øÅë ´ëÈ­»óÀÚ¸¦ ¿­¾î »ç¿ëÀÚ¿¡°Ô ÀúÀåÇÒ ÆÄÀϸíÀ» ¹°¾î º¸°í »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ À̸§À¸·Î SaveToFileÀ» È£ÃâÇÑ´Ù. µðÆúÆ® È®ÀåÀÚ¸¦ adr·Î ÁöÁ¤ÇÏ¿© »ç¿ëÀÚ°¡ º°µµÀÇ È®ÀåÀÚ¸¦ ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é adr È®ÀåÀÚ¸¦ »ç¿ëÇϵµ·Ï Çß´Ù. Save ÇÔ¼ö´Â ÇöÀç ÆíÁýÇϰí ÀÖ´Â ¹®¼­°¡ À̸§ÀÌ ÀÖÀ¸¸é SaveToFileÀ» ¹Ù·Î È£ÃâÇÏ°í ±×·¸Áö ¾Ê´Ù¸é SaveAs¸¦ È£ÃâÇÏ¿© À̸§ºÎÅÍ ÀԷ¹޵µ·Ï ÇÑ´Ù. ÆÄÀÏÀ» ÀúÀåÇÏ´Â ¸ðµç ÇÔ¼öµéÀº ¼º°ø ¿©ºÎ¸¦ ¸®ÅÏÇÏ¿© ConfirmSave¿¡¼­ ÆÄÀÏÀÌ Á¦´ë·Î ÀúÀåµÇ¾ú´ÂÁö ¾Ë ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù.