ÀÌ ±â´ÉÀº ÆíÁýÇÏ°í ÀÖ´Â ¹®¼ÀÇ ¿©·¯ °¡Áö Á¤º¸¸¦ °è»êÇÏ¿© º¸¿©ÁØ´Ù. ÀÌ ÀýÀÇ ÁÖÁ¦ÀÎ Æ÷¸Ëº¯È¯°ú´Â º° »ó°üÀÌ ¾øÁö¸¸ µû·Î ÀýÀ» ±¸¼ºÇÒ ¸¸Å Å« ±â´ÉÀÌ ¾Æ´Ï¹Ç·Î ÀÌ ÀýÀÇ ¸¶Áö¸· ½Ç½ÀÀ¸·Î ´Ù·ç¾î º¸µµ·Ï ÇÏÀÚ. 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;
Ãâ·ÂµÇ´Â ¹®¼Á¤º¸´Â ´ÙÀ½°ú °°´Ù.
°£´ÜÇÏ°Ô ¸Þ½ÃÁö¹Ú½º·Î °á°ú¸¸ º¸¿©ÁÖ¾ú´Âµ¥ º°µµÀÇ ´ëÈ»óÀÚ¸¦ µðÀÚÀÎÇÑ´Ù¸é Ç¥ Çü½ÄÀ¸·Î Á¤º¸¸¦ °¡°øÇѴٰųª ¹®¼ÀÇ ±¸¼ºÀ» ±×·¡ÇÈÀ¸·Î º¸¿©ÁÖ´Â µîÀÇ Ã³¸®¸¦ ÇÒ ¼öµµ ÀÖ°Ú´Ù. ÀÌ·± ±â´ÉÀº ½Ã°£¸¸ ¸¹´Ù¸é ¾ó¸¶µçÁö ´õ °³¼±ÇØ º¼ ¿©Áö°¡ ÀÖ´Ù. »ç½Ç ÄÚµùÀ̶õ ½Ã°£°úÀÇ ½Î¿òÀ̶ó ´õ ÇÏ°í ½Í¾îµµ ¿©À¯°¡ ¾ø´Ù.