Á¦¸ñ : Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 [10] ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº Quick ·çƾ¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. Áö±Ý±îÁö ¼³°èÇØ¿Â ¶óÀ̺귯¸®ÀÇ Æ¯Â¡À» °á·ÐÁþÀÚ¸é ¼¼¼¼ÇÑ Á¦¾îÀÔ´Ï´Ù. ±×·¡ÇÈ ·çƾ,Ãâ·ÂÄ¿³Î,ÀÔ·ÂÄ¿³Î µîÀº °¢°¢ Heap ¿µ¿ª¿¡ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ°í.. ÀÌ Æ÷ÀÎÅ͸¦ ÃÊ ±âÈ­ ÇÔÀ¸·Î½á »ç¿ëÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù. µû¶ó¼­ ºÒÇÊ¿äÇÑ ½ºÅÂƽ ¿µ¿ªÀ» Á¡À¯ÇÏ´Â ÀÏÀº ¾ø°Ô µË´Ï´Ù. ÇÏÁö¸¸ ÇÁ·Î±×·¥ ½ÃÀ۽à ¸Å ¹ø ÀÌ·¸°Ô ÃʱâÈ­ ÇÏ·Á¸é ¹ø°Å·Ó½À´Ï´Ù. »ç½Ç ¸Å¹ø ÃʱâÈ­ ÇÏ´Â °ÍÀÌ ¼¼¼¼ÇÑ Ã³¸®¿¡´Â ¾Ë¸ÂÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì À̸¦ °£´ÜÈ÷ ÇÏ´Â Quick ·çƾÀº ÇÊ¿äÇÑ ¹ýÀÔ´Ï´Ù. Àú´Â Ãâ·Â,ÀÔ·Â,±×·¡ÇÈ,¸ðµå¼³Á¤ ÀÌ·¸°Ô 4 °¡ÁöÀÇ Quickinit ·çƾÀ» ¸¸µé¾úÀ¾´Ï´Ù. Ãâ·ÂÀº VGA Ãâ ·ÂÄ¿³Î.. ÆùÆ®´Â HMAPPLE ü(ÇѱÛ) SMALL ü(¿µ¹®) À» »ç¿ëÇÏ¿´ À¾´Ï´Ù. ±ÛÀÚ ¼Ó¼ºÀº 7 °¡Áö ¸ðµÎ »ç¿ë°¡´ÉÇÏ°Ô ÇÏ¿´À¾´Ï´Ù.ÀÔ·Â Àº ÇÑ±Û 2,3 ¹úÀ» ¸ðµÎ °¡´ÉÇÏ°Ô ÇÏ¿´°í. ±×·¡ÇÈÀº box,boxfill,image,hline,vline µîÀ» Enable ÇÏ¿´À¾´Ï´Ù. ¸ðµå ¼³Á¤ºÎºÐÀº VGA 640x480x16 À» ±âÁØÀ¸·Î ÇÏ¿´À¾´Ï´Ù. À©µµ¿ì ·ç ƾÀ» »ç¿ëÇÏ°íÀÚ ÇÑ´Ù¸é À§ÀÇ ÀÔ,Ãâ·Â,±×·¡ÇÈ ÃʱâÈ­ ·çƾÀ» ¸ð µÎ ¸ÕÀú ½ÇÇàÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¾Æ·¡ÀÇ ÇÔ¼ö Call À» º¸°ÚÀ¾´Ï ´Ù. hgQuickInit(); // ¸ðµå ¼³Á¤ hgQuickInInit(); // ÀÔ·Â ÃʱâÈ­ hgQuickOutInit(); // Ãâ·Â ÃʱâÈ­ hgQuickGraphInit(); // ±×·¡ÇÈ ÃʱâÈ­ . . . hgQuickOutEnd(); // Ãâ·Â ³¡ hgQuickInEnd(); // ÀÔ·Â ³¡ hgQuickEnd(); // ÅؽºÆ® ¸ðµå·Î.. º¸Åë À§ÀÇ ±¸Á¶¸¦ ÅÃÇÏ°Ô µÇ´Âµ¥.. hgQuickGraphEnd(); °¡ ¾ø´Â µ¥ ÁÖÀÇÇϼ¼¿ä. graphic ·çƾÀº Table ÀÇ È®º¸µîÀÌ ¾ø±â¶§¹®¿¡ ´Ù½Ã End ÀÛ¾÷À» ÇØÁÙ ÇÊ¿ä°¡ ¾øÀ¾´Ï´Ù. ±×·³ À§ÀÇ ÇÔ¼öµéÀÇ ¼Ò ½º ¸®½ºÆ®¸¦ º¸°ÚÀ¾´Ï´Ù. void hgQuickGraphInit() { hgEnableBoxFill(&hgVBoxFill); hgEnableImage(&hgVGetImage,&hgVPutImage); hgEnableHVline(&hgVhline,&hgVvline); } void hgQuickInInit() { hgHanInInit(); hg2bulInit(); hg3bulInit(); hgEnableAttr(fREVERSE); } void hgQuickInEnd() { hgHanInFree(); } void hgQuickInit() { hgSetDisplay(hgVGA640x480x16); hgSetMode(hgGRAPHICS); hgSetPalette(); hgSetBack(LIGHTGRAY); hgColorClearScreen(); } void hgQuickEnd() { hgSetMode(hgTEXT); } void hgQuickOutInit() { hgSetHanOut(&vputchh); hgSetEngOut(&vputche); hgSetCodeTable(); hgSetCtable(HAN_8x4x4); hgEnableAttr(fDIM); hgEnableAttr(fREVERSE); hgEnableAttr(fUNDER); hgEnableAttr(fOUTLINE); hgEnableAttr(fTHREED); hgEnableAttr(fBOLD); hgEnableAttr(fSHADOW); hgSetMaxFontRoom(HAN_8x4x4,ENG_256); hgSetHanFont(HMAPPLE_HAN); hgSetEngFont(SMALL_ENG); } void hgQuickOutEnd() { hgFreeFont(); hgFreeCodeTable(); } ÀÌ ÇÔ¼öµéÀ» º¸¸é À̹ø ¶óÀ̺귯¸®ÀÇ Æ¯Â¡ÀÌ Àß ³ªÅ¸³ª ÀÖÀ¾´Ï ´Ù. À§ÀÇ ·çƾÀº ÀÏ´Ü ÆíÀǸ¦ À§Çؼ­ °ÅÀÇ ¸ðµç ·çƾÀ» ¸µÅ©ÇÏ°í ÀÖÀ¾´Ï´Ù¸¸.. »ç½Ç »ç¿ëÀÚÀÇ Á¦¾î¿¡ µû¶ó¼­ ÀÌ ·çƾµéÀÇ ÀûÀýÇÑ Á¶ÇÕÀÌ °¡´ÉÇÕ´Ï´Ù. »ç¿ëÀÇ ±âº»ÀÌ µÇ´Â ÇÔ¼öµéÀÌ´Ï ±× ³»¿ëÀÇ Çü½ÄÀ» Àß ºÁµÎµµ·Ï Çϼ¼¿ä. ±×·³ ÀÌÁ¦ Quick window ·çƾÀ» º¾½Ã´Ù. ÀÚ¼¼ÇÑ ¼Ò½ºÀÇ ¼³¸íÀº ¾ÈÇÏ°ÚÀ¾´Ï´Ù. ÇÔ¼öÀÇ ±â´É¿¡ ÁßÁ¡À» µÎ°í º¸¼¼¿ä. int wintitlefore=WHITE; int wintitleback=DARKGRAY; char *gbuff; int gx1,gy1,gx2,gy2; int saveflag; extern int dft_bstyle[8][4]; /* extern ¼±¾ð */ void savearea(int x1,int y1,int x2,int y2); // some prototype ÀÏ´Ü ret_~~ µÎ ÇÔ¼öµéÀº µÚÀÇ ÇÔ¼öµéÀ» À§Çؼ­ ÇÊ¿äÇÑ ÇÔ¼öµéÀÔ ´Ï´Ù. ret_number ´Â string ¹è¿­À» Àμö·Î ¹Þ¾Æ¼­ string ÀÇ °¹ ¼ö¸¦ ¼¼ÁÝ´Ï´Ù. ret_maxlength ´Â ÃÖ°í±æÀ̸¦ °è»êÇØ ³À´Ï´Ù. int ret_number(char *text[]) { int pos=0; while (strcmp(text[pos],"")) pos++; return pos*16; } int ret_maxlength(char *text[]) { int pos=0; int length=-1; int slen; while (strcmp(text[pos],"")) { slen=strlen(text[pos]); if (slen>=length) length=slen; pos++; } return length*8; // for graphic } ¾Æ·¡ ÇÔ¼ö´Â x1,y1~x2,y2 ¿¡ title ·Î À©µµ¿ì¸¦ Ç¥½ÃÇØÁÝ´Ï´Ù. hgPrtWTextXy ¶ó´Â ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ ÀÌ ÇÔ¼ö´Â À©µµ¿ì¸¦ ±×¸® °í ³»ºÎ¿¡ Text ¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. À̶§ Text °¡ "" ÀÎ °æ ¿ì°¡ ¹Ù·Î À©µµ¿ì¸¸À» ±×¸®´Â °æ¿ì°ÚÁÒ. void hgPrtWindowXy(int x1,int y1,int x2,int y2,char *title) { char *text[]={ "" }; hgPrtWTextXy(x1,y1,x2,y2,title,text); } ¾Æ·¡¿Í °°ÀÌ ³¡¿¡ Q °¡ ºÙÀº ÇÔ¼öµéÀÇ Æ¯Â¡Àº Text Item µéÀ» °¡ Áö°í ÀÖÀ¸¸ç x1,y1~x2,y2 ´ë½Å¿¡ x,y ¸¸À¸·Î ÀÔ·ÂÀ» ¹Þ´Â ´Ù´Â µ¥ ÀÖÀ¾´Ï´Ù. ÀÌ·¯ÇÑ ÇÔ¼öµéÀº Text Item ÀÇ ±æÀÌ,¼ö¸¦ ÀÚµ¿À¸·Î °è»êÇÏ¿© x,y ¸¸ ÁöÁ¤ÇÏ¸é ±× Å©±â¸¦ ¾Ë¸Â°Ô Á¤ÇØ ÁÝ´Ï´Ù. ÆíÀÇ ¸¦ À§ÇØ Ãâ·ÂÇÒ¶§ ÁÁÀº ÇÔ¼öÀÔ´Ï´Ù. void hgPrtWTextXyQ(int x,int y,char *title,char *text[]) { int max=ret_maxlength(text); int num=ret_number(text); hgPrtWTextXy(x,y,x+max+32,y+num+54,title,text); } hgPrtWTextXy ÇÔ¼ö°¡ À§ÀÇ µÎ ÇÔ¼öÀÇ ½ÇÁ¦ÀûÀΠ󸮸¦ ´ã´çÇÕ´Ï ´Ù. Àü °­Á¿¡¼­ Çß´ø °Íó·³ hwindow ¸¦ ¼±¾ðÇÏ¿© À̸¦ ÀÌ¿ëÇØ ¼­ À©µµ¿ì¸¦ ±×¸®°í ¾Ë¸ÂÀº ¿µ¿ª¿¡ text ¸¦ Ãâ·ÂÇØ ÁÝ´Ï´Ù. text ÀÇ ¼¼·Î°£°ÝÀº 16 dot ÀÔ´Ï´Ù. º°·Î Ưº°ÇÑ »çÇ×Àº ¾øÁö¸¸ savearea ¶ó´Â ÇÔ¼ö°¡ Áß°£¿¡ ³ª¿É´Ï´Ù. saveflag ¶ó´Â Ç÷¡±×¿¡ ÀÇÇؼ­ ÀÌ ÇÔ¼ö°¡ ¼öÇàµÇ±âµµ Çϴµ¥... ÀÌ Ç÷¡±×ÀÇ ±â´ÉÀº Ãâ ·ÂÀü È­¸éÀúÀå ON ? OFF ÀÇ ±â´ÉÀ» ÇÕ´Ï´Ù. Default ó·³ ÀÌ Çà ·¡±×°¡ OFF ÀÌ¸é ±×Àú ÇÔ¼öµéÀº Ãâ·ÂÇÒ »ÓÀÔ´Ï´Ù. ±×·¯³ª ON ÀÌ ¸é (hgSetSaveOn(); ¿¡ ÀÇÇؼ­ ON ÀÌ µÊ) Ãâ·ÂÀü¿¡ Àü¿ª¹öÆÛ¿¡ È­¸éÀ» ÀúÀåÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö·Î ºÎÅÍ µÇµ¹¾Æ ¿Í¼­ ÇÁ·Î±×·¡¸Ó°¡ ÆíÇÑ ½Ã±â¿¡ hgRestore(); ÇÔ¼ö¸¦ ºÎ¸£¸é ¾Æ±î ÀúÀåµÇ¾ú´ø ºÎºÐ ÀÌ º¹±ÍµÇ¸é¼­ ¹öÆÛ°¡ delete µË´Ï´Ù. ÀÌ´Â ÀÌ SelectBox ,ButtonBar µî¿¡µµ ¸ðµÎ ÇØ´çµÇ´Â »çÇ×ÀÔ´Ï´Ù. Áï Ãâ·Â¸¸ ÇÒ °Í À̳Ä,ÀúÀå/º¹±Í¸¦ ÇÒ °ÍÀ̳ĸ¦ °áÁ¤ÇÏ´Â ¹®Á¦°¡ µÇ°ÚÁÒ. void hgPrtWTextXy(int x1,int y1,int x2,int y2,char *title,char *text[]) { int xwidth=x2-x1+1; int ywidth=y2-y1+1; int ch; wcolor msgc(2,wintitlefore,wintitleback,0); width msgs(xwidth,ywidth); hwindow msgw(title,msgc,msgs); if (saveflag) savearea(x1,y1,x1+xwidth,y1+ywidth); msgw.draw_hwindow(x1,y1); int pos=0; int save=hgGetTFcolor(); hgSetTFcolor(ZERO); // for text color while (strcmp(text[pos],"")) { hgOutTextXy(x1+16,y1+38+pos*16,text[pos]); pos++; } hgSetTFcolor(save); } À½.. ¾Æ·¡ÀÇ ÇÔ¼ö´Â x1,y1~x2,y2 ¿¡ Box ¸¦ ¿­°í items ¸¦ Ãâ·Â ÇØ ÁØÈÄ Selection Bar ¸¦ ±×·Á¼­ ¼±ÅÃÇÏ°Ô ÇÕ´Ï´Ù. À̶§ÀÇ ¼±Åà °á°ú¸¦ ¸®ÅÏ°ªÀ¸·Î °¡Áý´Ï´Ù. ESC ÀÇ °æ¿ì¿¡´Â -1 À» ¸®ÅÏÇÏ°Ô µË´Ï´Ù. ¼Ò½º´Â °£°áÇϹǷΠº°´Ù¸¥ ¼³¸íÀº »ý·«ÇÕ´Ï´Ù. int hgSelectXy(int x1,int y1,int x2,int y2,char *items[]) { int xwidth=x2-x1+1; int ywidth=y2-y1+1; /* message box define */ width mesgs(xwidth,ywidth); wcolor mesgc(2,ZERO,LIGHTGRAY,0); hbox mesgb(items,mesgc,mesgs); /* message bar define */ width mbars(xwidth-4,20); bcolor mbarc(2,0); hbar mbarb(mbarc,mbars); int pos=0; // bar position int ch; // key input int max; // number of items while (strcmp(items[pos],"")) pos++; max=pos; pos=0; if (saveflag) mesgb.save_hbox(x1,y1); mesgb.draw_hbox(x1,y1); while (1) { mbarb.draw_hbar(x1+2,y1+pos*20+2,DRAW); ch=inkey(WAIT); mbarb.draw_hbar(x1+2,y1+pos*20+2,ERASE); if (ch==UP) pos--; if (ch==DOWN) pos++; if (ch==ESC || ch==RETURN) break; if (pos<0) pos=max-1; if (pos>=max) pos=0; }; if (saveflag) mesgb.restore_hbox(x1,y1); if (ch==ESC) return -1; /* for ESC */ return pos; } ¾Æ·¡ ÇÔ¼ö´Â ¿ª½Ã ³¡¿¡ Q °¡ ºÙÀº ÇÔ¼ö..Áï ±æÀÌ ÀÚµ¿°è»ê Selection Bar ÇÔ¼öÀÔ´Ï´Ù. int hgSelectXyQ(int x,int y,char *items[]) { int flag; int max=ret_maxlength(items); int num=ret_number(items); flag=hgSelectXy(x,y,x+max+12,y+num+19,items); return flag; } ¾Æ·¡ÀÇ ÀÛÀº ÇÔ¼öµéÀº ÀÛÀº ±â´ÉµéÀ» ¼öÇàÇÕ´Ï´Ù. hgClearWindowXy ÇÔ¼ö´Â x1,y1,x2,y2 »çÀÌ¿¡ À©µµ¿ì°¡ ±×·ÁÁ® ÀÖ ´Ù¸é È­¸éÀ» À©µµ¿ì ³»ºÎ¿µ¿ª¸¸ Áö¿öÁÝ´Ï´Ù. ±×¹Û¿¡ Title ÀÇ »ö À» °áÁ¤ÇÏ´Â ÇÔ¼öµéÀÌ ÀÖ°í. saveflag ¸¦ on/off ÇÏ´Â ÇÔ¼öµµ ÀÖ À¾´Ï´Ù. void hgClearWindowXy(int x1,int y1,int x2,int y2) { hgBoxFill(x1+13,y1+33,x2-13,y2-13,WHITE); } void hgSetTitleFore(int color) { wintitlefore=color; } void hgSetTitleBack(int color) { wintitleback=color; } int hgGetTitleFore() { return wintitlefore; } int hgGetTitleBack() { return wintitleback; } void hgSetSaveOn() { saveflag=1; } void hgSetSaveOff() { saveflag=0; } ±×´ÙÀ½Àº input window ¸¦ title ·Î ¿­°í x,y ºÎÅÍ ±æÀÌ n ÀÚ¸¸ Å­ ¹Þ¾Æµé¿©¼­ str ·Î ¸®ÅÏÇØ ÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù. ¾î¶² ³»¿ëÀ» ÀÔ ·Â¹ÞÀ»¶§ »ç¿ëÇϸé ÆíÇÏ°Ô ¾µ ¼ö ÀÖÀ¾´Ï´Ù. ¹°·Ð hgInitStr ÇÔ¼ö ´Â ¹Ì¸® ½ÇÇàµÇ¾îÁ®¾ß ÇÕ´Ï´Ù. (1.0 °ú °°À½) int hgInWTextXy(int x,int y,char *title,char *str,int n) { int y2,x2; int flag; x2=x+n*8+40; /* 40 is adding margin */ y2=y+16+58; hgPrtWindowXy(x,y,x2,y2,title); flag=hgInTextXy(x+20,y+40,str,n); return flag; } Box ¸¦ ±×¸®´Â ÇÔ¼öµµ µÎ°³°¡ ÀÖÀ¾´Ï´Ù. ´Ü¼øÇÏÁö¸¸ È­¸é¿¡ box ¸¦ ±×·ÁÁÖ°í items ¸¦ Ç¥½ÃÇÏ°Ô µË´Ï´Ù. void hgPrtBoxXy(int x1,int y1,int x2,int y2,char *items[]) { wcolor boxc(2,ZERO,LIGHTGRAY,0); width boxw(x2-x1+1,y2-y1+1); hbox boxb(items,boxc,boxw); if (saveflag) savearea(x1,y1,x2+1,y2+1); boxb.draw_hbox(x1,y1); } void hgPrtBoxXyQ(int x,int y,char *items[]) { int max=ret_maxlength(items); int num=ret_number(items); hgPrtBoxXy(x,y,x+max+12,y+num+19,items); } ±×´ÙÀ½Àº bar ¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â Q °¡ ºÙÀº ÆíÀÇ ÇÔ¼ö°¡ ¾øÀ¾´Ï´Ù. Text ¸¦ ÀÎÀÚ·Î Æ÷ÇÔÇÏÁö ¾Ê±â ¶§¹®ÀÌÁÒ. ¶ÇÇÑ ERASE ¿É¼ÇÀÌ ÀÖÀ¸¹Ç·Î Ưº°È÷ saveflag ¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÏÁö´Â ¾Ê½À´Ï ´Ù. void hgPrtBarXy(int x1,int x2,int y,int mode) { bcolor barc(2,0); width barw(x2-x1+1,20); hbar barb(barc,barw); barb.draw_hbar(x1,y,mode); } ¾Æ·¡´Â Button À» ±×·ÁÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù. void hgPrtButtonXy(int x,int y,char *text,int mode) { int max=strlen(text); wcolor btc(2,ZERO,LIGHTGRAY,0); width btw(max*8+10,20); hbutton btb(text,btc,btw); btb.draw_hbutton(x,y,mode); } ¸¶Áö¸·À¸·Î ButtonBar ¸¦ ¼³°èÇßÀ¾´Ï´Ù. Button Bar ÀÇ ±¸¼ºÀº msg,items ·Î ±¸¼ºµË´Ï´Ù. x1,y1~x2,y2 »çÀÌ¿¡ º¹¼± box ¸¦ ±×¸® °í msg ¸¦ Ç¥½ÃÇÑÈÄ hgDHline ÇÔ¼ö·Î °¡·Î º¹¼±À» ±ß°í ±× ¾Æ·¡ ¿¡ items ÀÇ ±æÀÌ¿Í ¼ö¿¡ µû¶ó Àû´çÈ÷ ¹öÆ°À» ±×·ÁÁÝ´Ï´Ù. ±×¸® °í ù¹ø° ¹öÆ°À§Ä¡¿¡ À½°¢ box ¸¦ ±×·ÁÁÝ´Ï´Ù. TAB Å°À̳ª LEFT/RIGHT È­»ìÇ¥¿¡ ÀÇÇؼ­ ¼±ÅÃÀÌ °¡´ÉÇÏ¸ç ¼±ÅÃÇÏ¸é ±× ¹öÆ° ÀÌ ´­¸®°Ô µË´Ï´Ù. ¸®ÅÏ°ªÀº ¹öÆ°ÀÇ ¹øÈ£ÀÔ´Ï´Ù. ÀÌ´Â ¿©·¯°¡Áö »ç½ÇÁß¿¡¼­ Çϳª¸¦ ¼±ÅÃÇÒ ¶§ ¾²ÀÌ°Ô µË´Ï´Ù. »ç½Ç ÇÁ·Î±×·¥ ÇÏ ´Ùº¸¸é Âü ¿ä±äÇÑ ÇÔ¼öÀÌÁÒ. »ý°¢º¸´Ù ÀÌ·¸°Ô ¸î°¡Áö Áß¿¡¼­ ¼± int hgPrtButtonBarXy(int x1,int y1,int x2,int y2,char *msg[],char *items[]) { int fore,back; int pos=y1+10; int ch; int length; if (saveflag) savearea(x1,y1,x2,y2); hgDrawBorder(x1,y1,x2,y2,dft_bstyle[2],FILL); hgDrawBorder(x1+4,y1+4,x2-4,y2-4,dft_bstyle[3],NOFIL L); fore=hgGetTFcolor(); back=hgGetTBcolor(); hgSetTFcolor(ZERO); hgSetTBcolor(LIGHTGRAY); int num=ret_number(msg)/16; for (int i=0;inum-1) { xpos=16+xincre/2+x1;i=0; } if (ch==RETURN) break; } while (1); hgSetTFcolor(fore); hgSetTBcolor(back); hgPrtButtonXy(xpos-strlen(items[i])*4,pos,items[i],P USH); return i; } ±×´ÙÀ½Àº Q ºÙÀº°Å.. int hgPrtButtonBarXyQ(int x,int y,char *msg[],char *items[]) { int max=ret_maxlength(msg); int num=ret_number(msg); int flag; int x2=x+max+32; int y2=y+num+70; flag=hgPrtButtonBarXy(x,y,x2,y2,msg,items); return flag; } ÀÌÁ¦ saveflag ¿¡ °ü·ÃµÈ ÇÔ¼ö¸¸ ³²¾ÒÀ¾´Ï´Ù. savearea ´Â ÀÏ´Ü È­¸éÀ» ÀúÀåÇÏ°í À§Ä¡¸¦ ±â¾ïÇØ µÓ´Ï´Ù. void savearea(int x1,int y1,int x2,int y2) { gbuff=new char[ hgImgSize(x1,y1,x2,y2) ]; hgGetImage(x1,y1,x2,y2,gbuff); gx1=x1;gy1=y1; gx2=x2;gy2=y2; } hgRestore ´Â ±× À§Ä¡¿¡ º¹±ÍÇÏ°í gbuff ¸¦ delete ÇØÁÝ´Ï´Ù. void hgRestore() { hgPutImage(gx1,gy1,gx2,gy2,gbuff); delete gbuff; } ±×·³..Ç㸣¹Ì!