³ª. HTTP ¿­±â

·ÎÄà ³×Æ®¿öÅ© Áö¿øÀº °øÂ¥·Î Áö¿ø ¹ÞÀ» ¼ö ÀÖÀ¸¹Ç·Î ÄÚµùÀ» ÇÒ ÇÊ¿ä°¡ ¾ø°í ±×·³ ÀÌÁ¦ Á» ´õ ³ÐÀº ¼¼»óÀ¸·Î ³ª°¡ º¸µµ·Ï ÇÏÀÚ. ¿ÜºÎ ³×Æ®¿öÅ©¸¦ ÅëÇØ ÆÄÀÏÀ» ÁÖ°í ¹ÞÀ» ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝ¿¡´Â ´ëÇ¥ÀûÀ¸·Î FTP°¡ ÀÖ°í HTTPµµ ÆÄÀÏÀ» ÀÐÀ» ¼ö´Â ÀÖ´Ù. ÀÌ µÎ ÇÁ·ÎÅäÄÝ·Î ¿ø°ÝÁöÀÇ ÆÄÀÏÀ» ÆíÁýÇÏ´Â ±â´ÉÀ» ÀÛ¼ºÇغ¸µµ·Ï ÇÏÀÚ.

FTP °°Àº ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ» Á¦´ë·Î ÇÁ·Î±×·¡¹ÖÇÏ·Á¸é ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀ» ÇØ¾ß ÇÑ´Ù. ±×·¯³ª ÀÌ´Â ³Ê¹« ¾î·Æ°í ±ÍÂúÀº ÀÏÀÌ¶ó ¿©±â¼­´Â À©µµ¿ìÁî°¡ Á¦°øÇÏ´Â WinInet °í¼öÁØ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© ³×Æ®¿öÅ© ÀÔÃâ·ÂÀ» Çϱâ·Î ÇÑ´Ù. WinInet¿¡ °üÇÑ »çÇ×Àº API Á¤º¹ 43Àå¿¡ ÀÖÀ¸¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù. HTTP·Î ÆÄÀÏÀ» ÀÐÀ¸·Á¸é ¸ÕÀú ´ë»ó ÆÄÀÏÀÇ Á¤È®ÇÑ À§Ä¡¸¦ ÀÔ·Â¹Þ¾Æ¾ß ÇÑ´Ù. ´Ü¼øÇÑ ¹®ÀÚ¿­ ÀÔ·Â ´ëÈ­»óÀÚ·Î URLÀ» ÀԷ¹ޱ⸸ ÇÏ¸é µÈ´Ù. ÀÌ ´ëÈ­»óÀÚ´Â ¸®¼Ò½º¿¡ ´ÙÀ½°ú °°ÀÌ ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Ù.

´Ù¿î·Îµå¸¸ ¹ÞÀ» ¼ö ÀÖÀ¸¸ç ´ë¼Ò¹®ÀÚ ±¸ºÐÀÌ Á¤È®ÇØ¾ß ÇÑ´Ù´Â ¾È³» ¸Þ½ÃÁö¸¦ ´ëÈ­»óÀÚ¿¡ Ç¥½ÃÇسõ¾Ò´Ù. À¥ ÀÚü´Â ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏÁö ¾ÊÁö¸¸ À¯´Ð½º(¸®´ª½º Æ÷ÇÔ) °è¿­ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϱ⠶§¹®¿¡ ½ÇÁ¦ Æú´õ, ÆÄÀϸí°ú Á¤È®È÷ °°°Ô Àû¾î¾ß ÇÑ´Ù. HTTP ÇÁ·ÎÅäÄÝÀº Æú´õ ¿­°Å ±â´ÉÀ» Á¦°øÇÏÁö ¾Ê±â ¶§¹®¿¡(Áö¿øÇÏ´Â À¥ ¼­¹öµµ ÀÖ´Ù) ã¾Æº¸±â ±â´ÉÀº »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç »ç¿ëÀÚ°¡ URLÀ» Á÷Á¢ ±â¾ïÇؼ­ ÀÔ·ÂÇØ¾ß ÇÑ´Ù. ÀÌ ´ëÈ­»óÀÚÀÇ ÇÁ·Î½ÃÀú¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.

 

