Á¦¸ñ : Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 [9] ¾È³çÇϼ¼¿ä. Ç㸣¹ÌÀÔ´Ï´Ù. À̹ø °­Á¿¡¼­´Â Àú¹ø°­Á¿¡ À̾ °´Ã¼ÀÇ ¸â¹ö ÇÔ¼öµé¿¡ ´ëÇؼ­ ÀÚ¼¼È÷ ¾Ë¾Æº¸°ÚÀ¾´Ï´Ù. °¢ Ŭ·¡½ºµéÀº »ý¼ºÀÚ,load ÇÔ¼ö,¼Ò¸êÀÚ¸¦ °¡Áö°í ÀÖÀ¾´Ï´Ù. (¼Ò¸ê ÀÚ´Â ¾ø´Â °Íµµ ÀÖÁö¸¸..) C++ ¿¡ ´ëÇؼ­ ÀÚ¼¼È÷ ¸ð¸£½Ã´Â ºÐÀ» À§Çؼ­ Á¶±Ý ¾ð±ÞÇÏÀÚ¸é »ý¼ºÀÚ´Â ¼±¾ð½ÃÀÇ ÃʱâÈ­¸¦ ´ã´çÇÕ´Ï ´Ù. ¼±¾ðÇÒ¶§ Àü¿ë¸â¹ö µî¿¡ °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖÁÒ. ÇÏÁö¸¸ ÀÏ´Ü ¼±¾ðÇÑ ÈÄ¿¡´Â ¼±¾ðÀ» Ãë¼ÒÇÏÁö ¾ÊÀ¸¸é¼­ Àü¿ë¸â¹öÀÇ °ªÀ» ¹Ù²Ù ´Â ÀÏÀÌ ÇÊ¿äÇѵ¥ À̸¦ À§ÇÑ ¸â¹öÇÔ¼ö¸¦ µÎ¾î load ¶ó´Â À̸§À» ºÙ¿´À¾´Ï´Ù. ¶ÇÇÑ ¼±¾ðºí·°ÀÌ ³¡³ª¸é ÀÚµ¿À¸·Î »ý¼ºÀÚ°¡ È£ÃâµË ´Ï´Ù. ÀÌ »ý¼ºÀÚ´Â º¸Åë ³»ºÎ ¹öÆÛÀÇ delete µî¿¡ »ç¿ëµË´Ï´Ù. hwindow::hwindow(char *t,wcolor c,width s) { titl=new char[strlen(t)+1]; strcpy(titl,t); color=c; // wcolor move size=s; // SIZE move } void hwindow::load(char *t,wcolor c,width s) { if (titl) delete titl; titl=new char[strlen(t)+1]; strcpy(titl,t); color=c; size=s; } hwindow::~hwindow() { delete titl; } À§ÀÇ ¼¼ ÇÔ¼ö°¡ ¹Ù·Î hwindow ÀÇ »ý¼ºÀÚ,load ÇÔ¼ö,¼Ò¸êÀÚ ÀÔ´Ï ´Ù. ¾ð¶æ º¸¾Æµµ »ý¼ºÀÚ¿Í load ÇÔ¼ö´Â °ÅÀÇ ºñ½ÁÇÏ´Ù´Â °ÍÀ» ¾Ë °Ô µË´Ï´Ù. ÇÏÁö¸¸ hwindow mesgh("ABCD",mesgc,mesgw); ó·³ ÇÏ¸é »ý¼ºÀÚ°¡ È£ÃâµÇÁö¸¸ ±×ÈÄ¿¡ ³»¿ëÀ» ¹Ù²Ù°íÀÚ Çϸé mesgh.load("ÇѱÛ",mesgc,mesgw); ó·³ ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÁÖÀÇÇØ ÁÖ¼¼¿ä.±×·³ À©µµ¿ìÀÇ ´Ù¸¥ ¸â¹ö ÇÔ¼öµéÀ» »ìÆ캸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. void hwindow::clrscr(int x,int y) { width w; int xx,yy; w=rsize(); xx=w.ret_xwidth(); yy=w.ret_ywidth(); hgBoxFill(x+13,y+33,x+xx-13,y+yy-13,WHITE); } À§ ÇÔ¼ö´Â À©µµ¿ìÁß ³»ºÎ·Î ÆǴܵǴ ºÎºÐ (x+13,y+33) ~ (x+xx-13,y+yy-13) À» ¹è°æ (WHITE) ·Î Áö¿öÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ½ºÅ©·Ñ ¾÷´Ù¿î ÇÔ¼öµµ ¸¶Âù°¡Áö À̹ǷΠ»ý·«ÇÏ°í... box ÀÇ Á¤ÀÇ ·Î °¡º¾½Ã´Ù. hbox::hbox(char *i[MAXITEM],wcolor c,width s) { int pointer=0; while (strcmp(i[pointer],"")) { items[pointer]=new char[strlen(i[pointer])+1]; strcpy(items[pointer],i[pointer]); pointer++; } items[pointer]=new char[3]; strcpy(items[pointer],""); color=c; size=s; } i ´Â string ÀÇ ¹è¿­ÀÔ´Ï´Ù. ÀÌ°ÍÀÇ ³¡ÀÎ "" ¿¡ µµ´ÞÇϱâ Àü¿¡´Â Àü¿ë¸â¹ö¸¦ È®º¸ÇÏ°í copy ÇØ ³Ö½À´Ï´Ù. load ÇÔ¼öµµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. hbox::~hbox() { int pos=0; while (strcmp(items[pos],"")) delete items[pos++]; if (items[pos]) delete items[pos]; } ¼Ò¸êÀÚ¿¡¼­´Â È®º¸µÇ¾ú´ø items Àü¿ë¸â¹ö¸¦ delete ÇÏ°í ÀÖÀ¾´Ï ´Ù. hbar::hbar(bcolor c,width s) { color=c; size=s; } hbar ÀÇ »ý¼ºÀÚ´Â °£´ÜÇÕ´Ï´Ù. ±×Àú ´ëÀÔ¸¸ ÇÒ »ÓÀÔ´Ï´Ù. ±×·³ button ÀÇ Á¤ÀǸ¦ º¾½Ã´Ù. hbutton::hbutton(char *i,wcolor c,width s) { item=new char[strlen(i)+1]; strcpy(item,i); color=c; size=s; } ¿ª½Ã ´Ü¼øÈ÷ ´ëÀÔ¸¸ ÇÏ°í ÀÖÀ¾´Ï´Ù. ±×·³ ÀÌÁ¦ ÀÌ·¸°Ô ´ëÀÔµÈ °ª À» ÀÌ¿ëÇؼ­ È­¸é¿¡ ±×·ÁÁÖ´Â ºÎºÐÀÌ ¹®Á¦ÀÔ´Ï´Ù. ¿ì¼± À©µµ¿ì¸¦ ±×¸®´Â ºÎºÐÀ» º¸°ÚÀ¾´Ï´Ù. void hwindow::draw_hwindow(int x,int y) { width w; wcolor s; int xx,yy; int bd,back,fore; int tback; int temp; w=rsize(); s=rcolor(); xx=w.ret_xwidth(); // x Å©±â yy=w.ret_ywidth(); // y Å©±â bd=s.ret_wc_border(); // border fore=s.ret_wc_tfore(); // title fore tback=s.ret_wc_tback(); // title back temp=dft_bstyle[4][0]; // title À» À§ÇØ Àӽà º¸Á¸ dft_bstyle[4][0]=tback; hgDrawBorder(x,y,x+xx,y+yy,dft_bstyle[bd],FILL); hgDrawBorder(x+8,y+8,x+xx-8,y+yy-8,dft_bstyle[5-bd], FILL); hgDrawBorder(x+8,y+8,x+8+16,y+8+20,dft_bstyle[2],FIL L); hgDrawBorder(x+xx-8-16,y+8,x+xx-8,y+8+20,dft_bstyle[ 2],FILL); hgDrawBorder(x+8+16,y+8,x+xx-8-16,y+8+20,dft_bstyle[ 4],FILL); hgDrawBorder(x+8+4,y+8+20+4,x+xx-8-4,y+yy-8-4,dft_bs tyle[0],FILL); dft_bstyle[4][0]=temp; hgSetTFcolor(fore); unsigned xoffset; // temp variable xoffset=((x+8+16)+(x+xx-8-16))/2; xoffset=xoffset-strlen(titl)*4; hgOutTextXy(xoffset,y+10,titl); // title Ç¥½Ã } ¾î¶»½À´Ï±î.. hgDrawBorder ÀÇ ¾îÁö·¯¿î Á¶ÇÕÀ¸·Î Á» ¾Ë¾Æº¸±â Èûµé°Ô µÇ¾úÀ¾´Ï´Ù. »ç½Ç draw ÇÔ¼ö´Â °³°³ÀÎÀÌ µû·Î µðÀÚÀÎ ÇÒ ¼öµµ ÀÖ´Â °ÍÀ̹ǷΠÀϹݼºÀÌ ÀÖ´Ù°í´Â ÇÒ ¼ö ¾ø°ÚÀ¾´Ï´Ù. À§ÀÇ ÇÔ¼ö´Â Á¦°¡ ³ª¸§´ë·Î µðÀÚÀÎ Çغ» °ÍÀÔ´Ï´Ù. ¾ÆÁ÷ ¸¶¿ì½º¸¦ Áö ¿øÇÏÁö ¾ÊÀ¸¹Ç·Î ¿ÏÀüÇÑ ¸ð¾çÀ» °®Ãá°ÍÀº ¾Æ´ÏÁö¸¸ ±×·±´ë·Î º¼ ¸¸ÇÕ´Ï´Ù. ÀÚ·á½ÇÀÇ ÆùÆ® Viewer 1.0 À̳ª Ç㸣¹ÌÇѶ󵥸ð 2.0 À» º¸¸é ÀÌ À©µµ¿ìÀÇ ¸ð¾çÀ» º¼ ¼ö°¡ ÀÖÁÒ. »ç½Ç À§ÀÇ hgDrawBorder ÀÇ Á¶ÇÕµîÀº ±×¸® ½Å°æ¾µ ÇÊ¿ä°¡ ¾øÀ¾´Ï´Ù. ¸¶À½´ë ·Î °¢ÀÚ °³¼º¿¡ ¸Â°Ô µðÀÚÀÎ ÇÏ´Â °ÍÀÌ ¿ÀÈ÷·Á ´õ ¹ßÀüÀûÀÏÅ×´Ï ±î¿ä. void hbox::draw_hbox(int x,int y) { width w; wcolor s; int xx,yy; int bd,fore; w=rsize(); s=rcolor(); xx=w.ret_xwidth(); yy=w.ret_ywidth(); bd=s.ret_wc_border(); fore=s.ret_wc_tfore(); int i,count=0; hgDrawBorder(x,y,x+xx,y+yy,dft_bstyle[bd],FILL); hgSetTFcolor(fore); for (i=y+4;;i+=20) { hgOutTextXy(x+6,i,items[count++]); if (!strcmp(items[count],"")) break; } } box ¸¦ ±×¸®´Â °úÁ¤Àº À©µµ¿ì º¸´Ù´Â °£´ÜÇÕ´Ï´Ù. ±×Àú ¹Ú½º¸¦ Çϳª¸¸ ±×¸®°í ±× ¾È¿¡ items µéÀ» Ç¥½ÃÇØÁÖ¸é ±×¸¸ÀÔ´Ï´Ù. ´Ü box ´Â ¸â¹öÇÔ¼ö·Î ±× ÀÚ½ÅÀÇ ÀúÀå/º¹±ÍÇÔ¼ö¸¦ °¡Áö°í ÀÖÀ¾´Ï´Ù. ÀÌ ÇÔ¼öµéÀº hgGetImage,hgPutImage ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÀúÀå/º¹±Í ¸¦ ÇØÁÝ´Ï´Ù. ÁÖÀÇÇÒ°ÍÀº restore_hbox ÇÔ¼ö´Â ¸¶Áö¸·¿¡ buff ÀÇ delete ¸¦ ÀÚµ¿À¸·Î ÇàÇÕ´Ï´Ù. ÇÏÁö¸¸ Function À¸·Î ¾²ÀÌ´Â hgPutImage ÇÔ¼ö´Â ¹öÆÛ¸¦ delete ÇÏÁö ¾ÊÀ½À» ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. void hbox::save_hbox(int x,int y) { width w; int xx,yy; w=rsize(); xx=w.ret_xwidth(); yy=w.ret_ywidth(); buff=new char[hgImgSize(x,y,x+xx,y+yy)]; hgGetImage(x,y,x+xx,y+yy,buff); } void hbox::restore_hbox(int x,int y) { width w; int xx,yy; w=rsize(); xx=w.ret_xwidth(); yy=w.ret_ywidth(); hgPutImage(x,y,x+xx,y+yy,buff); delete buff; } ±×·³ °è¼ÓÇؼ­ bar ¸¦ ±×·Áº¾½Ã´Ù. void hbar::draw_hbar(int x,int y,int option) { width w; int xx,yy; w=rsize(); int erase[4]={ LIGHTGRAY,LIGHTGRAY,LIGHTGRAY,3 }; xx=w.ret_xwidth(); yy=w.ret_ywidth(); if (option==DRAW) hgDrawBorder(x,y,x+xx,y+yy,dft_bstyle[5],NOF ILL); else hgDrawBorder(x,y,x+w.ret_xwidth(),y+w.ret_y width(),erase,NOFILL); } option ¿¡ µû¶ó¼­ µÎ°³¸¦ ±×¸³´Ï´Ù. µÎ°¡Áö ¸ðµÎ NOFILL ¿É¼ÇÀ» ÀÌ¿ëÇÏ°í Àִµ¥ DRAW ¸é default set Áß 5 ¸¦.. ERASE À̸é erase[4] ·Î Á¤ÀÇµÈ ¸ð½ÀÀ¸·Î ±×·Á¼­ Áö¿öÁÝ´Ï´Ù. ±×·³ ¸¶Áö¸·À¸ ·Î button À» ¾Ë¾Æº¾½Ã´Ù. void hbutton::draw_hbutton(int x,int y,int option) { width w; wcolor s; int xx,yy; int fore; w=rsize(); s=rcolor(); xx=w.ret_xwidth(); yy=w.ret_ywidth(); fore=s.ret_wc_tfore(); int xoffset; if (option==NOPUSH) hgDrawBorder(x,y,x+xx,y+yy,dft_bstyle[5],FILL); else hgDrawBorder(x,y,x+xx,y+yy,dft_bstyle[6],FILL); xoffset=x+w.ret_xwidth()/2-strlen(item)*4; hgSetFore(fore); hgOutTextXy(xoffset,y+3,item); } button Àº ¿ª½Ã PUSH ¿Í NOPUSH ¿¡ µû¶ó ´Ù¸¥µ¥ PUSH ½Ã¿¡´Â 5,NOPUSH ½Ã¿¡´Â 6 À» ÀÌ¿ëÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¼ýÀÚ·Î µÇ¾î ÀÖ´Â °Í Àº »ç½Ç #define À¸·Î ¹Ù²Ù¾î ³õ´Â °ÍÀÌ ¹Ù¶÷Á÷ ÇÏÁö¸¸ ÀÏ´Ü ¾î ¶² ¹æÇâÀ¸·Î Á¤¸®µÉÁö ¸ð¸£´Â ºÎºÐÀº ¼Õ´ëÁö ¾Ê±â·Î ÇßÀ¾´Ï´Ù. »ç¿ëÀÚ°¡ hgDrawBorder ÇÔ¼ö¸¦ Á÷Á¢ ÀÌ¿ëÇÏ´Â ÀÏÀº º°·Î ¾øÀ» °Í ÀÔ´Ï´Ù. ¸¸ÀÏ ÀÌ¿ëÇÏ°Ô µÈ´Ù¸é dft_bstyle À» extern ¼±¾ðÇÏ°í ÀÌ¿ëÇÏ¸é µÇ°ÚÁÒ. óÀ½ °èȹ¿¡´Â °´Ã¼ (Object) Áß¿¡ Icon ÀÌ µé ¾î°¡ ÀÖ¾úÀ¾´Ï´Ù. ÀÌ Icon Àº File ȤÀº ³»Àå Library ¿¡¼­ ºÒ·¯ ¿Í¼­ ÀÓÀÇÀÇ À§Ä¡¿¡ Ç¥½ÃÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á ÇßÀ¾´Ï´Ù. ÀÌ´Â Icon Draw v1.0 ÀÌ ¿Ï¼ºµÇ°Ô µÇ¸é 1.6 ÀÌÈÄÀÇ ¹öÁ¯¿¡ Ãß°¡µÉ °ÍÀÔ´Ï ´Ù. ¾ÕÀ¸·Î ÇÑÀÚ ±â´É,¸¶¿ì½º ±â´Éµî ²À ÇÊ¿äÇÑ ±â´ÉµéÀÌ ¹«Ã´ÀÌ ³ª ¸¹½À´Ï´Ù. À̶§¹®¿¡ ´Ù¼ÒÀÇ µðÀÚÀÎ À庮¿¡ ¸·ÇôÀÖ´Â Hercules ·çƾ Ãß°¡ ÀÛ¾÷Àº ÀÏ´Ü ¿¬±âÇϵµ·Ï ÇßÀ¾´Ï´Ù. Hercules »ç¿ëÀÚ ¿©·¯ºÐ²²´Â Á¤¸» Á˼ÛÇÏ°Ô »ý°¢ÇÕ´Ï´Ù. ¿ì¼± Beta Testing À» À§ Çؼ­ Simple Graphic ·çƾ,ÇÑ±Û ÀÔ/Ãâ·Â,À©µµ¿ì·çƾ,Quick ·çƾ À» ¹­¾î¼­ v1.5 ·Î ³»³õÀ» °ÍÀÔ´Ï´Ù. ´ÜÁ¡À̶ó¸é VGA ¹Û¿¡´Â Áö ¿øÇÏÁö ¾Ê½À´Ï´Ù. ¼øÀüÈ÷ À©µµ¿ì ·çƾÀÇ µðÀÚÀÎ ¹®Á¦ ¶§¹®Àε¥ ÇØ°áµÇ´Â ´ë·Î °ð Çãŧ·¹½º·çƾÀ» Ãß°¡Çϵµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ±×·³ ´ÙÀ½ °­Á´ À§¿¡¼­ Define ÇÑ ·çƾµéÀ» »ç¿ëÇؼ­ ÆíÀǸ¦ À§ÇÑ Quick ·çƾµéÀ» ¼³°èÇØ º¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ÀÏ´Ü ÀÌ ·çƾ±îÁö ¿Ï ¼ºÇÏ°Ô µÇ¸é v1.5 ¸¦ ¹­¾î¼­ ³»³õµµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ±×·³..Ç㸣 ¹Ì!..