[4th Seoul Workshop]ÇÑ±Û Win95»ó¿¡¼­ÀÇ ÀÚ¹Ù ÇÑ±Û ÀԷ±ⱸÇö

ÀÓ ±¹ÁÖ
135-080 ¼­¿ïƯº°½Ã °­³²±¸ ¿ª»ïµ¿ 703-8
ÁÖ½Äȸ»ç ºñÆ®ÄÄÇ»ÅÍ ±â¼ú¿¬±¸¼Ò/CyberBIT
E-mail : ldragon@www.bit.co.kr

1. ¼­·Ð

ÀÚ¹Ù ÇÑ±Û ÀԷ±â´Â ÀüÀÚ °áÀç ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â °úÁ¤¿¡¼­ ÀڹٷΠŬ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ù°¡ ¸¸µé¾îÁø ºÎ»ê¹°ÀÌ´Ù. Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÚ¹Ù ¾ÖÇø´À¸·Î ±¸ÇöÇϴµ¥ À־ ÇѱÛÀÌ Ãâ·ÂÀº µÇ´Âµ¥, ÀÔ·ÂÀº µÇÁö ¾Ê¾Æ¼­, ¸¹Àº °í¹ÎÀ» ÇÏ´ø ³¡¿¡ ÀÛ¼ºÀ» ÇÏ°Ô µÇ¾ú´Ù.

ƯÈ÷ Web»ó¿¡¼­ÀÇ ÀüÀÚ °áÀç ½Ã½ºÅÛÀº ³×Æ®¿öÅ© »óÀÇ º¸¾ÈÀÌ ÇʼöÀûÀε¥ ±×°Í¿¡ ´ëÇÑ ´ëÃ¥ÀÇ Çϳª·Î ÀÚü Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö¸¦ ÇÁ·Î±×·¥ ÇÏ´Â ¹æ¹ýÀ» ¼±ÅÃÇß°í, ¶Ç ±×°ÍÀÌ À¥ ºê¶ó¿ìÀú¿Í µ¥ÀÌÅÍ º£À̽º¿Í ¿¬°èµÇ¾î¾ß ÇϹǷΠÀÚ¹Ù ¾ð¾î¸¦ ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ°Ô µÇ¾ú´Ù.

±×·¡¼­, ÀÏ´Ü ÀÚ¹Ù ÇÑ±Û ÀԷ±⸦ ±¸ÇöÇϱâ·Î ÇÏ¿´´Âµ¥, ÀÚ¹Ù ÇѱÛÀ» ±¸ÇöÇϱâ À§Çؼ­´Â ÀÚ¹Ù »ó¿¡¼­ ÇÑ±Û ¿ÀÅ丶Ÿ¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀÌ Á¤¼®Àε¥, À̰ÍÀº ½Ã°£°ú ³ë·ÂÀ» ³Ê¹« ¸¹ÀÌ ¿ä±¸ÇϹǷΠ¹º°¡ »õ·Ó°í °£´ÜÇÑ ¹æ¹ýÀ» °í¾ÈÇØ¾ß¸¸ Çß´Ù.

ÇÑÂüÀ» °í¹ÎÇÏ´ø Áß ÀÌ»óÇÑ Àǹ®ÀÌ ³» ¸Ó¸® ¼ÓÀ» ¶°³ªÁö ¾Ê¾Ò´Ù. ºÐ¸íÈ÷ ÀÚ¹Ù´Â À¯´Ï Äڵ带 Áö¿øÇϱâ À§ÇØ 2¹ÙÀÌÆ®¸¦ charÇüÀÇ ±âº» ±¸¼ºÀ¸·Î Çϰí ÀÖÀ¸¸ç, win95»ó¿¡¼­´Â ÀÚ¹ÙÀÇ ÇÑ±Û Ãâ·ÂÀÌ µÇ¸ç, ÇÑ±Û ÀԷ¿¡¼­ ´Ù¸¸ ¼öÆò ½ºÅ©·ÑÀÇ ÄÁÆ®·ÑÀÌ ¾ÈµÇ´Âµ¥ À̰͸¸ Àß Ã³¸®ÇÏ¸é µÇÁö ¾ÊÀ» ±î ÇÏ´Â °ÍÀÌ´Ù.

±×·¡¼­ ÀÚ¹Ù¿¡¼­ ÇÑ±Û ÀԷ½à ÀÌ ºÎºÐ¸¸ Àß Ã³¸®ÇÏ¸é µÉ °ÍÀ̶ó´Â È®½ÅÀ» °¡Áö¸é¼­ ¸ÕÀú ÇÑ±Û ÀԷ½ÃÀÇ ½Ã³ª¸®¿À¸¦ »ý°¢ÇÏ°Ô µÇ¾ú´Ù.

¸ÕÀú ÇÑ±Û ÀÔ·Â ¸ðµå·Î ¹Ù²î°Ô µÉ °ÍÀ̰í, Ű Çϳª°¡ ´­·ÁÁö¸é ¾î¶°ÇÑ À̺¥Æ®°¡ ¹ß»ýÇÒ °ÍÀ̰í, ´ÙÀ½ ±× À̺¥Æ®¸¦ ¹Þ¾Æ 󸮸¦ ÇÏ°í ±× ÀÔ·Â °ªÀ» Ãâ·Â ÇÒ °ÍÀÌ´Ù.

