¸®´ª½º °ü·Ã °Á¶õ |
---|
Á¦¸ñ | Motif #3 1999/01/02 (15:22) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 80 |
Á¶È¸ | 447 |
º»¹® |
----------------------------------------------------------------------- [°ÁÂ3] Motif Programming for X windows Using Lesstif ----------------------------------------------------------------------- 9. Toplevel Shell ÀÚ ÀÌÁ¦ºÎÅÍ º»°ÝÀûÀ¸·Î ½ÃÀÛ Çغ¾½Ã´Ù. ¾Õ¿¡¼ ¸»ÇÑ °³³äÀ» ¿©·¯¹ø ÀÐ¾î º¸µµ·Ï ÇϽñ¸¿ä.. ±×·¡µµ ÀÌÇØ°¡ °¡Áö ¾ÊÀ¸½Å´Ù¸é ÀÌÁ¦ ´ÙÀ½ºÎÅÍ ÇÏ´Â ³»¿ë À» Àß µû¶óÇÏ½Ã¸é µÉ°Ì´Ï´Ù. ¾ÕÀ¸·Î´Â ¿¹Á¦¸¦ ¼³¸íÇÏ¸é¼ ¾ÕÀÇ ³»¿ëÀ» ´Ù½Ã ¼³¸í ÇÒ °ÍÀ̹ǷΠũ°Ô ºÎ´ã °®Áö ¾ÊÀ¸¼Åµµ µË´Ï´Ù. Á¦ÀÏ Ã³À½ ¿¹Á¦´Â Toplevel ShellÀ» ¸¸µå´Â ¿¹Á¦ ÀÔ´Ï´Ù. Toplevel ShellÀº ¿ì¸®°¡ ÇÁ·Î±×·¥À» ¸¸µé ¶§ °¡Àå ±âº»À̵Ǵ ƲÀÔ´Ï´Ù. ÇѸ¶µð·Î ¾ê±â ÇÏÀÚ¸é ÇÁ·Î±×·¥ ½ÇÇà½ÃÅ°¸é ±âº»ÀûÀ¸·Î â¿¡ ³ªÅ¸³ª´Â °øÅë ÀûÀκκР(ŸÀÌƲ ¹Ù³ª ±× ¿·¿¡ ¹öÆ° sizeÁ¶ÀýÇÏ´Â ºÎºÐ µîÀ» Æ÷ÇÔÇÕ´Ï´Ù.) ÀÔ´Ï´Ù. ex1) toplevel.c #include<Xm/Xm.h> XtAppContext context; Widget toplevel; main(int argc,char *argv[]) { toplevel=XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL, NULL,0); XtRealizeWidget(toplevel); XtAppMainLoop(context); } ÄÄÆÄÀÏ ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù. cc -o toplevel toplevel.c -lXm -lXt -lX11 cc´Â ÄÄÆÄÀÏÇÏ´Â ¸í·É¾îÀÌ°í -o ¿É¼ÇÀº ½ÇÇàÈÀÏÀÇ À̸§À» a.outÀ¸·Î ÇÏÁö ¾Êµµ·Ï º¯°æÇϱâÀ§ÇÑ ¿É¼ÇÀÔ´Ï´Ù. toplevelÀº ½ÇÇàÈÀÏÀÌ µÉ ÆÄÀÏÀÇ À̸§ÀÌ ±¸¿ä toplevel.c´Â ¼Ò½º ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. -lXm Àº ¸ðƼÇÁ ¶óÀ̺귯¸®¿Í ¸µÅ©Çϴ°ÍÀÌ°í -lXt ´Â Xtoolkit¶óÀ̺귯¸®¿Í -lX11Àº Xlib¿Í ¸µÅ©¸¦ À§ÇÑ °ÍÀÔ´Ï´Ù. Ȥ ÄÄÆÄÀÏÀÌ ¾ÈµÈ´Ù¸é µÚ¿¡ -L/usr/X11/lib°°ÀÌ ¶óÀ̺귯¸® µð·º Å丮¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. ÄÄÆÄÀÏÀÌ Àß µÇ¾ú³ª¿ä? ±×·¯¸é ½ÇÇàÇØ º¾½Ã´Ù. ¾Ö¼®ÇÏ°Ôµµ À§ ¿¹Á¦´Â ´ÙÀ½°ú °°Àº ¿¡·¯¸¦ ³À´Ï´Ù. Error: Shell widget toplevel has zero width and/or height ¾Æ´Ï ¹¹ ÀÌ·± À߸øµÈ ¿¹Á¦¸¦ ÀÔ·ÂÇÏ°Ô ÇÏ´Ù´Ï.. ÇÏ°í ºÒÆòÇϽÇÁö ¸ð¸£°Ú ³×¿ä. ±×·¡µµ À§¿¡ ³ª¿Â ¿¹Á¦°¡ ¾ÕÀ¸·Î ¿¹Á¦ÀÇ ±âº»ÀÌ µÇ´Â ƲÀÔ´Ï´Ù. ÇÑÁÙÇÑÁÙ ÀÚ¼¼È÷ º¸µµ·Ï ÇսôÙ. #include<Xm/Xm.h> ¸ðƼÇÁ Çì´õ ÆÄÀÏÀ» includeÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ¿ì¸®°¡ C¾ð¾î¿¡¼ ÀÔÃâ·ÂÀ» À§ÇØ stdio.h Çì´õÆÄÀÏÀ» includeÇϵíÀÌ ¸ðƼÇÁ¸¦ ¾²±â À§Çؼ´Â Xm.h¶ó´Â Çì´õÆÄÀÏÀ» includeÇØ¾ß ÇÕ´Ï´Ù. À̸¦ ÅëÇØ ¸ðƼÇÁ¸¦ À§ÇÑ º¯¼ö, »ó¼öµîÀ» »ç¿ë ÇÒ¼ö ÀÖ°í, Xtoolkit,XlibÇÔ¼öµîµµ »ç¿ëÇÒ¼ö ÀÖÀ¾´Ï´Ù. ( Çì´õÈÀÏÀ» ã¾Æº¸½Ã¸é Xm.h¿¡ À§ µÎ°³¸¦ includeÇÏ´Â ¶óÀÎÀÌ Àִ°ÍÀ» ¹ß°ßÇÒ¼ö ÀÖÀ¾´Ï´Ù.) XtAppContext context; Widget toplevel; ´ÙÀ½ XtAppContextÇüÀ¸·Î context¶ó´Â º¯¼ö¸¦ ¼±¾ðÇÏ°í WidgetÇüÀÇ º¯¼ö toplevelÀ» ¼±¾ðÇß½À´Ï´Ù. »ç½Ç XtAppContext ŸÀÔÀÌ ¾î¶²°ÍÀÎÁö WidgetŸÀÔ ÀÌ ¾î¶²°ÍÀÎÁö ¼³¸íÀ» ¿øÇϴºÐÀÌ °è½ÇÁö ¸ð¸£°ÚÁö¸¸ Àú´Â ÀÚ¼¼ÇÑ ºÎºÐÀ» ¼³ ¸íÇÏÁö´Â ¾ÊÀ¸·ÁÇÕ´Ï´Ù. Àúµµ ÀÚ¼¼È÷ ¸ð¸£°Å´Ï¿Í Áö±Ý ¾È´Ù°í Çؼ ÀÌÇØÇÏ´Â µ¥ µµ¿òÀÌ µÉ°Å¶ó°í´Â »ý°¢ÇÏÁöµµ ¾Ê°í, ´õ¿íÀÌ Áö±Ý ÀÚ¼¼È÷ ¸ô¶óµµ ÀüÇô »ó°üÀÌ ¾ø½À´Ï´Ù. ¾Õ¿¡¼µµ ¿¹¸¦ µé¾úÁö¸¸ ¿øÀÚ ºÐÀÚ ¸ð¸¥´Ù°í Çؼ, »ý¹° ¹è¿ì´Âµ¥ ÁöÀåÀÌ ÀÖ´Â°Ç ¾Æ´ÏÁö¿ä.. ¾îÂ¥ÇÇ ´©°¡ ¸¸µé¾î³õÀº °ÍÀ» Àß È°¿ëÇÏ ´Â °ÍÀÌ ¸ñÀûÀ̹ǷÎ, ¼¼ºÎÀûÀÎ ³»¿ë±îÁö ¸ô¶óµµ ÁöÀåÀÌ ¾øÀ¸¸®¶ó »ý°¢ÀÌ µË ´Ï´Ù. ±×·¡µµ ±Ã±ÝÇϽŠºÐÀº Çì´õÆÄÀÏÀ» ¿¡µðÅÍ·Î ÀÐ¾î¼ º¸½Ã±â ¹Ù¶ø´Ï´Ù. toplevel=XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL, NULL,0); XtAppInitializeÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© toplevelÀ» initializeÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ¾ÕÀÇ ¼³¸í¿¡¼ ¿¹¸¦ µé¾úµíÀÌ XÀ©µµ¿ìÀÇ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ¿¡¼ window¸¦ ¸¸µé°í ¼³Á¤ÇÏ´Â ºÎºÐ¿¡ ÇØ´çÇϰڳ׿ä. XtRealizeWidget(toplevel); XtAppMainLoop(context); toplevel shellÀ» ¸¸µé¾úÀ¸´Ï ȸ鿡 »Ñ·Á¾ß °ÚÁö¿ä. XtRealizeWidget¿¡¼ ÀÌ·¯ÇÑ ºÎºÐÀ» Çϴ°ÍÀÌ°í XtAppMainLoop¿¡¼ ¹«ÇÑ·çÇÁ¸¦ µ¹°Ô µÇ´Â °ÍÀÔ´Ï ´Ù. Á¶±Ý ÀÌÇØ°¡ °¡¼Ì´ÂÁö ¸ð¸£°Ú³×¿ä. ¾ÕÀ¸·Î ³ª¿Ã ¿¹Á¦´Â óÀ½ºÎÅÍ ´Ù½Ã ÀÔ·ÂÇÏÁö ¸¶½Ã°í, ÀÌ ¿¹Á¦¿¡´Ù°¡ ´Þ¶óÁø ºÎºÐ¸¸ °íÃÄ°¡¸é¼ ¿¹Á¦¸¦ ÀÔ·ÂÇϽñ⠹ٶø´Ï´Ù. ±×·¸°Ô ÇÏ´Â °ÍÀÌ ¹«¾ùÀÌ ¹Ù²î¾ú´ÂÁö ´õ ÀÌÇØÇϱ⠽¬¿ï°Ì´Ï´Ù. ÀÚ ÀÌÁ¦ ¿¹Á¦¿¡¼ ¹«¾ùÀÌ À߸ø µÇ¾ú´ÂÁö ¾Ë¾Æº¼±î¿ä? errorÀÇ ³»¿ë¿¡¼ ÁüÀÛ Çϼ̰ÚÁö¸¸ width/height°¡ ¾ø¾î¼ error¸¦ ³½ °Í ÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î toplevel shellÀº Å©±â¸¦ Á¤ÇØÁÖÁö ¾Ê¾Æµµ toplevel shell¿¡ ºÙ¿©Áø À§Á¬ÀÇ Å©±â¿¡ µû¶ó¼ Å©±â°¡ ÀÚµ¿ÀûÀ¸·Î ¹Ù²ò´Ï´Ù. ¿µÈ back to the future¸¦ º¸¸é ÁÖÀΰøÀÌ ¾î¶² ¿ÊÀ» ÀԴµ¥ ±× ¿ÊÀÌ ÀÚµ¿ÀûÀ¸·Î ¸ö¿¡ ¸Â°Ô ÁÙ¾îµå´Â°Í°ú °°´Ù°í Çϸé ÀÌÇØ°¡ ºü¸£½Ç·Á³ª? À§ÀÇ ¿¹Á¦¿¡¼´Â À§Á¬À» ¾Æ¹«°Íµµ ºÙÀÌÁö ¾Ê¾Ò½À´Ï´Ù. µû¶ó¼ Å©±â°¡ 0ÀÌ µÇ¹ö·Á¼ runtime ¿¡·¯¸¦ ³½ °ÍÀÔ´Ï´Ù. À̸¦ ¸·±âÀ§Çؼ ÀÓÀÇ·Î Å©±â¸¦ Á¤ÇØÁØ ¿¹Á¦°¡ ¹Ù·Î ´Ù À½ ¿¹Á¦ ÀÔ´Ï´Ù. ex2) toplevel2.c 1: #include<Xm/Xm.h> 2: 3: XtAppContext context; 4: 5: Widget toplevel; 6: 7: main(int argc,char *argv[]) 8: { 9: Arg al[10]; 10: int ac; 11: 12: toplevel=XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL, 13: NULL,0); 14: 15: ac=0; 16: XtSetArg(al[ac],XmNheight,300); ac++; 17: XtSetArg(al[ac],XmNwidth,300); ac++; 18: XtSetValues(toplevel,al,ac); 19: 20: XtRealizeWidget(toplevel); 21: XtAppMainLoop(context); 22: } ÀÚ ¹«¾ùÀÌ ´Þ¶óÁ³³ª¿ä? ArgŸÀÔÀÇ al[10];À̶ó´Â °ÍÀÌ ¼±¾ðµÇ¾ú°í intÇüÀÇ ac¶ó´Â°Íµµ ¼±¾ðÀ» Çß½À´Ï´Ù. ÀÎÀÚ¸¦ ¸ðƼÇÁ¿¡ Àü´ÞÇϱâ À§ÇØ ¼±¾ðÇÑ °ÍÀÔ ´Ï´Ù. ac=0; ºÎÅÍ XtSetValuesÇÔ¼ö ±îÁö°¡ ÀÎÀÚ¸¦ Àü´ÞÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. Á÷°üÀûÀ¸·Î º¸¼Åµµ ¾Æ½Ç°Ì´Ï´Ù. al[0]¿¡ ³ôÀÌ°¡ 300À̶ó´Â Á¤º¸¸¦ ³Ö°í al[1]¿¡ ÆøÀÌ 300À̶ó´Â Á¤º¸¸¦ ³Ö¾î¼ toplevel¿¡ °ªÀ» Àü´ÞÇß½À´Ï´Ù. ÀÚ ÀÌÁ¦ ´Ù½Ã ÄÄÆÄÀÏ Çؼ ±× °á°ú¸¦ º¾½Ã´Ù. ±×·¯¸é ³ôÀÌ°¡ 300ÀÌ°í ÆøÀÌ 300ÀÎ Èò»ö ¹ÙÅÁÀÇ À©µµ¿ì¸¦ º¸°Ô µÉ°ÍÀÔ´Ï´Ù. Áö±Ý±îÁö ¿ì¸®´Â toplevel ±îÁö ¸¸µé¾ú½À´Ï´Ù. ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½¿¡ ¼³¸íÇϱâ·Î ÇÏ°í ÇÁ·Î±×·¥ ¹æ½Ä¸¸ ÀÍÈ÷½Ã±â ¹Ù¶ø´Ï´Ù. ¾ÆÁ÷Àº ÇÔ¼ö ÇϳªÇϳª°¡ Áß¿äÇÑ ´Ü°è°¡ ¾Æ´Ï¹Ç·Î.. College of Information Science School of Computing -ÀÌÀ±¼ö- <seyon@nownuri.net> <c9644168@enter.soongsil.ac.kr> ----------------------------------------------------------------------- --------------------------- Âü°í] ´Ù¸¥ ¹æ¹ýÀÇ °°Àº ¿¹Á¦ --------------------------- À§ÀÇ ¿¹Á¦¸¦ ´Ù¸£°Ô ÇÒ¼öµµ ÀÖÀ¾´Ï´Ù. À̸§±×´ë·Î Âü°í¸¸ Çϼ¼¿ä. XtSetValuesÇÔ¼ö¸¦ ÀÌ¿ëÇÏÁö ¾Ê°í ToplevelÀ» ¸¸µé±â Àü¿¡ ¹Ì¸® ¼³Á¤À» Çسõ °í ¸¸µé¶§ ¼³Á¤ÇѺκÐÀ» Àü´ÞÇÏ´Â ¹æ¹ýÀε¥ ±×·¸°Ô ÇÏ¸é ¿Ö±×·±Áö ¸ð¸£Áö¸¸ ¿¡·¯¸¦ ³»´õ±º¿ä.(Á¦°¡ À߸ø ÀÌÇØÇÏ°í ÀÖ´ÂÁöµµ ¸ð¸£°Ú³×¿ä.) ÀÚ¼¼ÇÑ ³»¿ëÀº ¸®¼Ò½º ºÎºÐ¿¡¼ ¼³¸í Çϱâ·Î ÇÏ°í ¿¹Á¦¸¸ º¸¿©µå¸®°ÚÀ¾´Ï´Ù. 15ÇàºÎÅÍ 18Çà±îÁö¸¦ 12Çà ¾ÕÀ¸·Î ¿Å±â½Ã°í, ¸¶Áö¸· ac++;Àº Áö¿ì¼¼¿ä. ±×¸®°í 12,13ÇàÀ» ´ÙÀ½°ú °°ÀÌ °íÄ¡¼¼¿ä. toplevel=XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL, al,ac); |