¹Ù. ¹®¼­Á¤º¸

ÀÌ ±â´ÉÀº ÆíÁýÇÏ°í ÀÖ´Â ¹®¼­ÀÇ ¿©·¯ °¡Áö Á¤º¸¸¦ °è»êÇÏ¿© º¸¿©ÁØ´Ù. ÀÌ ÀýÀÇ ÁÖÁ¦ÀÎ Æ÷¸Ëº¯È¯°ú´Â º° »ó°üÀÌ ¾øÁö¸¸ µû·Î ÀýÀ» ±¸¼ºÇÒ ¸¸Å­ Å« ±â´ÉÀÌ ¾Æ´Ï¹Ç·Î ÀÌ ÀýÀÇ ¸¶Áö¸· ½Ç½ÀÀ¸·Î ´Ù·ç¾î º¸µµ·Ï ÇÏÀÚ. GetDocInfo ÇÔ¼ö´Â ÆíÁýÁßÀÎ ¹®¼­ÀÇ ÃÑ ¹®´Ü ¼ö¸¦ ±¸Çϴµ¥ ÀÌ ÇÔ¼öÀÇ ±â´ÉÀ» È®ÀåÇÏ¿© ´õ ¸¹Àº Á¤º¸¸¦ ±¸Çϵµ·Ï Çغ¸ÀÚ. ApiEdit.h¿¡ ÀÌ ÇÔ¼ö°¡ ±¸ÇÏ´Â Á¤º¸ÀÇ Á¾·ù¸¦ ¿­°ÅÇüÀ¸·Î ¼±¾ðÇÑ´Ù.

 

enum {AE_DOC_TOTALPARA, AE_DOC_WORD, AE_DOC_EXSPACESIZE, AE_DOC_CHAR,

     AE_DOC_HAN, AE_DOC_EMPTYLINE};

 

Â÷·Ê´ë·Î ÃÑ ¹®´Ü¼ö, ´Ü¾î¼ö, °ø¹é Á¦¿Ü Å©±â, ¹®ÀÚ¼ö, ÇÑ±Û ¹®ÀÚ¼ö, ºó ÁÙ ¼öÀÌ´Ù. ´õ »ó¼¼ÇÑ Á¤º¸¸¦ ±¸Çϵµ·Ï ÇÏ°í ½Í´Ù¸é ¿­°Å »ó¼ö¸¦ ´Ã·Á ÁÖ°í GetDocInfo¿¡ Äڵ带 Ãß°¡ÇÏ¸é µÈ´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ È®ÀåµÈ´Ù.

 

int CApiEdit::GetDocInfo(int type)

{

     int i;

     int count=0;

     int han=0;

     TCHAR *p=buf;

 

     switch (type) {

     case AE_DOC_TOTALPARA:

          return pLine[TotalLine-1].nPara;

     case AE_DOC_WORD:

          for (;*p;) {

              if (AeIsWhiteSpace(*p) || *p==¡®\r¡¯) {

                   while ((AeIsWhiteSpace(*p) || *p==¡®\r¡¯ || *p==¡®\n¡¯) && *p!=0)

                        p++;

              } else {

                   count++;

                   while (!AeIsWhiteSpace(*p) && *p!=¡®\r¡¯ && *p!=¡®\n¡¯ && *p!=0)

                        p++;

              }

          }

          break;

     case AE_DOC_EXSPACESIZE:

          for (;*p;p++) {

              if (!(AeIsWhiteSpace(*p) || *p==¡®\r¡¯ || *p==¡®\n¡¯)) {

                   count++;

              }

          }

          break;

     case AE_DOC_CHAR:

     case AE_DOC_HAN:

          for (;*p;p++) {

              if (!(AeIsWhiteSpace(*p) || *p==¡®\r¡¯ || *p==¡®\n¡¯)) {

                   if (IsDBCS(p-buf)) {

                        han++;

                        p++;

                   }

                   count++;

              }

          }

          if (type == AE_DOC_HAN)

              return han;

          break;

     case AE_DOC_EMPTYLINE:

          for (i=0;i<=pLine[TotalLine-1].nPara;i++) {

              if (IsParaEmpty(buf+GetOffFromPara(i,0))) {

                   count++;

              }

          }

          break;

     }

     return count;

}

 

bufÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ÇÑ ¹®ÀÚ¾¿ ÀÐÀ¸¸é¼­ Á¤º¸µéÀ» ±¸Çϴµ¥ ³Ê¹«³Ê¹« ½¬¿î ÄÚµåµéÀÌ´Ù. ¾îÂ ½¬¿îÁö ÇÑ´« °¨°í Àо ÀÌÇØ°¡ µÉ Á¤µµ´Ù. È£½ºÆ®¿¡´Â ¹®¼­ÀÇ Á¤º¸¸¦ ±¸ÇÏ´Â PrintInfo ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ´õ ½±´Ù.

 

void PrintInfo(CApiEdit &Ae)

{

     TCHAR Mes[512];

     TCHAR str[256];

     int byte,byte2;

 

     byte=Ae.GetTextLength();

     wsprintf(Mes,"Å©±â : %d ¹ÙÀÌÆ®(%d K¹ÙÀÌÆ®)\r\n",byte, byte/1024);

     wsprintf(str,"ÁÙ ¼ö : %d ÁÙ\r\n",Ae.GetDocInfo(AE_DOC_TOTALPARA)+1);

     lstrcat(Mes,str);

     wsprintf(str,"ºñ¾îÀÖ´Â ÁÙ ¼ö : %d ÁÙ\r\n",Ae.GetDocInfo(AE_DOC_EMPTYLINE));

     lstrcat(Mes,str);

     wsprintf(str,"´Ü¾î ¼ö : %d ´Ü¾î\r\n",Ae.GetDocInfo(AE_DOC_WORD));

     lstrcat(Mes,str);

     byte2=Ae.GetDocInfo(AE_DOC_EXSPACESIZE);

     wsprintf(str,"°ø¹éÀ» Á¦¿ÜÇÑ Å©±â : %d ¹ÙÀÌÆ®(°ø¹é·ü %d%%)\r\n",

          byte2, byte==0 ? 0:100-byte2*100/byte);

     lstrcat(Mes,str);

     byte=Ae.GetDocInfo(AE_DOC_CHAR);

     byte2=Ae.GetDocInfo(AE_DOC_HAN);

     wsprintf(str,"ÃÑ ±ÛÀÚ ¼ö : %d ±ÛÀÚ (ÇÑ±Û %d, ¿µ¹® %d)",

          byte, byte2, byte-byte2);

     lstrcat(Mes,str);

 

     MessageBox(g_hFrameWnd,Mes,"¹®¼­Á¤º¸",MB_OK);

}

 

¹®¼­¿¡ ´ëÇÑ ´ëºÎºÐÀÇ Á¤º¸¸¦ GetDocInfo ÇÔ¼ö¿¡¼­ ±¸ÇÏ¸ç ±¸ÇÑ Á¤º¸¸¦ º¸±â ½±°Ô ¹®ÀÚ¿­ ÇüÅ·Π°¡°øÇÏ¿© ¸Þ½ÃÁö¹Ú½º·Î Ãâ·ÂÇß´Ù. ÆÄÀÏ/¹®¼­Á¤º¸ ¸Þ´º¿¡¼­ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

 

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

{

     ....

     case IDM_FILE_INFO:

          PrintInfo(pSi->Ae);

          break;

 

Ãâ·ÂµÇ´Â ¹®¼­Á¤º¸´Â ´ÙÀ½°ú °°´Ù.

°£´ÜÇÏ°Ô ¸Þ½ÃÁö¹Ú½º·Î °á°ú¸¸ º¸¿©ÁÖ¾ú´Âµ¥ º°µµÀÇ ´ëÈ­»óÀÚ¸¦ µðÀÚÀÎÇÑ´Ù¸é Ç¥ Çü½ÄÀ¸·Î Á¤º¸¸¦ °¡°øÇѴٰųª ¹®¼­ÀÇ ±¸¼ºÀ» ±×·¡ÇÈÀ¸·Î º¸¿©ÁÖ´Â µîÀÇ Ã³¸®¸¦ ÇÒ ¼öµµ ÀÖ°Ú´Ù. ÀÌ·± ±â´ÉÀº ½Ã°£¸¸ ¸¹´Ù¸é ¾ó¸¶µçÁö ´õ °³¼±ÇØ º¼ ¿©Áö°¡ ÀÖ´Ù. »ç½Ç ÄÚµùÀ̶õ ½Ã°£°úÀÇ ½Î¿òÀ̶ó ´õ ÇÏ°í ½Í¾îµµ ¿©À¯°¡ ¾ø´Ù.