BOOL CALLBACK DGHttpProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     static TCHAR *Path;

 

     switch(iMessage)

     {

     case WM_INITDIALOG:

          MoveToParentCenter(hDlg);

          SetDlgItemText(hDlg,IDC_HTTPFILE,"http://");

          MySetImeMode(GetDlgItem(hDlg,IDC_HTTPFILE),FALSE);

          Path=(TCHAR *)lParam;

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam))

          {

          case IDOK:

              GetDlgItemText(hDlg,IDC_HTTPFILE,Path,MAX_PATH);

              EndDialog(hDlg,IDOK);

              return TRUE;

          case IDCANCEL:

              EndDialog(hDlg,IDCANCEL);

              return TRUE;

          }

          return FALSE;

     }

     return FALSE;

}

 

URLÀ» ÀÔ·Â¹Þ¾Æ lParamÀ¸·Î Àü´ÞµÈ ¹öÆÛ¿¡ ³Ö¾î ¸®ÅÏÇÏ´Â ±â´É¹Û¿¡ ¾ø´Ù. ÆÄÀÏ¿­±â °øÅë ´ëÈ­»óÀÚ°¡ ÆÄÀÏÀÇ À̸§À» ¾ò¾îÁֱ⸸ ÇÏ´Â °Í°ú ¸¶Âù°¡Áö´Ù. OnCommand¿¡¼­´Â ÀÌ ´ëÈ­»óÀÚ¸¦ ÅëÇØ URLÀ» ÀԷ¹ްí ÆÄÀÏÀ» ¿¬´Ù.

 

void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     ....

     case IDM_FILE_HTTPOPEN:

          if (DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_HTTP),

              g_hFrameWnd, DGHttpProc,(LPARAM)Path)==IDOK) {

              if (lstrlen(Path)) {

                   OpenFromFile(Path);

              }

          }

          break;

 

URLÀ» ÀԷ¹ÞÀ¸¸é OpenFromFile ÇÔ¼ö·Î URLÀ» ³Ñ°Ü ÁØ´Ù. ³×Æ®¿öÅ©¿¡¼­ ÆÄÀÏÀ» ¿©´Â °Í°ú ·ÎÄÿ¡¼­ ÆÄÀÏÀ» ¿©´Â °ÍÀ» µ¿ÀÏÇÑ ÇÔ¼ö¿¡¼­ ¼öÇàÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é Àá½Ã ÈÄ¿¡ ÀÛ¼ºÇÒ ÇÁ·ÎÁ§Æ® ±â´ÉÀÌ º¹ÀâÇØÁö¸ç ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â MRU ±â´Éµµ ¼Õ»óµÈ´Ù. ÆÄÀÏÀ» ÀÔÃâ·ÂÇÏ´Â ¹æ¹ý¿¡ ÀÏ°ü¼ºÀÌ ÀÖ¾î¾ß °ü·Ã ·çƾµéÀÌ ÆÄÀÏÀÇ Á¾·ù¿¡ »ó°ü¾øÀÌ ÆÄÀÏÀ» °ü¸®ÇÒ ¼ö ÀÖ´Ù.

HTTP ÆÄÀÏÀ» Àд ÀÛ¾÷Àº OpenFromFile°ú ±×ÀÇ Á¹º´ ÇÔ¼öÀÎ OpenFileToChild ÇÔ¼ö°¡ Á÷Á¢ ó¸®ÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Ç쵂 ÄÚµå Ãß°¡»Ó¸¸ ¾Æ´Ï¶ó ÀüüÀûÀÎ ¼ø¼­°¡ ¹Ù²î¾î¾ß ÇÑ´Ù.

 

BOOL OpenFileToChild(HWND hChild, TCHAR *Path)

{

     SInfo *pSi;

     HANDLE hFile;

     DWORD dwRead,dwSize;

     TCHAR *TextBuf;

 

     pSi=(SInfo *)GetWindowLong(hChild,0);

 

     SelectParser(pSi->Ae,Path);

     pSi->Ae.InitDoc();

 

    if (strnicmp(Path,"http",4) == 0) {

        dwSize=DgHttpDown(Path,TextBuf);

        if (dwSize==-1) {

           return FALSE;

        }

    } else {

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

              OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

          if (hFile==INVALID_HANDLE_VALUE) {

              return FALSE;

          }

          dwSize=GetFileSize(hFile,NULL);

          if (dwSize > 30*1048576) {

              if (MessageBox(g_hFrameWnd, "ÀÌ ÆÄÀÏÀÇ Å©±â´Â 30M°¡ ³Ñ½À´Ï´Ù. Á¤¸»·Î ¿©½Ã°Ú½À´Ï±î?",

                   "Áú¹®",MB_YESNO)==IDNO) {

                   CloseHandle(hFile);

                   return FALSE;

              }

          }

          TextBuf=(TCHAR *)malloc(dwSize+2);

          ReadFile(hFile,TextBuf,dwSize,&dwRead,NULL);

          TextBuf[dwRead]=0;

          TextBuf[dwRead+1]=0;

          CloseHandle(hFile);

    }

     pSi->Ae.SetText(TextBuf,dwSize);  

     free(TextBuf);

 

     pSi->Ae.SetModified(FALSE);

     lstrcpy(pSi->NowFile,Path);

     SetWindowText(hChild,Path);

 

     return TRUE;

}

 

Àμö·Î Àü´ÞµÈ PathÀÇ Ã¹ 4±ÛÀÚ°¡ http·Î ½ÃÀ۵Ǹé ÀÌ ÆÄÀÏÀº HTTP ¼­¹ö¿¡ ÀÖÀ¸¹Ç·Î ´Ù¿î·Îµå¹Þ¾Æ¼­ ¿­µµ·Ï Çß´Ù. ÆÄÀÏ ÀÚü¸¦ ´Ù¿î·Îµå¹Þ´Â °ÍÀÌ ¾Æ´Ï¶ó ÆÄÀÏÀÇ ³»¿ëÀ» ¹öÆÛ·Î ÀоîµéÀ̵µ·Ï ÇßÀ¸¸ç ´Ù¿î·ÎµåµÈ ÅؽºÆ®¸¦ ApiEdit¿¡ Àü´ÞÇÏ¿´´Ù. ´ÙÀ½ ÇÔ¼ö´Â HTTP ¼­¹ö¿¡¼­ ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ¾Æ ¹öÆÛ¿¡ º¹»çÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ´Ù¿î·Îµå °úÁ¤À» º¸¿©ÁÖ°í Áß°£¿¡ Ãë¼ÒÇÒ ¼ö ÀÖµµ·Ï Çϴµ¥ ÀÌ ±â´ÉÀº º°µµÀÇ ´ëÈ­»óÀÚ°¡ ó¸®ÇϹǷΠÀá½Ã ÈÄ µû·Î ¾Ë¾Æ º¸ÀÚ.

 

int DgHttpDown(TCHAR *URL, TCHAR *&Text)

{

     HINTERNET hInternet, hURL;

     int len,extra;

     TCHAR *p;

     DWORD Size;

     DWORD dwRead, TotalRead;

     int toff;

     BOOL Result=FALSE;

     MSG msg;

     TCHAR Mes[400];

     HWND hDlgDown;

 

     bContDown=TRUE;

     hDlgDown=CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DOWNLOAD),

          g_hFrameWnd, (DLGPROC)DGDownProc);

     SetDlgItemText(hDlgDown,IDC_STDOWN1,"ÀÎÅÍ³Ý Á¢¼ÓÁß...");

     SetWindowText(hDlgDown,"HTTP ´Ù¿î·Îµå");

     ShowWindow(hDlgDown,SW_SHOW);

     UpdateWindow(hDlgDown);

     EnableWindow(g_hFrameWnd, FALSE);

 

     hInternet=InternetOpen("Dangeun", INTERNET_OPEN_TYPE_PRECONFIG,

          NULL, NULL, 0);

     if (hInternet == NULL) {

          MessageBox(g_hFrameWnd, "ÀÎÅͳݿ¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù","¾Ë¸²",MB_OK);

          goto NetFail;

     }

 

     hURL=InternetOpenUrl(hInternet,URL,NULL,0,INTERNET_FLAG_RELOAD,0);

     if (hURL==NULL) {

          MessageBox(g_hFrameWnd, "URLÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù","¾Ë¸²",MB_OK);

          goto EndDown;

     }

     wsprintf(Mes,"À§Ä¡ : %s",URL);

     SetDlgItemText(hDlgDown,IDC_STDOWN1,Mes);

 

     len=10000;

     extra=10000;

     Text=(TCHAR *)malloc(len);

     memset(Text,0,len);

     p=Text;

     TotalRead=0;

 

     do {

          InternetQueryDataAvailable(hURL,&Size,0,0);

          if (extra < int(Size+2)) {

              len+=(Size+2+10000);

              extra+=(Size+2+10000);

              toff=p-Text;

              Text=(TCHAR *)realloc(Text,len);

              memset(Text+len-(Size+2+10000),0,(Size+2+10000));

              p=Text+toff;

          }

          Result=InternetReadFile(hURL,p,Size,&dwRead);

          if (Result==FALSE) {

              MessageBox(g_hFrameWnd, "HTTP ¼­¹öÀÇ ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù","¾Ë¸²",MB_OK);

              break;

          }

          if (bContDown==FALSE) {

              break;

          }

          p+=dwRead;

          TotalRead+=dwRead;

          extra-=dwRead;

          SendMessage(hDlgDown,WM_USER+1,(WPARAM)TotalRead,(LPARAM)-1);

          while (PeekMessage(&msg, NULL,0,0,PM_REMOVE)) {

              if (!IsDialogMessage(hDlgDown, &msg)) {

                   TranslateMessage(&msg);

                   DispatchMessage(&msg);

              }

          }

     } while (dwRead != 0);

 

     InternetCloseHandle(hURL);

EndDown:

     InternetCloseHandle(hInternet);

NetFail:

     EnableWindow(g_hFrameWnd, TRUE);

     DestroyWindow(hDlgDown);

     if (Result == TRUE && bContDown == TRUE) {

          return TotalRead;

     } else {

          return -1;

     }

}

 

¿ø°ÝÁö¿¡ ÀÖ´Â ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ¾Æ¾ß ÇϹǷΠÀÎÅͳݿ¡ ¸ÕÀú Á¢¼Ó ÇÑ´Ù. ÀÌ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é ÄÄÇ»ÅÍ°¡ ³×Æ®¿öÅ©¿¡ Á¢¼ÓµÇ¾î ÀÖ¾î¾ß Çϸç Á¢¼Ó¿¡ ½ÇÆÐÇϸé ÆÄÀÏÀ» ´Ù¿î·Îµå¹ÞÀ» ¼ö ¾ø´Ù. ¿¡·¯ ¹ß»ý½Ã ¿¡·¯ Äڵ带 ¸®ÅÏÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÀÌ ÇÔ¼ö°¡ Á÷Á¢ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϵµ·Ï Çߴµ¥ OpenFromFileÀ̳ª OpenFileToChild ÇÔ¼öµéÀÌ ³×Æ®¿öÅ© ¿¡·¯±îÁö ó¸®Çϱâ´Â Èûµé±â ¶§¹®ÀÌ´Ù.

ÀÎÅͳݿ¡ ¹«»çÈ÷ Á¢¼ÓÇßÀ¸¸é ÆÄÀÏÀ» ¿­°í ÆÄÀÏÀ» Àбâ À§ÇÑ ¹öÆÛ¸¦ ÇÒ´çÇÑ´Ù. ¿ø°ÝÁö¿¡ ÀÖ´Â ÆÄÀÏÀÇ Å©±â¸¦ ¹Ì¸® ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ ÀÏ´Ü 10KB¸¦ ÇÒ´çÇسõ°í Àд Áß¿¡ ¼­¹ö°¡ ¿ä±¸ÇÏ´Â ¸¸Å­ ÀçÇÒ´çÇϵµ·Ï Çß´Ù. È£Ãâ¿ø¿¡¼­ ¹Ì¸® ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÌ ÇÔ¼ö°¡ ÆÄÀÏÀÇ Å©±â¸¦ ½Ç½Ã°£À¸·Î Á¶»çÇÏ¿© ÇÊ¿äÇÑ ¸¸Å­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖ´Ù. ±×·¡¼­ TextÀμö´Â Æ÷ÀÎÅÍÀÇ ·¹ÆÛ·±½º·Î Àü´Þ¹Þ´Â´Ù.

