¸®´ª½º °ü·Ã °­Á¶õ

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   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);



HomePage Backward Forward Post Reply List
1998 by swindler