ÀÌ·¸°Ô ¾î´À Á¤µµÀÇ ½Ã³ª¸®¿À¸¦ »ý°¢Çغ¸´Ï ±× ´ÙÀ½ ³»°¡ ó¸®ÇØ¾ß ÇÒ ºÎºÐÀÌ ¸íÈ®ÇØÁ³´Ù. ¿ì¼± À̺¥Æ® ¹ß»ýÀ» °¡·Îä°í, ±× ´ÙÀ½ ÇѱÛÀ» ó¸®Çϰí, ´Ù½Ã ÀçÃâ·ÂÀ» ½ÃŰ´Â ¹æ½ÄÀ¸·Î ÀÛ¾÷À» Çϱâ·Î ÇÏ¿´´Ù. ÀÌ·¸°Ô ÀÏÁÖÀÏÀ» ¶Èµü °Å·Á ¸¸µç °ÍÀÌ °ø°³µÇÁö ¾ÊÀº ÃÖÃÊÀÇ ÀÚ¹Ù ÇÑ±Û ÀԷ±Ⱑ µÈ °ÍÀÌ´Ù.

ÀÌ·± ½ÄÀ¸·Î °³¹ßÇÒ ¶§ÀÇ ÀåÁ¡Àº ÇÑ±Û À©µµ¿ìÀÇ ÀÚ¿øÀ» ±×´ë·Î ¾²°í Àֱ⠶§¹®¿¡ ±Û¾¾Ã¼, ÆùÆ®ÀÇ Å©±â µî¿¡ ±¸¾ÖµÇÁö ¾ÊÀ¸¸ç Â÷ÈÄ À©µµ¿ìÀÇ °³¹ß ¹öÀü¿¡ µû¶ó ¿Ü±¹¾î Áö¿øµµ °£´ÜÇÏ°Ô µÈ´Ù´Â °ÍÀÌ´Ù. ´ÜÁ¡ÀÌ ¾Æ´Ñ ´ÜÁ¡À¸·Î´Â À©µµ¿ì¿ëÀ̹ǷΠÀ¯´Ð½º¿¡¼­´Â È¿°ú°¡ ¾øÀ¸¸ç, º­¶ôÄ¡±â·Î °³¹ßµÈ °ÍÀ̹ǷΠ¼Ò½ºÀÇ ÄÚµùÀÌ ¸Å²ô·´Áö ¸øÇÏ°í ¹ö±×µµ ÀÖÀ» ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.

¾Æ¿ï·¯ ¸í¹éÇÑ ¹ö±× ¾Æ´Ñ ¹ö±×´Â ÇÑ±Û À©µµ¿ì95°¡ ¿ÏÀüÇÑ ¿Ï¼ºÇü ÇѱÛÀ» Áö¿øÇÏÁö ¸øÇÏ´Â °ü°è·Î ºÎºÐÀûÀ¸·Î ¿Ï¼ºÇü ÇÑ±Û ÁýÇÕü¿¡¼­ ºüÁø ±ÛÀÚ´Â Äڵ忡 Æ÷ÇÔ½ÃŰÁö ¾Ê¾ÒÀ½À» ¹àÈù´Ù.

2. ÀÚ¹ÙÀÇ Æ¯Â¡

ÀÚ¹Ù ÇÑ±Û ÀԷ±⿡ ´ëÇÏ¿© ÀÚ¼¼È÷ ¼³¸íÇϱâ Àü¿¡ ¸ÕÀú ÀÚ¹ÙÀÇ Æ¯Â¡¿¡ ´ëÇÏ¿© °£´ÜÈ÷ ¾Ë¾Æº¸ÀÚ.

³Ê¹« ¸¹ÀÌ ¾Ë·ÁÁø À̾߱âÀ̱⠶§¹®¿¡ ½Ä»óÇÒ ¼öµµ ÀÖÁö¸¸, ÀÚ¹ÙÀÇ ÀÌ·± Ư¡µéÀº ¾Æ¹«¸® °­Á¶Çصµ °áÄÚ Áö³ªÄ¡Áö ¾ÊÀº °ÍµéÀÌ´Ù.

°áÄÚ ¾Æ´Ò ¼öµµ ÀÖÁö¸¸, ÀÚ¹Ù´Â ´Ù¸¥ ¾ð¾îµé¿¡ ºñÇÏ¿© ¸Å¿ì °£´ÜÇÑ ±¸Á¶¸¦ °¡Áø´Ù.

ÀÚ¹Ù´Â C++¿Í ¸Å¿ì À¯»çÇÏÁö¸¸, ²À ÇÊ¿äÇÏÁö ¾ÊÀº °í±Þ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ Æ¯Â¡Àº ¸ðµÎ »©°í, ²À ÇÊ¿äÇÑ ±â´ÉÀ¸·Î¸¸ ä¿î ¾ð¾îÀÌ´Ù. ±×·¡¼­ ´Ù¸¥ °í±Þ ¾ð¾î¿¡ ´ëÇÑ ÀÌÇØ°¡ ÀÖ´Ù¸é ÀÚ¹Ù¸¦ ÀÌÇØÇϱⰡ ÈξÀ ½±´Ù.

