´ÙÀ½Àº ÆíÁýÇÏ´ø ¹®¼¸¦ ÆÄÀÏ·Î ÀúÀåÇØ º¸ÀÚ. 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¿¡¼ ÆÄÀÏÀÌ Á¦´ë·Î ÀúÀåµÇ¾ú´ÂÁö ¾Ë ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù.