¸®´ª½º ±âŸ ÀÚ·á |
---|
Á¦¸ñ | X-Windows Programming #5 1998/07/04 (16:29) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 44 |
Á¶È¸ | 345 |
º»¹® |
¡º¸®´ª½º Çдç-¸®´ª½º °Á / ¿¬Àç (go LINUX)¡» 230¹ø Á¦ ¸ñ:[°Á 05] X ÇÁ·Î±×·¡¹Ö ±âÃÊ : Xlib ¿Ã¸°ÀÌ:geoman (À̸¸¿ë ) 96/03/26 01:37 ÀÐÀ½:2350 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- /* Playing with Windows */ 7) ¸¸µé¾î ³õÀº â °¡Áö°í ³î±â ¿À´ÃÀº ¿ì¸®°¡ ÀÌ¹Ì ¸¸µé¾î ³õÀº âµé¿¡ ´ëÇؼ À̸®Àú¸® ¸¶À½²¯ ³î¾Æº¸°Ú½À´Ï´Ù. âÀÇ »ö±òÀ» ¹Ù²Û´ÙµçÁö, âÀÇ Å©±â¸¦ ¹Ù²Û´ÙµçÁö, ¾ø¾Ý´Ù°¡ ´Ù½Ã ³ªÅ¸³ª°Ô ÇÑ´Ù µçÁö... ¹¹ ÀÌ·± ³îÀ̸¦ ÇÏ·Á°í ÇÕ´Ï´Ù. 7-1) ÀÌ¹Ì ¸¸µé¾î ³õÀº â »ö±ò ¹Ù²Ù±â À쫆 ̢À» ¸¸µå½Ç ¶§ ¹è°æ»ö°ú Å׵θ®»öÀ» °áÁ¤Çسõ±â´Â ÇßÁö¸¸, »ç¶÷À̶õ°Ô ¸¶À½ ÀÌ ´Þ¶óÁú ¶§µµ ÀÖ´Â °Í ¾Æ´Ï°Ú¾î¿ä? ÀÚ, ÀÌ¹Ì Ç¥½ÃµÇ¾î Àִ âÀ» ±×´ë·Î ³öµÐ ä »ö±ò¸¸ ÇÑ ¹ø ¹Ù²Ù¾î º¾½Ã´Ù. ¿©·¯ºÐÀÌ ¸¶À½¿¡ µå´Â »öÀ» °ñ¶óº¸¼¼¿ä. ¹Ù·Î Àü ½Ã°£ ¿¡ ¸»¾¸µå¸° »ö»ó Á¤º¸ ¾Ë¾Æ³»±â´Â ±â¾ïÇÏ°í °è½ÃÁÒ? -1. Å׵θ®(Border)»ö º¯È XSetWindowBorder ( Display *d, Window w, unsigned long border_pixel ); -2. ¹è°æ(Background)»ö º¯È XSetWindowBackground ( Display *d, Window w, unsigned long background_pixel ); ¼³¸íÀÌ ÇÊ¿äÇÑ°¡¿ä? Àμö·Î ÁÖ¾îÁö´Â Window Çü º¯¼ö´Â ¿ì¸®°¡ »öÀ» º¯È½ÃÅ°°íÀÚ ÇÏ´Â ´ë»ó âÀ» ³ªÅ¸³»´Â º¯¼ö¸¦ ¾²¸é µÇ°í¿ä, Çȼ¿°ªÀº ¿©·¯ºÐ²²¼ ¿øÇϽô »öÀÇ Çȼ¿°ªÀ» Àú¹ø °ÀÇ¿¡¼Ã³·³ ±¸Çϼż Àü´ÞÇÏ½Ã¸é µÇ°í... ÀÚ, ¿¹Á¦ 3)¹øÀÇ 10ÃÊ °£ Áö¿¬ ÇÔ¼ö(sleep) µÚ¿¡´Ù ¿©·¯ºÐ²²¼ Çѹø ÀÌ ÇÔ¼öµéÀ» ÀÌ¿ëÇؼ »ö»óÀ» ¹Ù²Ù¾îº¸½Ê½Ã¿ä. ÀØÁö ¸¶½Ç °ÍÀº XFlush¸¦ ÇØÁÖ¼Å¾ß ÇÑ´Ù´Â °ÍÀÔ ´Ï´Ù. XFlush¸¦ ÇØÁÖ½Ã°í ³ª¼ ¶Ç ´Ù½Ã sleep ÇÔ¼ö¸¦ ¾²¼Å¾ß ±× °á°ú¸¦ È®ÀÎÇÏ½Ç ¼ö ÀÖ°ÚÁö¿ä? << »ý°¢ Áß... >> ¿©·¯ºÐ, Á» ¾î·Á¿î°¡¿ä? ±×·¯¸é Á¦°¡ Çغ» °á°ú¸¦ º¸¿©µå¸®°Ú½À´Ï´Ù. ¿¹Á¦ 3)¿¡ Ãß°¡ ------------------------------------------------------------------------------ sleep(10); ¹®Àå ´ÙÀ½ºÎÅÍÀÔ´Ï´Ù. XAllocNamedColor( d, CMap, "green", &color, &ExactColor ); XSetWindowBorder( d, w, color.pixel ); XAllocNamedColor( d, CMap, "peachpuff", &color, &ExactColor ); XSetWindowBackground( d, w, color.pixel ); /* ??? */ XFlush ( d ); sleep(5); µîµî... ------------------------------------------------------------------------------ ¼³¸íÀ» µå¸®ÀÚ¸é, Àü¹ÝºÎ¿¡¼´Â green »öÀÇ Çȼ¿°ªÀ» ¾Ë¾Æ³»¼ Å׵θ®»öÀ» º¯È½Ã Ä×°í, ÈĹݺο¡¼´Â peachpuff »öÀ¸·Î ¹è°æ»öÀ» ¹Ù²Ù¶ó°í Áö½ÃÇß½À´Ï´Ù. ±×¸®°í ²À ¹°³»¸®´Â °Í ÀØÁö ¸¶½Ê½Ã¿ä.(flush) ÇÏÁö¸¸ ÀÌ·¸°Ô ÇÑ´Ù°í Çؼ ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ¾ÆÁ÷ ºÎÁ· ÇÑ °ÍÀÌ Çϳª ÀÖ½À´Ï´Ù. ±×°ÍÀº ´ÙÀ½°ú °°Àº ÇÔ¼öÀÔ´Ï´Ù. -3. â ¹è°æÀ» Áö¿ì´Â ÇÔ¼ö, ¾Æ´Ï ´Ù½Ã Ä¥ÇÏ´Â ÇÔ¼ö!!! XClearWindow ( Display *d, Window w ); ÇÔ¼öÀÇ À̸§¿¡¼ º¸À̵í, âÀ» Áö¿ì´Â, Á¤È®È÷ ¸»Çؼ âÀÇ ¹è°æÀ» Áö¿ì´Â ÇÔ¼öÀÔ ´Ï´Ù. ´õ¿í »ó¼¼È÷ ¸»¾¸µå¸®ÀÚ¸é, ÇöÀçÀÇ ¹è°æÀ» Áö¿ì°í, ÇöÀç âÀÇ Á¤º¸ Áß ¹è°æ»ö ¿¡ ÇØ´çÇÏ´Â »öÀ¸·Î ´Ù½Ã Ä¥ÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ¹è°æÀ» ¹Ù²Ù½Ã°íÀÚ ÇÒ ¶§´Â ÇÑ ¹ø âÀ» Áö¿öÁֽôø°¡ ¾Æ´Ï¸é ±×¿Í ¶È°°Àº È¿°ú¸¦ °®´Â ÀÏÀ» ÇØÁÖ½Ã¸é µË´Ï´Ù. ±×°ÍÀÌ ¹«¾ùÀ̳ı¸¿ä? âÀ» UnMap Çß´Ù°¡ ´Ù½Ã MapÇÏ½Ã¸é µË´Ï´Ù. µû¶ó¼ Á¦°¡ À§¿¡¼ /* ??? */ ¶ó°í ÇÑ ºÎºÐ¿¡ ´ÙÀ½°ú °°ÀÌ ½á³Ö¾îÁֽʽÿä. XClearWindow ( d , w ); âÀÇ Å׵θ®¿Í ¹è°æ»öÀ» ¹Ù²Ù´Â ÇàÀ§´Â â Á¶ÀÛ¿¡ ÀÖ¾î¼ ¾ÆÁÖ ±âº»ÀûÀÎ ÇàÀ§ÀÓÀº ¹°·ÐÀÌ°Å´Ï¿Í ¾ÆÁÖ Áß¿äÇÑ ÇàÀ§À̱⵵ ÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ X À©µµ¿ì ÇÁ·Î±×·¥¿¡¼ ¸Å ÀÏ º¸½Ã´Â ¹öÆ°µéÀ» º¸¼¼¿ä. Æ÷ÀÎÅ͸¦ °¡Á®´Ù ´ë¸é Å׵θ®³ª ±× ÀÚü »öÀÌ º¯ÇÏ´Â °ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. °á±¹¿¡´Â ±× ¹öÆ°µµ Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ Ã¢À¸·Î ÀÌ·ç¾îÁ® ÀÖ´Â °Í¿¡ ºÒ°úÇÕ´Ï´Ù. ¸Þ´ºµµ ±×·¯ÇÏ°í¿ä. X À©µµ¿ì´Â ±×¾ß¸»·Î ¾ÆÁÖ Âزô¸¸ âºÎ ÅÍ ½ÃÀÛÇؼ Å͹̳Πâ°ú °°Àº Å« âµéÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. 7-2) â¿¡ ´ëÇÑ ¿©·¯ Á¤º¸¸¦ ¾Ë¾Æ³À½Ã´Ù. ¸¹Àº ºÐµé²²¼ geometry¶ó´Â ´Ü¾î¸¦ º¸½Å ÀûÀÌ ÀÖÀ» °Ì´Ï´Ù. Ãʺ¸ºÐµéÀ̽öó¸é Á¦ fvwm °Á¿¡¼ -geometry ¶ó´Â ¿É¼Ç¿¡ ´ëÇؼ Àá±ñ ¾ð±ÞÇÑ °ÍÀ» ±â¾ïÇÏ½Ç ºÐµé µµ °è½Ç °Í °°±º¿ä. Geometry¶ó ÇÔÀº â¿¡ ´ëÇÑ ´ÙÀ½°ú °°Àº Á¤º¸¸¦ ¸»ÇÕ´Ï´Ù. âÀÇ ÁÂÇ¥(¹°·Ð âÀÇ ¿ÞÂÊ À±¸¼® ÁÂÇ¥¸¦ ¸»ÇÏ°ÚÁÒ?), Æø°ú ³ôÀÌ, Å׵θ® µÎ²² µî. »ç°¢Çü âÀÇ ±âº» ¿ä¼ÒµéÀ̶ó°í ÇÒ ¼ö ÀÖ´Â °ÍÀÌÁÒ. ¿©·¯ºÐ²²¼ fvwm °Á¿¡¼ FvwmIdent¶ó°í ÇÏ´Â °ÍÀ» Á¢ÇϽŠÀûÀÌ ÀÖÀ» °Ì´Ï´Ù. ±× ³à¼®ÀÌ Ã¢ Àü¹Ý¿¡ ´ëÇÑ Á¤ º¸¸¦ °¡Á®´Ù ÁÖÁö¿ä. ÀÚ, ±×·± ¿ªÇÒÀ» ÇÏ´Â ÇÔ¼ö Çϳª¸¦ ¸ÕÀú ¼Ò°³ÇÏ°Ú½À´Ï´Ù. ÇÔ¼öÀÇ ¿øÇü : <X11/Xlib.h>¿¡ ¼±¾ð Status XGetGeometry ( Display *display, Window drawable_object, Window root_ID, int *x, int *y, unsigned *width, unsigned *height, unsigned *border_width, unsigned *depth ) ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸í : Geometry Á¤º¸¸¦ °¡Á®¿À´Â(Get) ÇÔ¼öÀÔ´Ï´Ù. ù¹ø° Display Çü Æ÷ÀÎÅÍ´Â ÇöÀç ÀÛ ¾÷ ÁßÀÎ µð½ºÇ÷¹ÀÌ IDÀÌ°í, µÎ¹ø° Window Çü º¯¼ö´Â ¹Ù·Î ¿ì¸®°¡ geometry Á¤º¸ ¸¦ ¾Ë¾Æ³»°íÀÚ ÇÏ´Â ´ë»ó âÀÇ IDÀÔ´Ï´Ù. ±× ´ÙÀ½ º¯¼öµéÀº Çϳª°°ÀÌ Æ÷ÀÎÅÍ º¯¼ö µéÀÔ´Ï´Ù. ¿©·¯ºÐµµ C ÇÁ·Î±×·¡¹ÖÀ» Çغ¸¼Å¼ ¾Æ½Ã°ÚÁö¸¸, ¾î¶² ÇÔ¼öµç ¹Ýȯ°ªÀº Çϳª ¹Û¿¡ ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ±× ÇÔ¼ö¸¦ ÅëÇØ ¿©·¯ °³ÀÇ ¹Ýȯ°ªÀ» °¡Áö°íÀÚ ÇÒ ¶§ ¾²´Â ±â¼úÀÌ ¹Ù·Î ±× ÇÔ¼ö¿¡°Ô ÁÖ¼Ò ÁöÁ¤ ¹æ½ÄÀÇ È£Ãâ(Call by Reference), Áï Æ÷ ÀÎÅÍ·Î º¯¼ö¸¦ Àü´ÞÇØÁÖ´Â ¹æ½ÄÀÔ´Ï´Ù. ±× ÇÔ¼ö¿¡¼ ±× º¯¼öÀÇ ³»¿ë¿¡ ¾Ë¸Â´Â °ªÀ» ½áÁÖ¸é µÇ´Ï±î¿ä. ±×·¸½À´Ï´Ù. ¼¼¹ø° º¯¼öµéºÎÅÍ´Â ¿ì¸®°¡ ¾Ë°í ½ÍÀº Á¤º¸µéÀ» °¡Áö°í ¿Ã º¯¼öµéÀÔ´Ï´Ù. ¼¼¹ø° WindowÇü º¯¼ö´Â µÎ¹ø° Àμö¿¡¼ ÁÖ¾îÁø ID¸¦ °® ´Â âÀÌ ¼ÓÇÑ ROOT âÀÇ ID¸¦ ¹ÝȯÇÕ´Ï´Ù. Àú·Î¼´Â ¾ÆÁ÷µµ ¿Ö ¼¼¹ø° Àμö¸¦ ÁÖ¾î ¾ß ÇÏ´ÂÁö ±× Çʿ伺À» ÀÌÇØÇÒ ¼ö´Â ¾øÁö¸¸, È¥µ¿Çϼż´Â ¾ÈµÇ´Â °ÍÀº ¾î¶² âÀÌ ¼ÓÇÏ´Â ÀÚ½ÅÀÇ ºÎ¸ðâ ID°¡ ¹ÝȯµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó Àý´ëÀûÀ¸·Î ROOT âÀÇ ID°¡ ¹Ýȯ µÈ´Ù´Â »ç½ÇÀÔ´Ï´Ù. ³×¹ø° Àμö´Â x ÁÂÇ¥, ´Ù¼¸¹ø° Àμö´Â y ÁÂÇ¥, ±× ´ÙÀ½Àº Æø, ³ôÀÌ, Å׵θ® µÎ²²ÀÔ´Ï´Ù. ±×¸®°í ¸¶Áö¸·Àº Depth Áï ±íÀ̸¦ ¸»Çϴµ¥, ÀÌ°ÍÀº Çö Àç â¿¡¼ »ö±òÀ» ±¸ÇöÇϴµ¥ ÀÖ¾î ¸î ºñÆ®¸¦ »ç¿ëÇÏ°í Àִ°¡¸¦ ¸»ÇØÁÝ´Ï´Ù. ÀÌ ¼ýÀÚ°¡ 8À̸é 8 ºñÆ® Ä®¶ó(8bpp) Áï 256 Ä®¶ó°¡ µÇ°ÚÁÒ? 16 bpp´Â 65536 Ä®¶ó, 24 bpp´Â 16¸¸ 7õ Ä®¶ó(16,777,216)¸¦ ¸»ÇÕ´Ï´Ù. ÀÚ, ¿ô±â´Â »ç½ÇÀº À§¿¡¼ ¾Ë¾Æ³¾ ¼ö ÀÖ´Â x, y ÁÂÇ¥´Â ±× âÀÌ ¼ÓÇÑ ºÎ¸ðâÀÇ ÁÂÇ¥°è¸¦ ±âÁØÀ¸·Î ÇÑ´Ù´Â »ç½ÇÀÔ´Ï´Ù. ¸¸¾à ·çƮâÀÌ A âÀ» Æ÷ÇÔÇÏ°í, A âÀÌ ´Ù½Ã B âÀ» Æ÷ÇÔÇÑ´Ù°í ÇսôÙ. B â¿¡ ´ëÇÏ¿© XGetGeometry ÇϽøé, ¼¼¹ø° Àμö ¿¡´Â ROOTâÀÇ ID°¡, x, y º¯¼ö¿¡´Â A âÀÇ ¿ÞÂÊ À±¸¼®À» (0,0)À¸·Î ÇÏ´Â ÁÂÇ¥°è ¸¦ ¾²´Â »ó´ëÀûÀÎ B âÀÇ ÁÂÇ¥°è°¡ ¹ÝȯµÇ¾î ¿É´Ï´Ù. µ¡ºÙÀÌ´Â ¸» ÇÑ ¸¶µð : ¸¶Áö¸·À¸·Î µ¡ºÙÀÌ°íÀÚ ÇÏ´Â »ç½ÇÀº ÀÌ·¸½À´Ï´Ù. ¿©·¯ºÐ²²¼ Xlib.h ÈÀÏ¿¡¼ XGetGeometry ÇÔ¼ö¸¦ ã¾Æ¼ ½ÇÁ¦ ³»¿ëÀ» º¸½Ã¸é µÎ¹ø° º¯¼öÀÇ ÀÚ·áÇüÀº Window ÇüÀÌ ¾Æ´Ï¶ó ½ÇÁ¦·Î´Â Drawable Áï ¹«¾ùÀΰ¡¸¦ ±×¸± ¼ö ÀÖ´Â ´ë»óÀ¸·Î µÇ¾î ÀÖ´Ù ´Â °ÍÀ» ¹ß°ßÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ±×°Í¿¡ ´ëÇÑ ¼³¸íÀº ´Ù½Ã µÚ·Î ¹Ì·ì´Ï´Ù. ¾îÂî µÇ ¾úµç Drawable Çü ÀÚ·á¿¡´Â Window ÇüÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. 7-3) ÀÌÁ¦´Â âÀÇ geometry¸¦ ¹Ù²Ù¾î º¾½Ã´Ù. âÀÇ geometry¸¦ ¹Ù²Ù´Â ÇÔ¼öµéÀ» ¿©±â¿¡ ¼Ò°³ÇÕ´Ï´Ù. ÇÔ¼öÀÇ ¿øÇü : <X11/Xlib.h>¿¡ ¼±¾ð XMoveWindow ( Display *display, Window w, int x, int y ); XResizeWindow ( Display *display, Window w, unsigned int width, unsigned int height ); XSetWindowBorderWidth ( Display *display, Window w, unsigned int border_width ); ù¹ø° ÇÔ¼ö´Â âÀÇ À§Ä¡¸¦ ÁÖ¾îÁø x, y ÁÂÇ¥°ª¿¡ µû¶ó À̵¿½ÃÅ°´Â ³à¼®ÀÔ´Ï´Ù. ¹°·Ð ÁÂÇ¥´Â ºÎ¸ðâ ÁÂÇ¥°è¸¦ ±âÁØÀ¸·Î ÇÕ´Ï´Ù. µÎ¹ø° ÇÔ¼ö´Â Resize Áï Å©±â º¯ ȽÃÅ°´Â ÇÔ¼ö·Î¼ ÁÖ¾îÁø Æø&³ôÀÌ °ª¿¡ µû¶ó Å©±â¸¦ º¯È½Ãŵ´Ï´Ù. ¼¼¹ø°´Â ¹«½¼ ÀÏÀ» ÇÏ´ÂÁö ¼³¸íÇصå·Á¾ß Çϳª¿ä? ³×, ¸Â½À´Ï´Ù. Å׵θ® ÆøÀ» º¯È½Ãŵ´Ï´Ù. ¿À´ÃÀÇ ¸ðµç ³»¿ëÀ» ´ã°í ÀÖ´Â ¿¹Á¦¸¦ Àû¾îµå¸®°í ¿À´Ã °ÀǸ¦ ¸¶Ä¥±î ÇÕ´Ï´Ù. ÇÑ ¹ø ¿©·¯ºÐµé²²¼ ºÐ¼®Çغ¸¼¼¿ä. ¿¹Á¦ 6) /* âÀÇ »ö»ó º¯È¿Í Geometry º¯È */ #include <X11/Xlib.h> /* ÇÔ¼ö ¼±¾ð */ unsigned long UsrColorPixel( Display*, char* ); int main() { Display *d; Window w0, w1, w2; /* One TopLevel Window & Two Child Windows */ unsigned long black_pixel; int w_X1, w_Y1, w_X2, w_Y2; /* µÎ ÀÚ½ÄâÀÇ À§Ä¡ ÁÂÇ¥ */ unsigned int width, height, I; /* ÀÚ½ÄâÀÇ Æø & ³ôÀÌ */ /* ¼¹ö¿Í Á¢¼ÓÇϱ⠱׸®°í º¯¼öµéÀ» ÃʱâÈ */ d = XOpenDisplay ( NULL ); black_pixel = BlackPixel ( d, 0 ); width = 200; height = 100; w_X1 = 10; w_Y1 = 10; w_X2 = width - 10; w_Y2 = height - 10; /* ÀÚ, ½ÃÀÛÇغ¼±î¿ä? */ printf( "I will make windows.\n" ); sleep( 2 ); /* â Çϳª ±×¸®°í ÀÚ½Äâ 2°³ »ý¼º */ w0 = XCreateSimpleWindow ( d, DefaultRootWindow( d ), 100, 100, width*2, height*2, 1, black_pixel, WhitePixel( d, 0 ) ); w1 = XCreateSimpleWindow ( d, w0, w_X1, w_Y1, width, height, 1, black_pixel, UsrColorPixel( d, "magenta" ) ); w2 = XCreateSimpleWindow ( d, w0, w_X2, w_Y2, width, height, 3, black_pixel, UsrColorPixel( d, "blue" ) ); /* â°ú ÀÚ½ÄâÀ» ȸé»ó¿¡ Ç¥½Ã */ XMapWindow( d, w0 ); XMapSubwindows( d, w0 ); XFlush( d ); printf( "Unmap & Map.\n" ); sleep( 3 ); /* â Çϳª¸¦ UNMAP, MAP */ XUnmapWindow( d, w1 ); XFlush( d ); sleep( 1 ); XMapWindow( d, w1 ); XFlush ( d ); printf( "I will change the color of windows.\n" ); sleep( 3 ); /* â ÇϳªÀÇ »ö»óÀ» º¯°æ */ XSetWindowBorder( d, w2, UsrColorPixel( d, "red" ) ); XSetWindowBackground( d, w2, UsrColorPixel( d, "green" ) ); XClearWindow( d, w2 ); XFlush( d ); sleep( 1 ); XSetWindowBackground( d, w0, UsrColorPixel( d, "yellow" ) ); XClearWindow( d, w0 ); XFlush( d ); printf( "I will move windows.\n" ); sleep( 3 ); /* â Çϳª¾¿ À̵¿ */ for ( ; w_X1 < width - 10 ; ) { XMoveWindow( d, w1, w_X1++, w_Y1 ); XFlush( d ); } for ( ; w_X1 > 10 ; ) { XMoveWindow( d, w1, w_X1--, w_Y1 ); XFlush( d ); } for ( ; w_Y2 > 10 ; ) { XMoveWindow( d, w2, w_X2, w_Y2-- ); XFlush( d ); } for ( ; w_Y2 < height - 10 ; ) { XMoveWindow( d, w2, w_X2, w_Y2++ ); XFlush( d ); } printf( "I will change the size of windows.\n" ); sleep( 3 ); /* âÀÇ Å©±â¸¦ È®Àå/Ãà¼Ò */ XResizeWindow ( d, w1, width + 100, height + 50 ); XMoveResizeWindow ( d, w2, w_X2 + 50, w_Y1 + 20, width - 100, height - 50 ); /* XMoveResize !!! */ XFlush ( d ); printf( "At last, I will change the width of borders.\n" ); sleep( 3 ); /* âÀÇ Å׵θ® È®Àå */ for ( I = 1 ; I < 20 ; I++ ) { XSetWindowBorderWidth ( d, w2, I ); XFlush( d ); } printf( "Jobs done. Merci.\n" ); sleep( 3 ); /* â Æı« & ¼¹ö¿ÍÀÇ Á¢¼Ó ÇØÁ¦ */ XUnmapWindow( d, w0 ); XUnmapSubwindows( d, w0 ); XDestroySubwindows( d, w0 ); XDestroyWindow( d, w0 ); XCloseDisplay( d ); return 0; /* ¼º°øÀûÀ¸·Î ÇÁ·Î±×·¥À» ¼öÇà */ } /* UsrColorPixel() : ÁÖ¾îÁø À̸§ÀÇ »ö»ó¿¡ ´ëÇÑ ±âº» Ä÷¯¸ÊÀÇ Çȼ¿°ª ¹Ýȯ */ unsigned long UsrColorPixel( display, name ) Display *display; char *name; { Colormap cmap; XColor c0, c1; cmap = DefaultColormap( display, 0 ); XAllocNamedColor( display, cmap, name, &c0, &c1 ); /* ¿©±â¼ ¿ì¸®´Â c1 À» ¾ÆÁ÷ ÀÌ¿ëÇÏÁö ¾Ê½À´Ï´Ù. */ return ( c0.pixel ); } ¿©±â±îÁö°¡ ¿¹Á¦ 6)ÀÔ´Ï´Ù. ¸¶Áö¸·¿¡ »ç¿ëÀÚ Á¤ÀÇÇÔ¼ö UsrColorPixel()Àº ¹Ù·Î Àü ½Ã°£¿¡ Á¦°¡ ¹®Á¦·Î ³»µå·È´ø °Í¿¡ ´ëÇÑ ´ä Áß ÇϳªÀÔ´Ï´Ù. ¿©·¯ºÐµé²²¼ °¢ÀÚ ÀڽŸ¸ÀÇ Á¤ÀÇÇÔ¼ö¸¦ ¸¸µé¾î ³õÀ¸¼Ì°ÚÁö¿ä? Àú¶û ºñ±³ÇØ º¸½Ê½Ã¿ä. ÀÌ ¿¹Á¦¸¦ º¸½Ã¸é¼ ÇÑ ÁÙ ÇÑ ÁÙÀÌ ¾î¶² ÀÏÀ» ÇÏ°Ô µÉ °ÍÀÎÁö ¹Ì¸® ¸Ó¸® ¼Ó¿¡¼ ±×·Áº¸½Ã°í, ¹ø°Å·Î¿ì½Ã´õ¶óµµ ²À ¿¹Á¦¸¦ Àڱ⠼ÕÀ¸·Î ŸÀÌÇÎÇϽøé¼( »ó´çÇÑ ³ë°¡ ´ÙÁÒ? :) ) ÇÔ¼ö ÇϳªÇϳª¸¦ ÀÍÈ÷½Ã±â ¹Ù¶ø´Ï´Ù. ¸ðµç ÇÔ¼öµéÀÌ ¿Ö ±×·¸°Ô ¾º¿©Á®¾ß Çϴ°¡, ¿Ö ±×·¸°Ô ¹Û¿¡ ¸¸µéÁö ¸øÇߴ°¡¿¡ ´ëÇؼµµ »ý°¢ÇØÁÖ½Ã¸é ´õ¿í ÁÁ±¸¿ä. ±× ´ÙÀ½, ÀÌ ¿¹Á¦ ¼Ó¿¡´Â Á¦°¡ ¼³¸íµå¸®Áö ¾ÊÀº ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ±× ÇÔ¼ö´Â ¿©·¯ºÐ ²²¼ ÈûµéÀÌÁö ¾Ê°í ±× ÀÇ¹Ì¿Í »ç¿ë¹ýÀ» ¾Æ½Ç ¼ö ÀÖÀ» °Å¶ó°í »ý°¢ÇÕ´Ï´Ù. ¿©·¯ºÐµµ Àß ¾Æ½Ç °Ì´Ï´Ù. ÇÁ·Î±×·¡¹ÖÀº Â¥Áõ³¯ Á¤µµ·Î ¸¹Àº ½Ç¼öµéÀÇ ¿¬¹ß ¼Ó¿¡¼ ±× ½Ç·ÂÀÌ ´Ã¾î°£´Ù´Â »ç½Ç, ±×¸®°í ¾û¶×ÇÑ ½Ç¼ö ¼Ó¿¡¼ Áß¿äÇÑ ¹®Á¦µéÀ» ÆľÇÇØ ³ª°¥ ¼ö ÀÖ´Ù´Â »ç½Ç ¸»ÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº ¹®ÀåÀÌ ¿¹Á¦¿¡ ÀÖÁÒ? XSetWindowBackground( d, w0, UsrColorPixel( d, "yellow" ) ); ¿ä ¹®ÀåÀ» /* */À¸·Î ÁÖ¼®¹® ó¸®ÇϽðųª Áö¿ì½Å ´ÙÀ½ ÄÄÆÄÀÏÇÏ°í ½ÇÇà½ÃÄÑ º¸¼¼¿ä. ÀÚ, ¾î¶² ÀÏÀÌ ÀϾ´Ï±î? X À©µµ¿ì ÇÁ·Î±×·¡¹Ö º° °Í ¾Æ´Õ´Ï´Ù. âÀ» °¡Áö°í ³ë´Â Àå³À̶ó°í³ª ÇÒ±î¿ä? ´ÙÀ½¿¡ ºË°Ú½À´Ï´Ù. ¾È³çÈ÷ °è½Ê½Ã¿ä. |