ÀÚ¹Ù´Â °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ÀÚ¹Ù¿¡¼­ ¼ýÀÚ¿Í ºÎ¿ïÇü°ú °°Àº ÇüÀ» Á¦¿ÜÇÑ ´ëºÎºÐÀÌ °´Ã¼·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ¶ÇÇÑ ÀÚ¹Ù´Â ´ÜÀÏ °è½Â Ŭ·¡½º ±¸Á¶¸¦ Áö¿øÇÑ´Ù. À̰ÍÀº ÇÑ ¹ø¿¡ ÇϳªÀÇ Å¬·¡½º°¡ ÇϳªÀÇ ¼±Á¶·ÎºÎÅ͸¸ »ó¼ÓµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù. ¾î¶² ¾ð¾îµéÀº ´Ù¼öÀÇ °è½ÂÀ» Áö¿øÇÏÁö¸¸ À̰ÍÀÌ ¿ÀÈ÷·Á ¾ð¾î¿¡ ´ëÇÑ ÀÌÇØ¸¦ È¥¶õ½Ãų ¼öµµ ÀÖ°í, ¾ð¾î¸¦ ºÒÇÊ¿äÇÒ Á¤µµ·Î º¹ÀâÇϰԵµ ÇÒ ¼ö Àֱ⠶§¹®¿¡ ÀÚ¹Ù´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.

ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§ ÇÁ·Î±×·¥Àº ¸ÕÀú ¹ÙÀÌÆ® ÄÚµå·Î ÄÄÆÄÀÏ µÈ´Ù. ¹ÙÀÌÆ® ÄÚµå´Â ±â°è ¸í·É¾î¿Í ¸Å¿ì À¯»çÇϹǷΠÀÚ¹Ù ÇÁ·Î±×·¥Àº ¸Å¿ì È¿À²ÀûÀÌ´Ù. ÇÏÁö¸¸ ¹ÙÀÌÆ® ÄÚµå´Â ƯÁ¤ÇÑ ±â°è¿¡ ÇÑÁ¤µÈ °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÀÚ¹Ù ÇÁ·Î±×·¥Àº ÇÁ·Î±×·¥À» ´Ù½Ã ÄÄÆÄÀÏ ½Ãų ÇÊ¿ä ¾øÀÌ ´Ù¸¥ ¸¹Àº ÄÄÇ»ÅÍ¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.

ÀÚ¹Ù ÇÁ·Î±×·¥Àº ¹ÙÀÌÆ® ÄÚµå·Î ÄÄÆÄÀÏ µÇ±â ¶§¹®¿¡ ÀÚ¹Ù¸¦ Áö¿øÇÏ´Â ¾î¶°ÇÑ Ç÷§Æû¿¡¼­µµ ½ÇÇà½Ãų ¼ö ÀÖ´Ù. »õ·Î¿î ±â°è »ó¿¡¼­ ½ÇÇà½Ã۱â À§Çؼ­ ÀÚ¹Ù ÇÁ·Î±×·¥À» ´Ù½Ã ÄÄÆÄÀÏ ½Ãų ÇÊ¿ä´Â ¾ø´Ù. ÀÚ¹Ù ¾ð¾î´Â ¸ðµç ÄÄÇ»ÅÍ¿¡¼­ °°Àº ¹æ¹ýÀ¸·Î µ¿ÀÛÇÑ´Ù.

À¯´Ð½º³ª À©µµ 95¿Í °°Àº ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀº ¸ÖƼ ŽºÅ·À» Áö¿øÇÑ´Ù. ÀÚ¹Ù´Â ¾ð¾î¿¡ ³»ÀåµÈ ¸ÖƼ ŽºÅ·À» Áö¿øÇÑ´Ù. À̰ÍÀÌ ¹Ù·Î ¸ÖƼ ½º·¹µåÀÌ´Ù. ¸ÖƼ ½º·¹µå ȯ°æ¿¡¼­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀº µ¿½Ã¿¡ ¿©·¯ °¡Áö ÀÏÀÌ ¹ß»ýÇϱ⠶§¹®¿¡ ¾î·Æ´Ù. ±×·¯³ª ÀÚ¹Ù´Â ÇÁ·Î±×·¡¹ÖÀ» ½±°Ô ÇÏ´Â µ¿±âÈ­ Ŭ·¡½º¸¦ Áö¿øÇϹǷΠ½±°Ô ÀÌ·± ¹®Á¦¿¡ ´ëóÇÒ ¼ö ÀÖ´Ù.

C³ª C++·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ùº¸¸é, »ç¿ëµÇ´Â ¸Þ¸ð¸®ÀÇ ÇÒ´ç ¹× ÇØÁ¦¿¡ ´ëÇÏ¿© ÁÖÀÇ ±í°Ô »ìÆìº¸¾Æ¾ß ÇÑ´Ù. ±×·¯³ª ÀÚ¹Ù¿¡¼­´Â ¸Þ¸ð¸® °ü¸®¿¡ ´ëÇÏ¿© °ÆÁ¤ÇÒ Çʿ䰡 ¾ø´Ù. ÀÚ¹Ù´Â ¸Þ¸ð¸®¸¦ °Ë»çÇÏ¿© ´õ ÀÌ»ó »ç¿ëµÇÁö ¾Ê´Â ¸Þ¸ð¸®¸¦ ÀÚµ¿À¸·Î ÇØÁ¦½ÃŰ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. À̰ÍÀº ÀÚ¹Ù·Î ÇÁ·Î±×·¥À» ½±°Ô ¸¸µé ¼ö ÀÖ°Ô ÇØÁÖ¸ç ÇÁ·Î±×·¡¸Ó°¡ ¸Þ¸ð¸® °ü¸®¿¡ °üÇÏ¿© °áÄÚ °ÆÁ¤ÇÏÁö ¾Êµµ·Ï ÇØÁØ´Ù.

ÀüÅëÀûÀÎ ÇÁ·Î±×·¥ ¾ð¾îµéÀº ÄÄÇ»ÅÍÀÇ ¸ðµç ºÎºÐÀÇ ¸Þ¸ð¸®¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ ÇÁ·Î±×·¥Àº ¸Þ¸ð¸®¿¡¼­ ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Â ¿©Áö°¡ ÀÖ´Â ºÎºÐµéÀÇ °ªÀ» º¯°æ½Ãų ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÚ¹Ù ÇÁ·Î±×·¥Àº ´ÜÁö Çã¶ô ¹ÞÀº ºÎºÐÀÇ ¸Þ¸ð¸®¸¸À» ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥Àº ÀǵµÇÏÁö ¾ÊÀº º¯°æÀÌ ÀϾÁö ¾Êµµ·Ï ÇÑ´Ù.

ÀÚ¹Ù´Â °³¹ß ´ç½ÃºÎÅÍ ¸Þ¸ð¸®ÀÇ ¿ë·®ÀÌ ÀÛÀº ÄÄÇ»ÅÍ¿¡¼­ ÀÛµ¿Çϵµ·Ï ¼³°èµÇ¾ú±â ¶§¹®¿¡ »ó´ëÀûÀ¸·Î ´Ù¸¥ ÄÄÇ»ÅÍ ¾ð¾î¿¡ ºñÇÏ¿© µ¢Ä¡°¡ ÀÛ´Ù. ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ´Â ´ÜÁö ¸î ¹é ų·Î¹ÙÀÌÆ® »ó¿¡¼­µµ µ¿ÀÛÇÑ´Ù.

ÀÚ¹Ù´Â Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖÁö ¾ÊÀ¸¸ç ½ÇÇàÇϱâ Àü¿¡ ÀÚ¹Ù ÇÁ·Î±×·¥À» °ËÁõÇϱâ À§Çؼ­ °­·ÂÇÑ Å¸ÀÔ Ã¼Å© ±â´ÉÀ» Áö¿øÇÑ´Ù. µû¶ó¼­ °ËÁõµÈ ÀÚ¹Ù ÇÁ·Î±×·¥Àº ÀÚ¹Ù°¡ ¼³Á¤ÇÑ ¾î¶°ÇÑ Á¦Çѵµ ³ÑÁö ¾ÊÀ½À» º¸ÀåÇÏ¸ç ¾ÈÀüÇÏ°Ô ½ÇÇàµÉ ¼ö ÀÖ´Ù. ÀÚ¹ÙÀÇ ¹ÙÀÌÆ® ÄÚµå °ËÁõÀº À¥ ºê¶ó¿ìÀú°¡ ¾ÖÇø´ÀÌ ¹ÙÀÌ·¯½º¸¦ Æ÷ÇÔÇÏÁö ¸øÇϵµ·Ï È®ÀÎÇϴµ¥ »ç¿ëµÈ´Ù.



3. ÀÚ¹Ù ÇÑ±Û ±¸Çö

±×·³ ÀÌÁ¦ ÀÚ¹Ù ÇÑ±Û ÀԷ±⠱¸Çö ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ.

¿ì¼± Âü°í»çÇ×À¸·Î ¸ÕÀú ÀÚ¹ÙÀÇ ¹®ÀÚü°è¿¡ ´ëÇØ¼­´Â ÀÚ¹ÙÀÇ ±âº»ÀûÀÎ Âü°í ¼­ÀûÀ» Çʵ¶Çϸé

°£´ÜÈ÷ ÀÌÇØÇÒ ¼ö ÀÖÀ¸¸ç, ƯÈ÷ Çѱ۰úÀÇ °ü°è¿¡ ´ëÇØ¼­´Â Internet 9¿ùÈ£ÀÇ Àå ±Ô¿À¾¾ÀÇ ±â°í¶õÀ» Âü°í ÇÏ¸é µÉ °ÍÀ̸ç, ÀÚ¹ÙÀÇ ÇÑ±Û ±¸Çö¿¡ ³¡±îÁö ÃÖ¼±À» ´ÙÇÏ´Â ¿¤¸²³×Æ®¿¡ °Ý·ÁÀÇ ¸»¾¸À» ¿Ã¸®¸ç Áö±Ý ¿©±â ¹àÈù ±¸Çö ¹æ¹ý°ú ¼Ò½º´Â ÇÑ±Û À©µµ¿ì»ó¿¡¼­¸¸ À¯È¿ÇÏ¸ç °¡ÀåÀûÀº ³ë·ÂÀ¸·Î ÇÑ±Û ÀԷ±⸦ ±¸ÇöÇÏ´Â ¹æ¹ýÀÏ °ÍÀÌ´Ù.

´Ù½Ã º»·ÐÀ¸·Î µé¾î°¡¼­ ÀÚ¹Ù¿¡´Â ÀÔ·ÂÀ» ¹Þ´Â °¡»ó À©µµ¿ì ŸŶ ÆÐŰÁö ÁßÀÇ ÇϳªÀÎ TextField¶ó´Â Ŭ·¡½º°¡ Àִµ¥ À̰ÍÀÌ ¿ì¸®°¡ ÀÌ¿ëÇØ¾ß ÇÒ ¹®Á¦ÀÇ Å¬·¡½ºÀÌ´Ù.

¼Ò½º¸¦ º¸¸é ¾Ë ¼ö ÀÖµíÀÌ ±×·¸°Ô ¾î·Á¿î ºÎºÐÀº ¾øÀ» °ÍÀÌ´Ù.

±âÁ¸ÀÇ CÇÁ·Î±×·¥¿¡¼­ÀÇ Include ¿Í °°Àº ±â´ÉÀ» ÇÏ´Â °ÍÀÌ ÀÚ¹Ù¿¡¼­´Â Import¶ó´Â °ÍÀº ¾Æ½Ç °ÍÀ̰í, »ó¼Ó¹ÞÀ» Ŭ·¡½ºÀÎ TextField ¿Í TextArea¸¦ import Çϰí, key ÀÔ·ÂÀÇ event¸¦ ó¸®ÇØ¾ß ÇϹǷΠ¹Ýµå½Ã °¡»ó À©µµ¿ì ŸŶ ÆÐŰÁö ÁßÀÇ ÇϳªÀÎ Event Ŭ·¡½º¸¦ importÇØ¾ßÇÑ´Ù.

