¸®´ª½º °ü·Ã °Á¶õ |
---|
Á¦¸ñ | Motif #6 1999/01/02 (15:24) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 83 |
Á¶È¸ | 429 |
º»¹® |
----------------------------------------------------------------------- [°ÁÂ6] Motif Programming for X windows Using Lesstif ----------------------------------------------------------------------- 2) Form À§Á¬ ¾ÕÀÇ ¼÷Á¦¸¦ ÇϼÌÀ¸¸é ´ÙÀ½À¸·Î ³Ñ¾î °©½Ã´Ù. À̹ø¿¡ ¹è¿ï ³»¿ëÀº ¹Ù·Î Æû À§Á¬¿¡ °üÇÑ °ÍÀÔ´Ï´Ù. ¾ÕÀÇ ¿¹Á¦¿¡¼ ½ÇÇàµÈ °ÍÀ» ¸¶¿ì½º¸¦ °¡Áö°í âÀÇ Å©±â¸¦ ´Ã·Áº¾½Ã´Ù. âÀÇ Å©±â¸¦ ´Ã·Áµµ À§Á¬ÀÌ Ã¢ÀÇ Å©±â¿¡ ¸Â°Ô º¯ÇÏÁöµµ ¾Ê°í À§Ä¡°¡ ¹Ù²îÁöµµ ¾Ê½À´Ï´Ù. µû¶ó¼ âÀÇ Å©±â°¡ ¸Å¿ì Ä¿Áö°Å³ª ÇÏ¸é º¸±â°¡ ÁÁÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇØ ÁÖ´Â À§Á¬ÀÌ ¹Ù·Î ¶ÇÇϳªÀÇ ¸Å´ÏÁ® À§Á¬ÀÎ Æû À§Á¬ÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¾½Ã´Ù. ex10) form.c #include<Xm/Xm.h> #include<Xm/Label.h> #include<Xm/Scale.h> #include<Xm/Text.h> #include<Xm/Form.h> XtAppContext context; XmStringCharSet char_set=XmSTRING_DEFAULT_CHARSET; Widget toplevel,label,scale,text,form,sep; main(int argc,char *argv[]) { Arg al[10]; int ac; toplevel=XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL, NULL,0); ac=0; XtSetArg(al[ac],XmNheight,200); ac++; XtSetArg(al[ac],XmNwidth,200); ac++; XtSetValues(toplevel,al,ac); ac=0; form=XmCreateForm(toplevel,"form",al,ac); XtManageChild(form); ac=0; XtSetArg(al[ac],XmNlabelString, XmStringCreateLtoR("Hello World",char_set)); ac++; label=XmCreateLabel(form,"label",al,ac); XtManageChild(label); ac=0; sep=XmCreateSeparator(form,"sep",al,ac); XtManageChild(sep); ac=0; XtSetArg(al[ac],XmNshowValue,True); ac++; XtSetArg(al[ac],XmNtitleString, XmStringCreate("New",char_set)); ac++; XtSetArg(al[ac],XmNorientation,XmHORIZONTAL); ac++; scale=XmCreateScale(form,"scale",al,ac); XtManageChild(scale); ac=0; XtSetArg(al[ac],XmNeditMode,XmMULTI_LINE_EDIT); ac++; text=XmCreateText(form,"text",al,ac); XtManageChild(text); ac=0; XtSetArg(al[ac],XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNleftAttachment,XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNbottomAttachment,XmATTACH_POSITION);ac++; XtSetArg(al[ac],XmNbottomPosition,30); ac++; XtSetValues(label,al,ac); ac=0; XtSetArg(al[ac],XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(al[ac],XmNtopWidget, label); ac++; XtSetArg(al[ac],XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNbottomAttachment, XmATTACH_NONE); ac++; XtSetValues(sep,al,ac); ac=0; XtSetArg(al[ac],XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(al[ac],XmNtopWidget, sep); ac++; XtSetArg(al[ac],XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNbottomAttachment, XmATTACH_NONE); ac++; XtSetValues(scale,al,ac); ac=0; XtSetArg(al[ac],XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(al[ac],XmNtopWidget,scale); ac++; XtSetArg(al[ac],XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac],XmNbottomAttachment, XmATTACH_FORM); ac++; XtSetValues(text,al,ac); XtRealizeWidget(toplevel); XtAppMainLoop(context); } À̹ø ¿¹Á¦´Â Á» ±æ±º¿ä. ±×·¯³ª Å« ƲÀº °è¼Ó ¶È°°ÀÌ À¯ÁöµÇ¹Ç·Î ¹Ù²ï ºÎºÐÀ» Àß »ìÆ캸¸é ¾î¶² ³»¿ëÀÎÁö ´ëÃæ ÁüÀÛÇÏ½Ç °Ì´Ï´Ù. ¿ì¼± bbÀ§Á¬ ´ë½Å form À§Á¬À» ¸¸µé¾ú°í ±×°ÍÀ» toplevel¿¡ ºÙÀÎ ÈÄ¿¡ form À§Á¬¿¡ 4°³ÀÇ À§Á¬À» ºÙ¿´½À´Ï´Ù. label,separator,scale,textÀ§Á¬ µîÀ» °¢°¢ ¼³Á¤ÇØ ÁØ ÈÄ¿¡ ºÙ¿´½À´Ï´Ù. »õ·Î Ãß°¡µÈ À§Á¬À» ¿ì¼± »ìÆ캾½Ã´Ù. sep¶ó´Â ºÐ¸®ÀÚÀ§Á¬À» Çϳª Ãß°¡¸¦ Çß½À´Ï´Ù. À§Á¬À» ¸¸µå´Â ¹æ¹ýÀº ´Ù¸¥ À§Á¬ °ú °°Àº ¹æ¹ýÀ¸·Î XmCreate~ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ À§Á¬À» ¸¸µé°í ´Ù¸¥ À§Á¬°ú ¸¶Âù°¡Áö·Î XtManageChild ÇÔ¼ö¸¦ ½è½À´Ï´Ù. ÀÌ À§Á¬À» Ãß°¡ÇÑ ÀÌÀ¯´Â ¶óº§ À§Á¬°ú scaleÀ§Á¬À» ±×³É ºÙÀÌ¸é ¾îµð±îÁö°¡ °æ°èÀÎÁö ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ Ãß°¡ÇÑ °ÍÀÔ´Ï´Ù. ¶Ç »õ·Î¿î ³»¿ëÀº Åé·¹º§ÀÇ Å©±â¸¦ XtSetValuesÇÔ¼ö¸¦ ÀÌ¿ëÇØ ÀÎÀÚ¸¦ Àü´ÞÇß½À´Ï´Ù. °¡·Î 200 ¼¼·Î 200ÀÇ Å©±â·Î¿ä.. ±× ´ÙÀ½ »õ·Î¿öÁø ³»¿ëÀº scaleÀ§Á¬ÀÇ ¼³Á¤ÀÔ´Ï´Ù. XmNtitleStringÀº ¸» ±×´ë·Î À§Á¬ÀÇ Å¸ÀÌƲÀ» C½ºÆ®¸µÀ¸·Î ³ÖÀº °ÍÀÌ°í ±× °ªÀº XmStringCreateÇÔ¼ö·Î ¸ðƼÇÁ ½ºÆ®¸µÀ» ¹Þ¾Æ¼ ¸®ÅÏÇÑ °ªÀÔ´Ï´Ù XmNorientationÀº scaleÀ§Á¬ÀÇ ¹æÇâÀ» ¼³Á¤ÇÏ´Â °ÍÀε¥ ±âº»ÀûÀ¸·Î ¼¼·Î ¹æÇâÀÌÁö¸¸ ÀÌ ÇÁ·Î±×·¥¿¡¼´Â °¡·Î ¹æÇâÀ¸·Î ¹Ù²ãÁÖ±â À§ÇØ »ç¿ëÇßÀ¾´Ï ´Ù. °ªÀº XmHORIZONTALÀ̶ó´Â °ªÀ» ³Ö¾ú±º¿ä.. ÀÚ ÀÌÁ¦ ¼Ò½ºÀÇ ¹Ý Á¤µµ¸¦ Â÷ÁöÇÏ°í ´Ü¼ø ¹Ýº¹ÀûÀÎ Äڵ忡 ´ëÇØ ¾Ë¾Æº¾½Ã ´Ù. ÅؽºÆ® À§Á¬À» ¸¸µç ÀÌÈÄÀÇ ³»¿ëÀº XtSetArgÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÀÎÀÚ¸¦ °¢ À§Á¬¿¡ Àü´ÞÇÑ °ÍÀÔ´Ï´Ù. ù´Ü¶ôÀº ¶óº§À§Á¬ÀÇ ÀÎÀÚÀÌ°í, µÎ ¹ø° ´Ü¶ôÀº ºÐ¸®ÀÚ(separator)À§Á¬ÀÇ ÀÎÀÚ, ... ÀÌ ¸ðµç ÀÎÀÚµéÀº ÆûÀ§Á¬À» ÀÌ¿ëÇ߱⠶§¹®¿¡ ÇÊ¿äÇÑ ÀÎÀÚµéÀÔ´Ï´Ù. ù ¹ø° ¸®¼Ò½º XmNTopAttachment´Â ¸» ±×´ë·Î À§ÂÊÀ» ºÙÀÌ´Â °ÍÀÔ´Ï´Ù. ¾îµð¿¡ ºÙÀ̴°¡´Â ±× °ªÀÌ XmATTACH_FORM À̶ó°í µÇ¾îÀִ°ÍÀ» º¸´Ï ÆûÀ§Á¬¿¡ ºÙÀÌ´Â °ÍÀ̱º¿ä. µÎ ¹ø° ¸®¼Ò½º XmNrightAttachment´Â ¿À¸¥ÂÊ¿¡, ¼¼ ¹ø° ¸®¼Ò½º XmNleftAttachment´Â À§Á¬ ¿ÞÂÊÀ» ºÙÀ̶ó´Â ¼Ò¸®ÀÔ´Ï´Ù. ¸ðµÎ XmATTACH_FORMÀ̶ó°í µÇ¾îÀÖÀ¸´Ï À§, ¿À¸¥ÂÊ, ¿ÞÂÊ ¸ðµÎ ÆûÀ§Á¬¿¡ ºÙÀÌ°í ÀÖ½À´Ï´Ù. ³× ¹ø° ¸®¼Ò½º XmNbottomAttachment´Â ¾Æ·¡ÂÊ¿¡ À§Á¬À» ºÙÀÌ´Â °ÍÀε¥ ¿©±â ¼´Â ¾Æ·¡ÂÊ¿¡ Ưº°ÇÑ À§Á¬À» ºÙÀÌÁö ¾Ê°í À§Ä¡¸¸ Á¤ÇØÁÖ·Á°í XmATTACH_POSITIONÀ̶ó´Â °ªÀ» Àü´ÞÇß½À´Ï´Ù. ±×¸®°í ¹Ù·Î ¾Æ·¡ ÁÙ¿¡ XmNbottomPositonÀÇ °ªÀ¸·Î 30À» Àü´ÞÇߴµ¥ ÀÌ°ÍÀº À§¿¡¼ºÎÅÍ 30%ÀÇ À§Ä¡ ·Î Ç϶ó´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î ÀÌ·¯ÇÑ °ªµéÀ» labelÀ§Á¬¿¡ Àü´ÞÇß À¾´Ï´Ù. µû¶ó¼ ¶óº§À§Á¬ÀÇ À§ÂÊ, ¿À¸¥ÂÊ, ¿ÞÂÊÀ» ÆûÀ§Á¬(Áï Toplevel°ú °°Àº Å©±â°¡ µÇ°ÚÁö¿ä)¿¡ ºÙÀÌ°í, À§¿¡¼ºÎÅÍ 30%¸¦ ¶óº§À§Á¬ÀÌ Â÷ÁöÇÏ°í ÀÖ´Ù´Â ¸»ÀÌ µË´Ï´Ù. ÀÌÇØ°¡ °¡½Ã´ÂÁö¿ä.. ´ÙÀ½Àº sepÀ§Á¬¿¡ °ªÀ» Àü´ÞÇÑ °ÍÀ» º¾½Ã´Ù. ù ¹ø° ¸®¼Ò½º XmNtopAttachment¿¡´Â XmATTACH_WIDGETÀ̶ó´Â °ªÀ» Àü´ÞÇß´Â µ¥ ÀÌ°ÍÀº À§ÂÊÀ» ¾î¶² À§Á¬¿¡ ºÙÀÌ°Ú´Ù´Â ¶æÀÔ´Ï´Ù. ±× À§Á¬ÀÇ À̸§Àº ¹Ù·Î ¾Æ·¡ ÁÙ¿¡ XmNtopWidgetÀ̶ó´Â ¸®¼Ò½º¿¡ labelÀ̶ó´Â °ªÀ» Àü´ÞÇÔÀ¸·Î½á sepÀ§Á¬ÀÇ À§ÂÊ ºÎºÐÀ» labelÀ§Á¬¿¡ ºÙÀÌ°Ú´Ù´Â ¶æÀÌ µÇ°ÚÁö¿ä. ³ª¸ÓÁö´Â ¾Õ¿¡¼ ¼³¸íÇßµíÀÌ sepÀ§Á¬ÀÇ ¿À¸¥ÂÊ ¿ÞÂÊ ºÎºÐÀ» formÀ§Á¬¿¡ ºÙÀÎ ´Ù´Â ¶æÀÌ°í, XmNbottomAttachment¿¡´Â XmATTACH_NONEÀ̶ó´Â °ªÀ» ÁÜÀ¸·Î½á ¾Æ¹« À§Á¬¿¡µµ ºÙÀÌÁö ¾Ê¾Ò½À´Ï´Ù. ¾Æ·¡¿¡ ¶Ç´Ù¸¥ À§Á¬À» ºÙÀÌ·Á¸é ¾Æ·¡ºÎºÐÀº À§Á¬¿¡ ºÙÀÌÁö ¸»°í ºñ¿öµÖ¾ß ÇÏ°ÚÁö¿ä. ÀÌ Á¤µµ ¼³¸íÀ» ÇßÀ¸¸é ¼Ò½ºÀÇ ³ª¸ÓÁö ºÎºÐÀº ¾Æ½Ã¸®¶ó ¹Ï½À´Ï´Ù. ¿À´ÃÀº ¿©±â±îÁö ¼³¸íÀ» ÇÏ°Ú½À´Ï´Ù. ¸Å´ÏÁ® À§Á¬ÀÌ ÀÌ µÎ °¡Áö¸¸ ÀÖ´Â °ÍÀº ¾Æ´ÏÁö¸¸ ³ª¸ÓÁö´Â º»ÀÎÀÌ Ã¥À» ã¾Æ¼ Âü°íÇÏ½Ã°í ¿©·¯ °³ÀÇ À§Á¬À» ºÙÀÌ´Â ¹æ¹ýÀ» ¾Ë¾ÒÀ¸´Ï.. ´ÙÀ½ °³³äÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇÏÁö¿ä.. ´ÙÀ½½Ã°£¿¡´Â callback¿¡ ´ëÇؼ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. |