ÆÄÀÏÀ» ¿ÏÀüÈ÷ ´Ù¿î·Îµå¹Þ¾ÒÀ¸¸é ÀÎÅÍ³Ý Á¢¼ÓÀ» ÇØÁ¦ÇÏ°í ¸®ÅÏÇÑ´Ù. HTTP ÇÁ·ÎÅäÄÝÀº ¿ø·¡ ¿¬°áÀ» °è¼Ó À¯ÁöÇÏÁö ¾Ê´Â Ư¼ºÀÌ ÀÖÀ¸¹Ç·Î ´ÙÀ½ Á¢¼ÓÀ» À§ÇØ °è¼Ó ¿¬°áÇسõÀ» ÇÊ¿ä´Â ¾ø´Ù. ¸®ÅÏ°ªÀº ½ÇÁ¦·Î ÀÐÀº ÆÄÀÏ Å©±âÀÌ´Ù. ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ´Â ÀÛ¾÷À» ÀÌ ÇÔ¼ö¿Í OpenFileToChild°¡ ÇϹǷΠOpenFromFile ÇÔ¼ö´Â °ÅÀÇ ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç ¾à°£¸¸ ¼ÕÁúÇÏ¸é µÈ´Ù.

 

BOOL OpenFromFile(TCHAR *Path,BOOL bReadOnly/*=FALSE*/,BOOL bBrowse/*=FALSE*/)