±× ´ÙÀ½ ÀÓÀÇÀÇ »õ·Î¿î Ŭ·¡½º¸¦ TextField ¿¡¼­ ÆÄ»ý½Ã۴µ¥ À̰ÍÀº TextFieldÀÇ ¿©·¯ ÀÚ¿øÀ» ÃÖ´ëÇÑ »ç¿ëÇϱâ À§Çؼ­ÀÌ´Ù.

ÀÚ¹Ù ÇѱÛÀԷ±âÀÇ ÁÖµÈ ¿£Áø ¿ªÇÒÀ» ÇÏ´Â °ÍÀº ´Ù¸§ ¾Æ´Ñ keyDown ºÎºÐÀε¥ À̰ÍÀº key°¡ ´­·¯Á³À» ¶§ ÀÌ ÇÔ¼ö¸¦ ½ÇÇà½ÃÄÑÁØ´Ù.

ÀÌ ºÎºÐÀÌ Á¦ÀÏ Áß¿äÇϹǷΠÀÚ¼¼È÷ ´Ù·ç¾î º¸ÀÚ.

¿ì¼± À©µµ¿ì»ó¿¡¼­ keyÀÔ·ÂÀÌ ÀÖÀ» ¶§ ¹ß»ýµÇ´Â À̺¥Æ®·Î´Â keyUp °ú keyDownÀÌ ÀÖ´Â µ¥, ÇϳªÀÇ Å° ÀÔ·ÂÀÌ ÀÖÀ» ¶§¸¶´Ù À©µµ¿ì´Â ±× Ű¿¡ ÇØ´çÇÏ´Â ASCIIÄÚµå °ªÀ» ÀÚ¹ÙÀÇ keyUp À̺¥Æ®¿¡ ´ã¾Æ ÁÖ¸é ÀÚ¹ÙÀÇ °¡»ó À©µµ¿ì ŸŶÀº ÇöÀç Æ÷Ä¿½º µÇ¾î ÀÖ´Â ComponentÀÇ keyUp ÇÔ¼ö¸¦ ½ÇÇà½ÃÄÑÁØ´Ù.

À̰ÍÀº Component ÀÇ »óÀ§ Ŭ·¡½º¿¡ Á¤ÀÇ µÇ¾îÀִµ¥ ÀÚ¼¼ÇÑ ºÎºÐÀº JDKÀÇ sourceºÎºÐ¿¡ ÀÖ´Â

awtÀÇ package ¼Ò½º¸¦ ÂüÁ¶ÇÏ±æ ¹Ù¶õ´Ù.

´Ù½Ã ÁÖÁ¦·Î µ¹¾Æ¿Í¼­ ÀÌ keyUpÀ̺¥Æ®·Î´Â ¸¸Á·ÇÒ¸¸ÇÑ °á°ú¸¦ ¸¸µé ¼ö ¾ø´Â µ¥, ±×°ÍÀº Çϳª ÇϳªÀÇ keyÀ̺¥Æ®¸¦ À¯¹ßÇϰí, ÀÌ °Í ÀüºÎ¸¦ Control ÇØ¾ßÇϹǷΠ±âÁ¸ÀÇ ÇÑ±Û ¿ÀÅ丶Ÿ ó¸®¿Í Å©°Ô ´Ù¸¥ ¹æ¹ýÀÌ ¾Æ´Ñ °ÍÀ̱⠶§¹®ÀÌ´Ù.

±×·³ ÀÌÁ¦ keyDown À̺¥Æ®¿¡ ´ëÇØ¼­ »ìÆìº¸ÀÚ.

¿©±â¼­´Â keyÀ̺¥Æ®°¡ keyUp°ú´Â ´Ù¸£°Ô ¹ß»ýµÇ´Âµ¥ ±×°ÍÀº À©µµ¿ì95»ó¿¡¼­ ÇÑ±Û ÀÔ·Â ½Ã¿¡ ¸ðµç keyÀ̺¥Æ®¸¦ ÇѱÛÀ©µµ¿ì95ÀÇ standard input ÇÑ±Û Ã³¸®±â°¡ Àâ¾Æ¼­ ÇÑ±Û ÇÑ ÀÚ°¡ ¿Ï¼ºµÇ¾úÀ» ¶§ keyDownÀ̺¥Æ®¸¦ ¿¬¼ÓÀ¸·Î µÎ ¹ø ¹ß»ý½ÃÄÑÁÖ´Â °Í °°´Ù.

À̰ÍÀº ÇѱÛÀ©µµ¿ì95°¡ ¿Ï¼ºÇü ÇѱÛÀ» Áö¿øÇÑ´Ù°í ÇÒ ¶§ keyÇϳª ÇϳªÀÇ Ã³¸®´Â À©µµ¿ì ÀÚü°¡ ó¸®Çϵµ·Ï Çϰí ÇϳªÀÇ ÇѱÛÀÇ ±ÛÀÚ°¡ ¿Ï¼ºµÇ¾úÀ» ¶§ ±× ±ÛÀÚÀÇ ¿Ï¼ºÇüÄÚµå °ªÀ» keyDownÀÇ À̺¥Æ®¿¡ µÎ ¹ø ³ª´©¾î Çϳª´Â µÎ ¹ÙÀÌÆ® Áß »óÀ§ ÇÑ ¹ÙÀÌÆ®¸¦ ¿¬´Þ¾Æ ÇÏÀ§ ÇÑ ¹ÙÀÌÆ®¸¦ ¾òÀ» ¼ö ÀÖ´Ù´Â °ÍÀ̰í, À̰ÍÀ¸·Î ±× ±ÛÀÚÀÇ °ªÀ» ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.

±×·¡¼­ ¿¬¼ÓÀ¸·Î ¹ß»ýÇÏ´Â ÀÌ keyDownÀ̺¥Æ®¸¦ °¡·Îä¾î Àß Ã³¸®ÇØÁÖ¸é ÇѱÛÀÇ ¿Ï¼ºµÈ ±ÛÀÚ¸¦ ¾òÀ» ¼ö ÀÖ°í, ÀÌ °ÍÀ» ¹öÆÛ¸µ ÇØÁÖ¸é ÀÚ¹Ù¿¡¼­ ÇÑ±Û ÀÔ·ÂÀÌ °¡´É ÇØÁø´Ù´Â °ÍÀÌ´Ù.

±×·³ ¼Ò½ºÀÇ Æ¯Â¡ÀûÀÎ ºÎºÐÀ» »ìÆìº¸ÀÚ.

Public synchronized boolean keyDown(Event evt,int key)

ÀÇ ºÎºÐ¿¡¼­´Â »óÀ§Å¬·¡½ºÀÇ keyDownÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵åÇÑ ºÎºÐÀε¥ °³³äÀûÀÎ °ÍÀº À§ ºÎºÐ¿¡ ¾ð±ÞÇÑ ´ë·ÎÀ̸ç Âü°í·Î ÁÖÁöÇØ¾ß ÇÒ ºÎºÐÀº synchronized Àε¥ À̰ÍÀº ÀÚ¹ÙÀÇ ¸ÖƼ ½º·¹µåÀÇ ½ºÄÉÁ층¿¡ ´ëÇÑ °Í¿¡ ´ëÇØ Á¶±Ý ±âÃÊÁö½ÄÀÌ ÇÊ¿äÇÏ´Ù.

±Ý¹ø ÇÁ·ÎÁ§Æ®¿¡¼­´Â MFC ÀÇ ½º·¹µå ±â¹ýÀ» ÀÌ¿ëÇÑ È­»óȸÀǽýºÅÛµµ °³¹ßÇߴµ¥ ÀÌ¿Í °°Àº ½º·¹µåÀÇ °³³äÀ» ¾Ë¾ÆµÎ¸é ÇÁ·Î±×·¥ÀÇ ´Ù¾çÇÑ ±â´ÉÀ» ±¸»çÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

¼±Á¡Çü ½Ã½ºÅÛ¿¡¼­ÀÇ ÇÁ·Î¼¼½º(½º·¹µå)´Â ½Ã°£ ¶Ç´Â ÀÎÅÍ·´Æ®¿¡¼­ ½ºÄÉÁ층ÀÌ ÀϾ´Âµ¥ ±×°ÍÀº ÇÏ´ø ÀÛ¾÷À» Áß´ÜÇÏ°í ´Ù½Ã ÀÚ±â Â÷·Ê°¡ ¿Ã ¶§±îÁö SleepÀ» ÇÑ´Ù´Â °ÍÀÌ´Ù.

À̰ÍÀº ±²ÀåÈ÷ Áß¿äÇÑ µ¥ ´Ù¸§ ¾Æ´Ñ ¾çÂÊÀÇ ÇÁ·Î¼¼½º(½º·¹µå)°¡ ÇϳªÀÇ º¯¼ö¸¦ °øÀ¯ÇÑ´Ù´ø°¡ ¶Ç´Â ¼ø¼­ÀûÀÎ ÀýÂ÷¿¡ ±Ù°ÅÇØ¼­ Æ®·£Á§¼ÇÀÌ ÀϾ±â¸¦ ¿øÇÒ ¶§´Â ÁÖÀÇÇØ¾ß ÇÏ´Â ºÎºÐÀÌ´Ù.

ÀÌ·¯ÇÑ Á¡À» °¨¾ÈÇØ¼­ ÀÚ¹Ù¿¡¼­´Â synchronized¶ó´Â Ű¿öµå¸¦ ÁÖ¾î ¼±Á¡´çÇÏÁö ¾Ê°Ô ¹è·ÁÇϰí ÀÖ´Â °Í °°´Ù.

ÆÄ¶ó¹ÌÅÍ ¾ÈÀÇ °ªÀº ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϸ鼭 ä¿öÁö°Ô µÇ´Âµ¥ ÀÌ ¶§ ¿ì¸®°¡ üũÇÏ´Â °ÍÀº key°ªÀÌ´Ù.

±×·¡¼­, ¼Ò½ºÀÇ ¼ýÀÚµéÀº key °ªÀε¥ ÇѱÛÀԷ¸ðµå¿Í ¾Æ´Ñ °ÍÀ» ±¸º°ÇØ¾ß ÇϹǷΠ¾à°£ÀÇ ¾î·Á¿òÀÌ ÀÖ¾ú°í °¢ ÀԷ»óÅ¿¡¼­ÀÇ ¼öÆò ½ºÅ©·ÑÀ» ControlÇØ¾ß ÇϹǷΠ±×°ÍÀÌ Èûµé¾ú´Ù.

±×·³, ¾Æ·¡ Äڵ带 º¸¸é¼­ ºÐ¼®Çغ¸ÀÚ.

static boolean dotStatus = false;

static boolean korWait = false;

static int Arrow = 0;

String korString;

boolean korbyte = false;

static char korChar[] = new char[2];

À§ Äڵ忡¼­ ¿©·¯ º¯¼ö°¡ Àִµ¥ ±âº»ÀûÀ¸·Î Áß¿äÇÑ º¯¼ö´Â korWait ¿Í korString °ú korChar[]