{

     ....

     if (OpenFileToChild(hChild,Path)==FALSE) {

          if (bNew) {

              SendMessage(g_hMDIClient,WM_MDIDESTROY,(WPARAM)hChild,0);

          }

        if (strnicmp(Path,"http",4) != 0 && strnicmp(Path,"ftp",3) != 0) {

              wsprintf(Mes,"%s ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù. "

                   "´Ù¸¥ ÇÁ·Î±×·¥ÀÌ »ç¿ëÁßÀÎÁö È®ÀÎÇϽʽÿÀ.",Path);

              MessageBox(g_hFrameWnd, Mes,"¾Ë¸²",MB_OK);

        }

          return FALSE;

     }

    if (strnicmp(Path,"http",4)!=0 && strnicmp(Path,"ftp",3)!=0) {

          if (bReadOnly || (GetFileAttributes(Path) & FILE_ATTRIBUTE_READONLY)) {

              pSi->Ae.SetReadOnly(TRUE);

          }

    }

 

³×Æ®¿öÅ© ÀÔÃâ·ÂÇÔ¼öµéÀÌ Á÷Á¢ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϹǷΠOpenFromFile ÇÔ¼ö´Â ¼³»ç ¿¡·¯°¡ ¹ß»ýÇß´õ¶óµµ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏÁö ¾Êµµ·Ï Çß´Ù. FTP, HTTP ÇÁ·ÎÅäÄÝ·Î ÀÐÀº ÆÄÀÏÀº GetFileAttributes ÇÔ¼ö°¡ ¼Ó¼ºÀ» Á¦´ë·Î Á¶»çÇÒ ¼ö ¾øÀ¸¸ç HTTP ÆÄÀÏÀº Ç×»ó ÀбâÀü¿ëÀ¸·Î Á¶»çµÈ´Ù. ±×·¸´Ù°í Çؼ­ ÆÄÀÏ ÆíÁýÀ» °ÅºÎÇÒ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î ³×Æ®¿öÅ© ÆÄÀÏÀÇ °æ¿ì´Â ÀбâÀü¿ë ¼Ó¼ºÀ» Á¡°ËÇÏÁö ¾Êµµ·Ï ÇÏ¿´´Ù.

HTTP ¿­±â ´ëÈ­»óÀÚ¿¡¼­ URL¸¸ Á¦´ë·Î ÀÔ·ÂÇÏ¸é ¿ø°ÝÁöÀÇ ÆÄÀÏÀ» Àоî¿Ã ¼ö ÀÖÀ¸¸ç ÀÌ ÆÄÀϵµ ÀÏ¹Ý ÆÄÀÏó·³ MRU¿¡ µî·ÏµÈ´Ù. MRU¿¡¼­ HTTP ÆÄÀÏÀ» ´Ù½Ã ¼±ÅÃÇϸé ÀÎÅͳݿ¡ Á¢¼ÓÇÏ¿© ÆÄÀÏÀ» Àоî¿Ã °ÍÀÌ´Ù. OpenFromFile ÇÔ¼ö°¡ ¹Þ¾ÆµéÀÌ´Â Àμö Path°¡ ·ÎÄà °æ·Î¿¡¼­ URL·Î Àǹ̰¡ È®ÀåµÇ¾ú±â ¶§¹®¿¡ ³» ÄÄÇ»ÅÍ¿¡ ÀÖÁö ¾ÊÀº ÆÄÀÏ¿¡ ´ëÇؼ­µµ MRU°¡ Àß µ¿ÀÛÇÏ´Â °ÍÀÌ´Ù. ´Ù¸¸ ±×·¡µµ ³×Æ®¿öÅ©¿¡ ÀÖ´Â ÆÄÀÏÀº ·ÎÄà ÆÄÀÏ°ú´Â ´Ù¸¥ Á¡ÀÌ ÀÖÀ¸¹Ç·Î ´ÙÀ½ Äڵ常 ¾à°£ ¼ÕÁúÇÏ¸é µÈ´Ù.

 

void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     ....

     if (LOWORD(wParam) >= Mru.MenuID && LOWORD(wParam) < Mru.MenuID+Mru.MaxMru) {

          idx=LOWORD(wParam)-Mru.MenuID;

          Mru.GetFilePath(idx,Path);

        if (strnicmp(Path,"http",4) != 0 && strnicmp(Path,"ftp",3) != 0) {

              if (_access(Path,0) != 0) {

                   wsprintf(Mes,"%s ÆÄÀÏÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù. ÃÖ±Ù ÆÄÀÏ ¸ñ·Ï¿¡¼­ "

                        "ÀÌ ÆÄÀÏÀ» Á¦°ÅÇÕ´Ï´Ù.",Path);

                   MessageBox(g_hFrameWnd, Mes,"¾Ë¸²",MB_OK);

                   Mru.RemoveMRU(idx);

                   return;

              }

        }

          OpenFromFile(Path);

          return;

     }

 

Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» MRU ¸ñ·Ï¿¡¼­ »èÁ¦ÇÏ´Â ±â´ÉÀÌ Àִµ¥ HTTP, FTP·Î ÀÐÀº ÆÄÀÏÀº _access ÇÔ¼ö·Î Á¸Àç ¿©ºÎ¸¦ ¾Ë ¼ö ¾øÀ¸¹Ç·Î ÀÌ Å×½ºÆ®¸¦ ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. MRU °ü¸®¸¦ À§ÇØ ÀÎÅͳݿ¡ ¸ÕÀú Á¢¼ÓÀ» ÇØ º¼ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô µÇ¸é ÀÌÁßÀ¸·Î Á¢¼ÓÀ» ÇÏ´Â ¼ÀÀÌ µÇ¾î ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù. ³×Æ®¿öÅ© ÆÄÀÏ¿¡ ´ëÇؼ­´Â ±»ÀÌ Á¸Àç ¿©ºÎ¸¦ Á¡°ËÇÏÁö ¾Ê´õ¶óµµ º° ¹®Á¦´Â ¾øÀ¸¸ç ¼³»ç ´çÀå ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾ø´Ù ÇÏ´õ¶óµµ ÀϽÃÀûÀÎ ¹®Á¦ÀÏ ¼öµµ Àֱ⠶§¹®¿¡ MRUÀÇ ¸ñ·Ï±îÁö »èÁ¦ÇÒ ÇÊ¿ä´Â ¾ø´Ù.

HTTP ÇÁ·ÎÅäÄÝÀº ´Ù¿î·Îµå¸¸ Áö¿øÇÏ¸ç ¾÷·Îµå´Â Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ Ŭ¶óÀ̾ðÆ® ÀÔÀå¿¡¼­´Â ÀбâÀü¿ëÀÇ ÇÁ·ÎÅäÄÝÀ̶ó ÇÒ ¼ö ÀÖ´Ù. HTTP Çì´õ¿¡ ÷ºÎÆÄÀÏÀ» ºÙ¿©¼­ º¸³»´Â ±â´ÉÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ÀÌ´Â ÆÄÀÏ ¾÷·Îµå¿Í´Â ´Ù¸¥ ÀǹÌÀÌ´Ù. ¸¸¾à HTTP·Î ´Ù¿î·Îµå¹ÞÀº ÆÄÀÏ¿¡ ´ëÇØ ÀúÀå ¸í·ÉÀ» ³»¸®¸é ¿ø·¡ Àоú´ø °÷À¸·Î ¾÷·ÎµåÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ ¸Þ½ÃÁö¸¦ È®½ÇÇÏ°Ô º¸¿©ÁÖ¾î¾ß ÇÑ´Ù. ¿¡·¯ ¸Þ½ÃÁö¶ó±â º¸´Ù´Â ÀÏÁ¾ÀÇ ¾È³» ¸Þ½ÃÁö¶ó ÇÒ ¼ö ÀÖ´Ù.

 

BOOL SaveToFile(HWND hChild,TCHAR *Path)

{

     ....

     if (strnicmp(Path,"http",4)==0) {

          MessageBox(hChild, "HTTP ÇÁ·ÎÅäÄÝÀº ¾÷·Îµå¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ À̸§À¸·Î´Â "

              "ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù. »õ À̸§À» ÇÏµå µð½ºÅ©¿¡ ÀúÀåÇϽʽÿÀ","¾Ë¸²",MB_OK);

          return FALSE;

     }

 

±×·¸´Ù¸é ´ç±ÙÀº ÀúÀåÇÏÁöµµ ¸øÇÏ´Â HTTP ÆÄÀÏ¿¡ ´ëÇØ ¿Ö ÀбâÀü¿ë Ç÷¡±×¸¦ ¼³Á¤ÇÏÁö ¾Ê°í ÆíÁýÀ» Çã¿ëÇÒ±î? ±× ÀÌÀ¯´Â ¾÷·Îµå´Â ÇÒ ¼ö ¾øÁö¸¸ »õ À̸§À¸·Î ¹Ù²Ù¾î ·ÎÄà °æ·Î¿¡ ÀúÀåÇÏ´Â °ÍÀº °¡´ÉÇϱ⠶§¹®ÀÌ´Ù. HTTP·Î ¾÷·Îµå°¡ ¾ÈµÈ´Ù´Â °ÍÀº ´ëºÎºÐÀº »ç¿ëÀÚµéÀÌ ¾Ë°í ÀÖÀ¸¹Ç·Î ÀÌ ±â´ÉÀº ÁÖ·Î ÆÄÀÏ È®ÀοëÀ¸·Î »ç¿ëµÉ °ÍÀÌ´Ù. ¸¸¾à HTTP ÆÄÀÏÀ» »ç¿ëÀÚ°¡ ¼öÁ¤Çß´Ù¸é ÀÌ´Â »õ À̸§À¸·Î ÀúÀåÇÏ·Á´Â ºÐ¸íÇÑ ¸ñÀûÀ» °¡Áö°í ÀÖ´Ù°í ÆÇ´ÜÇÏ¿´´Ù.

HTTP´Â ¾÷·Îµå¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù´Â Ãø¸é¿¡¼­ »ç½Ç º°·Î ½Ç¿ë¼ºÀÌ ¾øÀ¸¸ç ±×·¡¼­ ´ëºÎºÐÀÇ ÆíÁý±â´Â HTTP ÆÄÀÏ¿­±â¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ´ç±ÙÀÌ ÀÌ ±â´ÉÀ» Áö¿øÇÏ´Â ¸ñÀûÀº ±×³É ÀбâÀü¿ëÀ¸·Î À¥ ¼­¹ö¿¡ ÀÖ´Â ³»¿ëÀ» È®ÀÎÀ̳ª Ç϶ó´Â ¶æÀ̸ç ÀÌÈÄ ÀÛ¼ºµÉ ÇÁ·ÎÁ§Æ®¿¡¼­ Á¶±ÝÀÌ¶óµµ °ü·ÃÀÌ ÀÖ´Â ÆÄÀÏÀ» ÇÑ ¹­À½À¸·Î °ü¸®ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ÀÌ´Ù. ¿ø°ÝÁöÀÇ ÆÄÀÏÀ» Á÷Á¢ ÆíÁýÇÏ·Á¸é HTTPº¸´Ù´Â ¹Ù·Î ´ÙÀ½¿¡ ÀÛ¼ºÇÒ FTP°¡ ÈξÀ ´õ ½Ç¿ëÀûÀÌ´Ù. FTP ÇÁ·ÎÅäÄÝÀº ³×Æ®¿öÅ© ¼Óµµ¸¸ ÃæºÐÇÏ´Ù¸é °ÅÀÇ ·ÎÄðú Â÷ÀÌ°¡ ¾øÀ» Á¤µµ·Î Æí¸®ÇÏ´Ù.