Àε¥ ¿©±â¿¡ ´ëÇØ Àá±ñ »ý°¢ÇØ º¸ÀÚ.

korWaitº¯¼ö´Â ÇÑ±Û ÀÔ·Â ¸ðµå¿¡¼­ ÇÑ±Û ÇÑ ÀÚ°¡ ¿Ï¼ºµÉ ¶§ ¹ß»ýµÇ´Â ¿¬¼ÓÀûÀÎ µÎ ¹øÀÇ keyDown Event¸¦ üũÇϱâ À§ÇÑ °ÍÀε¥ ù ¹øÂ° keyDown EventÁß ¿Ï¼ºÇü ÇѱÛkey °ªÀÇ ¹üÀ§³»ÀÇ »óÀ§ ¹ÙÀÌÆ®¸¦ °Ë»çÇÏ¿© ÇѱÛkey°ªÀÏ ¶§´Â korWait¸¦ True·Î ¼¼ÆÃ½Ã۰í, korChar[0]¿¡ ±× °ªÀ» ¾ò´Â´Ù.

À̰ÍÀº Á¤È®ÇÑ ¿Ï¼ºµÈ ÇÑ±Û ÇÑ ÀÚ¸¦ ¹Þ¾ÆµéÀ̱â À§Çؼ­À̸ç, ¿¬¼ÓµÈ µÎ ¹øÂ° keyDown Event¿¡¼­ korChar[1]¿¡ key°ªÀ» ¾ò°í, ±× °ÍÀÇ ¹öÆÛ¸µÀ» À§Çؼ­ ÇöÀçÀÇ ¹®ÀÚ¿­ °ªÀ» getTextÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ¼­ korString¿¡ ¾òÀº µÚ ¿©±â¿¡ ¼¼ÆÃµÈ ÇöÀçÀÇ Æ÷Áö¼Ç¿¡ ¹æ±Ý ÀÔ·ÂµÈ ¿Ï¼ºµÈ ±ÛÀÚ¸¦ »ðÀÔ, ¶Ç´Â ÷°¡½ÃŰ°í ´Ù½Ã setTextÇÔ¼ö¸¦ »ç¿ëÇØ¼­ ¼¼ÆÃ ½ÃŲ´Ù.

ÀÌ ½Ã³ª¸®¿À°¡ ÀÚ¹Ù ÇѱÛÀԷ±âÀÇ ±âº»Àû °ñ°ÝÀε¥, ÇÁ·Î±×·¡¹ÖÀ» ¾î´À Á¤µµ ÇϽŠºÐ²²¼­´Â ÀÌ Á¤µµ¿¡¼­ ÀÚ½ÅÀÇ ÀÚ¹Ù ÇÑ±Û ÀԷ±⸦ ¸¸µé ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÀÚ¹Ù ÇÑ±Û ÀÔ·Â ÇÁ·Î±×·¥À» Çϸ鼭 ¾î·Á¿ü´ø °ÍÀº ÇÑ±Û ÀÔ·Â ¸ðµå¿¡¼­ÀÇ Enter Key¶óµçÁö, Á¿ì È­»ìÇ¥ Ű, Á¡µîÀÇ ÀÔ·ÂÀÌ ÀÖÀ» ¶§´Â ÇÑ±Û ÀԷ±⠽󪸮¿À ÀÚü¿¡ ¹ö±×°¡ »ý°Ü¹ö·Á¼­ ÀÌ·¯ÇÑ °ÍÀ» ó¸®Çϱâ À§Çؼ­ ¶æÇÏÁö ¾ÊÀº Äڵ带 »ý¼º½ÃÄѾ߸¸ Çß´ø °ÍÀÌ´Ù.

¿¹¸¦ µé¸é, Á¡ÀÇ ÀÔ·ÂÀ̶óµç°¡, ÀÚÀ½ÀÇ ¿¬¼ÓÀûÀÎ ÀÔ·ÂÀÌ ÀÖÀ» ¶§´Â ÇÑ±Û ÀÔ·Â ¼ø¼­°¡ ´Ù½Ã ¾û¸ÁÀÌ µÇ¹ö·Á¼­ ÀÌ·¯ÇÑ °ÍÀ» ¼öÁ¤ÇÏ´Â µ¥ Á¶±Ý ¾Ö¸¦ ¸Ô¾ú´Ù.

±×¸®°í, TextArea ´Â TextField¿Í °°ÀÌ keyDownºÎºÐ¸¸ CopyÇÏ¸é µÈ´Ù.







4. ÀÚ¹Ù ÇÑ±Û ÀԷ±⠻ç¿ëÇϱâ

´ÙÀ½À¸·Î´Â ÀÌ ÀÚ¹Ù ÇÑ±Û ÀԷ±âÀÇ »ç¿ë¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú´Ù.

ÀÌ·¸°Ô ¸¸µé¾îÁø TextFieldKor Ŭ·¡½º¿Í TextAreaKor Ŭ·¡½º¸¦ TextField ¿Í TextArea ´ë½Å »ç¿ëÇÏ¸é µÇ°í ±× »ç¿ë ½Ç·Ê¸¦ ¾Æ·¡ ±×¸²¿¡¼­ º¸¿´´Ù.



[±×¸² 1]



<±×¸² 1> ¿¡ º¸´Â ¹Ù¿Í °°ÀÌ À̰ÍÀº Window Resource¸¦ »ç¿ëÇϹǷΠWindowÀÇ ÇÑ¿µ Ç¥½Ã±âÀÇ

¸ð½ÀÀÌ Á¦´ë·Î ÀÛµ¿ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

À̰ÍÀº °£´ÜÇÑ ¾Ë°í¸®ÁòÀÌÁö¸¸ Áö±ÝÀÇ Interner ¿­Ç³ÀÇ È¯°æ¿¡ ¸ÂÃß¾î Àú¸¶´Ù ±¸ÃàÇÏ·Á´Â Interanet Business¿¡ °³¹ßÀÇ È®À强¿¡ ºñÃß¾î º¼ ¶§´Â FontÀÇ ±âÁ¸ÀÇ È°¿ë ¹× °³¹ß°ú ±âŸ Window¿¡¼­ Áö¿øÇÏ´Â ¿Ü±¹¾î¸¦ ÀÚ¹Ù·Î ±¸ÇöÇÒ ¼ö ÀÖ´Â ±¸Çö±â¹ýÀ¸·Î »ý°¢µÇ¹Ç·Î ¿©·¯ °÷¿¡¼­ Ȱ¿ëµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

class TextFieldKor extends TextField {

//ÇÑ±Û ÀÔ·Â ¸ðµå¿¡¼­ÀÇ ÀÌÀüÀÇ Å° ÀÔ·ÂÀÌ dot¿´À» ¶§

static boolean dotStatus = false;

static boolean korWait = false;

static int Arrow = 0;

String korString;

static char korChar[] = new char[2];

// »ý¼ºÀÚ

TextFieldKor()

{

super("");

}

TextFieldKor(int cols)

{

super(cols);

}

// ¾î¶² ¹®ÀÚ¿­À» °¡Áö°í »ý¼ºÀÚÈ£Ãâ

public TextFieldKor(String text)

{

super(text);

}


public synchronized boolean keyDown(Event evt,int key)

{

//Enter Key

if(key == 10){

// ÇÑ±Û ÀԷ¸ðµåÀÇ »óŸ¦ üũ

if(Arrow == 3) {

Arrow = 1;

// ÇöÀçÀÇ PositionÀ» ±¸ÇÑ´Ù.

int selStart = getSelectionStart();

//¹ö±×·Î ÀÎÇÑ °ÅÁö¸¸ ¹Ýº¹µÈ ±ÛÀÚ¸¦ Áö¿ì°í Á¤»óÀûÀÎ ¹®ÀÚ¿­·Î

BufferingÀ» ÇÑ´Ù.

korString = getText().substring(0,getSelectionStart()-2)

+ getText().substring(getSelectionStart());

setText(korString);

select(selStart,selStart);

}

return false;

}

//¿ÞÂÊ È­»ìÇ¥ key

if(key == 1006 ){

if(Arrow == 3) {

Arrow = 1;

int selStart = getSelectionStart();

korString = getText().substring(0,getSelectionStart()-2)

+ getText().substring(getSelectionStart());

setText(korString);

select(selStart,selStart);

}

return false;

}

if(key == 1007) {

if(Arrow == 3) {

Arrow = 1;

int selStart = getSelectionStart();

korString = getText().substring(0,getSelectionStart() -2) +

getText().substring(getSelectionStart());

setText(korString);

select(selStart,selStart);

}

return false;

}


if(key == 164 && (korWait == false)) {

return true;

}

// ù ¹øÂ° ÇѱÛŰ À̺¥Æ®¿¡ ´ëÇØ¼­

if((korWait == false) && (key >= 176) && (key <= 200))

{

korChar[0] = (char)key;

korWait = true;

Arrow = 1;

return true;

}

//µÎ ¹øÂ° ÇѱÛŰ À̺¥Æ®¿¡ ´ëÇØ¼­

else if((korWait == true) && (key >= 161) && (key <=254))

{

korChar[1] = (char)key;

korWait = false;

Arrow = 3;

int selStart = getSelectionStart();

korString = getText();

//Á¡ÀÇ ÀÔ·ÂÀÌ Àü¿¡ ÀÖ¾ú´Â °¡¸¦ üũ

if((getText().charAt((selStart < 1 ) ? 0 : selStart-1) == '.') && (selStart == getText().length()))

{

selStart = selStart - 1;

dotStatus = true;

}

// ¿Ï¼ºµÈ ÇÑ±Û ¹®ÀÚ¿¡ ´ëÇÑ Buffering

korString = korString.substring(0,selStart) + new String(korChar) + korString.substring(selStart,korString.length());

setText(korString);

if(dotStatus == true) {

dotStatus = false;

Arrow = 0;

korWait = false;

korbyte = false;

select(selStart + 4,selStart + 4);

select(getSelectionStart() +1,getSelectionStart()+1);

}

else {

if(selStart < getText().length() - 4) {

select(selStart+2,selStart+4);

}

else {

select(selStart +2,selStart+4);

}

}

return true;

}

Arrow = 0;

return false;

}

protected String paramString() {

String str = super.paramString() + ",text=" + getText();

return str + ",selection=" + getSelectionStart() + "-" + getSelectionEnd();

}

}

5. °á·Ð

ÀÌÁ¦±îÁö ÀÚ¹Ù¸¦ ÀÌ¿ëÇÑ ÇÑ±Û ÀԷ±⸦ ±¸ÇöÇØ º¸¾Ò´Ù. ¾ÆÁ÷Àº ÄÚµå ÀÚü°¡ »ó´çÈ÷ ¹Ì¼÷ÇÑ ºÎºÐÀÌ Àִµ¥, ³¡±îÁö º¸¾ÆÁֽŠÁ¡¿¡ ´ëÇÏ¿© °¨»çµå¸°´Ù. ¹ÌÈíÇϳª¸¶ ÀÌ Äڵ带 ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» °³¹ßÇϴµ¥ ¸¹Àº µµ¿òÀÌ µÇ¾úÀ¸¸é ÇÑ´Ù.