µüÁö_CEGUI
 
- 1 IME
 
- 1.1 IME¶õ ¹«¾ùÀΰ¡?
 
- 1.2 ÀϹÝÀûÀÎ IMEÀÇ µ¿ÀÛ
 
- 1.2.1 IME¿¡ °ü·ÃµÈ ÇÔ¼öµé
 
  
- 1.3 ÇÑ±Û ÀÔ·Â °ü·Ã À©µµ¿ì ¸Þ¼¼Áö
 
- 1.3.1 WM_IME_COMPOSITIONÀÇ ¹ß»ý°ú Ãëµæ ÇÑ±Û ÄÚµå
 
  
  
- 2 CEGUI-SDK-0.5.0b(±âÁØÀ¸·Î Á¤¸®)
 
- 2.1 ÆÄÀÏ ±¸Á¶
 
- 2.1.1 schemes
 
- 2.1.2 looknfeel
 
- 2.1.3 imagesets
 
- 2.1.4 layouts
 
  
- 2.2 ÇÑ±Û ¼³Á¤
 
- 2.2.1 ÇÑ±Û Ãâ·Â
 
- 2.2.2 ÇÑ±Û ÀÔ·Â1
 
- 2.2.3 Âü°í - ÇÑ±Û ÀÔ·Â2
 
  
  
- 3 °ø°³ GUI ¶óÀ̺귯¸® ¸µÅ© ¸ðÀ½
 
  
 
  | 
 1 IME #
Âü°í »çÀÌÆ®; 
 1.1 IME¶õ ¹«¾ùÀΰ¡? #
IME¶õ Input Method Editor·Î ±Øµ¿ ¾Æ½Ã¾Æ ¾ð¾îÀÎ Çѱ¹¾î, Áß±¹¾î, ÀϺ»¾îµî DBCS(Double Byte Character Sets) / MDCS(Multi Byte Character Sets)À» ÀÔ·Â ¹Þ´Â ¿¡µðÅ͸¦ ¸»ÇÑ´Ù.
 
Âü°íÀÚ·á >> 
http://www.dexgame.com/zbxe/?mid=download&search_target=title&search_keyword=ime&document_srl=5879 
        ´Ù±¹¾î IME ±¸Çö Àç·á (ANSI ¸ðµå »ç¿ë)      
     
 
     IME_Test.zip  (2006.12.08)...     
À̱ÇÀÏ  ¾È³çÇϼ¼¿ä. ¸ÅÅ©·Î ¾ø´Â ¸Þºñ~¶ø´Ï´Ù.
´Ù±¹¾î IME ±¸Çö ÀÚ·áÀÔ´Ï´Ù. ¿¾³¯ ÀÚ·á½Ç¿¡ ÀÖ¾ú´Âµ¥ ÀÌÂÊÀ¸·Î ¾à°£ ¼öÁ¤ÇÑ »õ ¹öÁ¯À» ¿Ã¸³´Ï´Ù. ±âº»ÀûÀ¸·Î ANSI ¹öÁ¯¿¡¼ ÀÛµ¿ÇÏ´Â ÄÚµåÀÌ¸ç ´Ù±¹¾î ÀÔ/Ãâ·Â °ü·Ã Äڵ尡 µé¾î ÀÖ½À´Ï´Ù. Composite ¿Í Candidate ´Â GDI¿¡ Á÷Á¢ ±×·ÁÁÖ°í ÀÖÀ¸´Ï ¶â¾î¼ °ÔÀÓ¿¡ º¸¿©ÁÖ½Ã¸é µÇ°í ÆùÆ® Ãâ·ÂºÎºÐÀ» Unicode ·Î Çϰí ÀÖÀ¸³ª ANSI ·Î º¯È¯Çؼ Âï¾îÁּŵµ µË´Ï´Ù.
º¯°æ»çÇ×; Vietnam Charset/Codepage ó¸® Ãß°¡ (switch¹®) 
 1.2 ÀϹÝÀûÀÎ IMEÀÇ µ¿ÀÛ #
ÀϹÝÀûÀÎ 
CWnd¸¦ »ó¼Ó¹Þ¾Æ¼ ¸¸µç À©µµ¿ì´Â ¿µ¹®ÀÚ¸¦ ÀÔ·Â ¹ÞÀ¸·Î WM_KEYDOWN ´ÙÀ½¿¡ WM_CHAR¸Þ¼¼Áö°¡ ¹ß»ýÇÏ°Ô µÇÁö¸¸ ÇѱÛÀÏ °æ¿ì¿¡´Â WM_KEYDOWN ´ÙÀ½¿¡ WM_IME_COMPOSITIONÀÌ ¹ß»ýÇϰí ÇѱÛÀÌ ¿Ï¼ºÀÌ µÇ¸é WM_CHARÀÌ µÎ¹ø ¹ß»ýµÇ°Ô µÈ´Ù. ¿Ö µÎ¹øÀ̳ĸé ÇѱÛÀº 2byteÀ̹ǷΠÇѹø¿¡ Àü´ÞÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.
 
ÀÌ·²¶§ÀÇ ¹®Á¦Á¡Àº ÇѱÛ󸮰¡ ÀÚÀ½À̳ª ¸ðÀ½´ÜÀ§·Î ó¸®ÇÒ ¼ö ¾ø°í ±ÛÀÚ´ÜÀ§·Î ó¸®ÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.
ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ ±âº» IME¿¡¼ ¹ß»ýµÇ´Â ¸Þ¼¼Áö¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÁ·Î±×·¡¸Ó°¡ Á÷Á¢ÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù.
½Ã½ºÅÛ¿¡¼´Â IME À©µµ¿ìÀÇ º¯È/Á¶¸³ ¹®ÀÚ¿ÀÇ º¯È µî IMEÀÇ ¸ðµç »óÅ º¯È¿¡ ´ëÇØ WM_IME ·Î ½ÃÀ۵Ǵ IME ¸Þ½ÃÁö¸¦ Æ÷Ä¿½º À©µµ¿ì¿¡ º¸³½´Ù. ÀÌ ¸Þ½ÃÁöµéÀ» ó¸®ÇÏÁö ¾Ê°í 
DefWindowProc() À¸·Î º¸³¾ °æ¿ì ÇÁ·Î±×·¥Àº ¿Ï¼ºµÈ ¹®ÀÚ¿¡ ´ëÇØ¼¸¸ WM_CHAR ¸Þ½ÃÁö¸¦ ¹Þ°Ô µÈ´Ù. 
 
 1.2.1 IME¿¡ °ü·ÃµÈ ÇÔ¼öµé #
|  ÇÔ¼ö                    |  ¼³¸í             | 
|  ImmAssociateContext     |  ƯÁ¤À©µµ¿ì¿Í IME¸¦ ¸ÅÇνÃŲ´Ù.  Default IME¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ »õ·Î¿î IME¸¦ »ý¼ºÇؼ ³» À©µµ¿ì Ư¼º¿¡ ¸Â°Ô »ç¿ëÇÒ¼ö ÀÖ´Ù.  | 
|  ImmCreateContext        |  »õ·Î¿î IME¸¦ »ý¼ºÇÑ´Ù. ³ªÁß¿¡ ¹Ýµå½Ã ImmDestroyContext¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.  | 
|  ImmDestroyContext       |  IME¸¦ ¹ÝȯÇÑ´Ù.  | 
|  ImmGetDefault           |  IMEWnd Default IME ÇÚµéÀÇ ¾ò´Â´Ù. ³ªÁß¿¡ ¹Ýµå½Ã ImmReleaseContext ¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.  | 
|  ImmReleaseContext       |  Default IME ÇÚµéÀ» OS¿¡ ¹ÝȯÇÑ´Ù.  | 
|  ImmGetConversionStatus  |  IMEÀÇ »óŸ¦ ÃëµæÇÑ´Ù.  | 
|  ImmSimulateHotKey       |  ÇÑ/¿µ, Àü°¢/¹Ý°¢, ÇÑÀÚµîÀÇ Å°¸¦ Simulation ÇØ ÁØ´Ù.  | 
|  ImmGetCompositionString |  ÇöÀç IME¿¡ ÀԷµǾî ÀÖ´Â ÇѱÛÄÚµåÀÇ Å©±â ¹× ³»¿ëÀ» ÃëµæÇÑ´Ù.  | 
|  IsDBCSLeadByte          |  ÇÑ±Û µÎ ByteÁß¿¡¼ ù¹øÂ° ByteÀÎÁö °Ë»çÇØ ÁÖ´Â ÇÔ¼öÀÌÁö¸¸ Á¶ÇÕÇü ÇѱÛÀº ù¹øÂ° Byte¿¡ ¿Ã¼ö ÀÖ´Â ÄÚµå¿Í µÎ¹øÂ° Byte¿¡ ¿Ã ¼ö ÀÖ´Â ÄÚµåÀÇ ¹üÀ§°¡ °°¾Æ¼ ÀÌ ÇÔ¼ö·Î °Ë»çÇÒ ¼ö ¾ø´Ù. µû¶ó¼ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¸»°í Á÷Á¢ ¸¸µé¾î¼ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.   | 
 1.3 ÇÑ±Û ÀÔ·Â °ü·Ã À©µµ¿ì ¸Þ¼¼Áö #
|  ¸Þ¼¼Áö  |  »ó ¼ö °ª  |  »ó¼öÀÇ ÀÇ¹Ì  | 
|  WM_KEYDOWN  |  &H100  |  ۰¡ ´¸± ¶§ ¹ß»ý  | 
|   |  ÇÑ±Û ÀÔ·Â Áß¿¡´Â wParam¿¡ 229(ÄÜÆ®·ÑÀÇ "KeyDown"À̺¥Æ®¿Í °°À½)¸¦, lParam¿¡ ŰÄÚµå¿Í ´Ù¸¥ Á¤º¸¸¦ ÇÔ²² ¹ÝȯÇÑ´Ù. lParam°ªÀ» APIÇÔ¼öÀÎ "MapVirtualKey"¸¦ »ç¿ëÇÏ¿© ÇÑ±Û ÀÔ·Â Áß¿¡ ´¸° ۸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. ÇѱÛÀÌ ¾Æ´Ò °æ¿ì¿¡´Â wParam¿¡ ÄÜÆ®·ÑÀÇ "KeyDown"À̺¥Æ®¿¡¼ ¹ÝȯÇÏ´Â "KeyCode¿Í °°Àº °ªÀ» ¹ÝȯÇÑ´Ù.(ÀÌ ¶§µµ lParam¿¡ °°Àº °ªÀÌ ¹ÝȯµÊ)  | 
|  WM_KEYUP    |  &H101  |  ÄÜÆ®·ÑÀÇ "KeyUp"À̺¥Æ®¿Í °°´Ù   | 
|  WM_CHAR     |  &H102  |  ÄÜÆ®·ÑÀÇ "KeyPress"À̺¥Æ®¿Í °°Áö¸¸ ÇѱÛÀÇ °æ¿ì¿¡´Â ÇѱÛÀÇ Ã¹¹ÙÀÌÆ®¸¸ ¹ÝȯÇÑ´Ù  | 
|  WM_IME_STARTCOMPOSITION  |  &H10D  |  ÇѱÛÀ» óÀ½ ÀÔ·ÂÇÒ ¶§ ¹ß»ý(IME°¡ Á¶¸³ ¹®ÀÚ¿À» ¸¸µé±â Á÷Àü¿¡ º¸³½´Ù)  | 
|   |  -.¿µ¹® ÀÔ·Â ÈÄ ¶Ç´Â ¼öÀÚ ÀÔ·Â ÈÄ ÇÑ±Û Å°¸¦ ´©¸£¸é ´Ü Çѹø¸¸ ¹ß»ýÇÑ´Ù.¿¹) "123"À» ÀÔ·ÂÇÏ´Ù°¡ "¤¡"À» ´©¸£¸é ¹ß»ý(WM_IME_ENDCOMPOSITION ¹ß»ýÈÄ ÇÑ±Û ÀԷ½à ¹ß»ý)  | 
|   |  -.Á¶¸³À» ½ÃÀÛÇÑ´Ù´Â ÅëÁöÀ̹ǷΠwParam, lParam À¸·Î Àü´ÞµÇ´Â ÀÎÀÚ°¡ ¾øÀ¸¸ç ¸®ÅÏ °ªµµ Àǹ̰¡ ¾ø´Ù. µðÆúÆ® À©µµ¿ì¿¡¼´Â ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ Á¶¸³ À©µµ¿ì¸¦ º¸¿©ÁØ´Ù.  | 
|  WM_IME_COMPOSITION       |  &H10F  |  ÇÑ±Û ÀÔ·Â Áß¿¡ ¹ß»ý(ÇѱÛÀ» ÇÕ¼ºÁßÀζó´Â ÀÇ¹Ì ÀÓ)  | 
|   |  -.WM_IME_STARTCOMPOSITION°¡ ¹ß»ýÇÑ ÈÄ ÇÑ±Û Å°¸¦ ´©¸¦ ¶§ ¸¶´Ù ¹ß»ýÇÏ¸ç  wParam°ú lParam¿¡ ºÎ°¡ÀûÀÎ Á¤º¸°¡ ¹Ýȯ µÈ´Ù.  | 
|   |  -.ÇѱÛÀÇ °æ¿ì ÇÑ À½¼Ò°¡ ÀÔ·ÂµÉ ¶§¸¶´Ù ¸Þ½ÃÁö°¡ ¹ß»ýÇϹǷΠÁ¶¸³ÁßÀÎ ¹®ÀÚ¸¦ º¸¿©ÁÖ°í ½ÍÀº °æ¿ì ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÑ´Ù(WM_IME_COMPOSITION ¸Þ½ÃÁö´Â Á¶ÇÕÀÌ ³¡³ª¸é WM_IME_CHAR ¸Þ½ÃÁö¸¦ Ãß°¡·Î ¹ß»ý ½ÃŲ´Ù)  | 
|   |  wParam  |  ÇÕ¼º ÁßÀÎ Çѱۿ¡ ´ëÇÑ ASCII Code°¡ ¹ÝȯµÈ´Ù(Á¶¸³ÁßÀÎ ¹®ÀÚÀÇ Äڵ尡 Àü´ÞµÇ¸ç 2¹ÙÀÌÆ®ÀÇ DBCS ¹®ÀÚ·Î Á¶¸³ÁßÀÎ Áß°£ ¹®ÀÚ ÄÚµåÀÌ´Ù)  | 
|   |  lParam  |  ¹ÝȯµÈ wParam°¡ ÇÕ¼ºÁßÀÎ ±ÛÀÚ ÀÎÁö ¿Ï¼ºµÈ ±ÛÀÚÀÎÁö¸¦ ¹ÝȯÇÑ´Ù(Á¶¸³ »óŰ¡ ¾î¶»°Ô º¯°æµÇ¾ú´ÂÁö, ÀÌ ¹®ÀÚ¸¦ ¾î¶»°Ô ó¸®ÇØ¾ß ÇÏ´ÂÁö ³ªÅ¸³»´Â Ç÷¡±×ÀÇ ÁýÇÕÀÌ´Ù)  | 
|   |  lParam °ª ÀÇ¹Ì  |    | 
|   |  &H6018(GCS_COMPSTR)   |  ¹ÝȯµÈ wParam°¡ ÇÕ¼ºÁßÀÎ ±ÛÀÚÀÓ(¾ÆÁ÷ ÇÑ À½ÀýÀÌ ¿Ï¼ºµÇÁö ¾Ê¾Ò´Ù)  | 
|   |  &H800(GCS_RESULTSTR)  |  ¹ÝȯµÈ wParam°¡ ¿Ï¼ºµÈ ±ÛÀÚÀÓ    | 
|  WM_IME_ENDCOMPOSITION    |  &H10E  |  ÇÑ±Û ÀÔ·ÂÀ» Á¾·áÇÒ ¶§ ¹ß»ý/ ÇѱÛÀԷµµÁß ÇѱÛÀÌ¿ÜÀÇ ¹®ÀÚ°¡ ÀԷµǾúÀ»¶§ ¹ß»ý(Á¶¸³ÀÌ ³¡³µ´Ù´Â ÅëÁö ¸Þ½ÃÁö  | 
|   |  -.ÇÑ±Û ÀÔ·Â Áß ÇѱÛ۰¡ ¾Æ´Ñ ۸¦ ´©¸¦ ¶§(¼ýÀÚŰ, EnterŰ, ÇÑ¿µ º¯È¯Å°, ¹æÇâŰ µî), ¸¶¿ì½º·Î Ŭ¸¯Çϰųª, Æ÷°Å½º¸¦ ÀÒÀ» ¶§ ¹ß»ýÇÑ´Ù.(Áï ÇÑ±Û ÀÔ·Â Áß¿¡´Â °ËÁ¤ »óÀÚ°¡ »ý±â´Â µ¥ ±× °ËÁ¤ »óÀÚ°¡ ¾ø¾îÁú ¶§)  | 
|   |  -.Àμö¿Í ¸®ÅÏ °ªÀÌ ¾ø´Ù.  | 
|  WM_IME_SETCONTEXT        |  &H281  |  À©µµ¿ì°¡ Ȱ¼ºÈ µÉ¶§ ±âº» IMEÀÇ Ãʱâȸ¦ À§Çؼ ¹ß»ý(ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ È°¼º/ºñȰ¼ºÈ µÉ ¶§ º¸³»Áø´Ù)  | 
|   |  Ä¿½ºÅÒ À©µµ¿ìÀÇ °æ¿ì ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ImmIsUIMessage() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Á¶¸³ À©µµ¿ì¿Í Èĺ¸ À©µµ¿ì¸¦ º¸À̵µ·Ï ÇØ¾ßÇÑ´Ù.  | 
|   |  wParam  |  Ȱ¼ºÈ µÇ¸é TRUE, ºñȰ¼ºÈ µÇ¸é FALSE°¡ Àü´ÞµÈ´Ù.  | 
|  WM_IME_NOTIFY            |  &H282  |  IME À©µµ¿ì°¡ º¯°æµÇ¾ú´Ù´Â ÅëÁö ¸Þ½ÃÁöÀÌ´Ù.  | 
|   |  IME_OPENSTATUSWINDOW ÅëÁö ¸Þ½ÃÁö´Â ½Ã½ºÅÛ ¼³Á¤¿¡¼ 'IME »óÅÂÇ¥½Ã' ¿É¼ÇÀÌ ¼±ÅõǾîÀÖÁö ¾ÊÀ¸¸é Àü´ÞµÇÁö ¾Ê´Â´Ù.  | 
  |  wParam  |  º¯°æÀÇ Á¾·ù. Èĺ¸ À©µµ¿ì°¡ ¿·È´Ù°Å³ª ¸ñ·ÏÀÌ º¯°æµÊ, ÇѱÛ, ¿µ¹® ÀÔ·Â ¸ðµå°¡ º¯°æµÇ¾úÀ½À» ÅëÁöÇÑ´Ù  |  
 | |  WM_IME_CONTROL           |  &H283  |    | 
|  WM_IME_COMPOSITIONFULL   |  &H284  |    | 
|  WM_IME_SELECT            |  &H285  |    | 
|  WM_IME_CHAR              |  &H286  |  ¿Ï¼ºµÈ Çѱۿ¡ ´ëÇÑ ASCII°ªÀ» ¹Ýȯ(¹®ÀÚ Çϳª°¡ ¿Ï¼ºµÇ¾úÀ» ¶§ º¸³»Áø´Ù)  | 
|   |  WM_IME_COMPOSITION ¹ß»ý ÈÄ(lParam °ªÀÌ &H800ÀÏ ¶§) ¹ß»ýÇÑ´Ù.  À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ÇѱÛÀÇ °æ¿ì WM_CHAR°¡ ÇѱÛÀÇ Ã¹¹ÙÀÌÆ®¸¸ ¹ÝȯÇϱ⠶§¹®¿¡ ¿Ï¼ºµÈ Çѱ۸¸À» ¾Ë¾Æ³»±â À§Çؼ´Â ÀÌ ¸Þ¼¼Áö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.(½ÇÁ¦·Î´Â WM_IME_COMPOSITION ¸Þ¼¼Áö¸¦ »ç¿ëÇϱ⠶§¹®¿¡ º°·Î »ç¿ëÇÏÁö ¾ÊÀ½)  | 
|   |  ¿Ï¼ºµÈ ¹®ÀÚ¸¦ Á÷Á¢ ó¸®ÇÏ·Á¸é ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÑ´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ¹«½ÃÇϸé ÇÑ±Û ÇÑ ¹®ÀÚ¿¡ ´ëÇØ WM_CHAR ¸Þ½ÃÁö¸¦ µÎ ¹ø ¹Þ°Ô µÈ´Ù. WM_IME_CHAR ¸Þ½ÃÁö´Â WM_CHAR¸Þ½ÃÁö¸¦ Ãß°¡·Î ¹ß»ý ½ÃŲ´Ù.  | 
|   |  wParam  |  ¿Ï¼ºµÈ ¹®ÀÚÀÇ Äڵ尡 Àü´ÞµÈ´Ù. ÀÌ ÄÚµå´Â DBCS ÀÏ ¼ö ÀÖ´Ù. ´Ü, À¯´Ï ÄÚµåÀÇ °æ¿ì WM_CHAR¿Í WM_IME_CHAR´Â µ¿ÀÏÇÑ ¹ÙÀÌÆ®¸¦ ó¸®ÇÑ´Ù. | 
|  WM_IME_KEYDOWN           |  &H290  |   ÇÑ±Û ÀÔ·ÂÁß ÇѱÛ۰¡ ¾Æ´Ñ ۸¦ ´©¸¦ °æ¿ì ±× ۰ªÀ» ¹Ýȯ  | 
|   |  WM_IME_ENDCOMPOSITION¸Þ¼¼Áö ¹ß»ý ÈÄ¿¡(ÇÑ±Û ÀÔ·ÂÀ» Á¾·áÇϰí)¹ß»ýÇÑ´Ù.  | 
|  WM_IME_KEYUP             |  &H291  |    | 
|  WM_IME_REPORT            |  &H0280 |    | 
|  WM_IME_REQUEST           |  &H0288 |    | 
 1.3.1 WM_IME_COMPOSITIONÀÇ ¹ß»ý°ú Ãëµæ ÇÑ±Û ÄÚµå #
ÀÌ ºÎºÐÀº ÇѱÛÀ» ÀÔ·Â ÇßÀ»¶§, Áï WM_IME_COMPOSITION ¸Þ¼¼Áö°¡ ¹ß»ýÇßÀ»¶§ IME ¹öÆÛÀÇ ³»¿ëÀ» Ç¥·Î ¸¸µé¾î ³õÀº °ÍÀÌ´Ù.
WM_IME_COMPOSITION ¸Þ¼¼Áö´Â Çѱ۸ðµå¿¡¼ ÇѱÛÀÌ ÀÔ·ÂµÇ¸é ¿Ï¼ºÀÌµç ¹Ì¿Ï¼ºÀ̵ç ÀÌ ¸Þ¼¼Áö¸¦ ¹ß»ýÇÏ°Ô µÇ´Âµ¥ lParamÀÇ °ªÀ¸·Î °Ë»çÇØ¼ ¿Ï¼ºµÈ ±ÛÀÚÀÎÁö ¹Ì ¿Ï¼ºµÈ ±ÛÀÚÀÎÁö ¾Ë¼ö ÀÖ´Ù.  ±×¸®°í IME°¡ ÀúÀåÇϰí ÀÖ´Â ¹®ÀÚ¿À» Composition ¹®ÀÚ¿À̶ó°í ÇÑ´Ù.
|  ÀԷ¼ø¼  |  lParamÀÇ ³»¿ë  |  ¹öÆÛÀÇ ³»¿ë  |   |  ÀԷ¼ø¼  |  lParamÀÇ ³»¿ë  |  ¹öÆÛÀÇ ³»¿ë  | 
|  ¤¡        |  GCS_COMPSTR    |  ¤¡           |   |  ¤¡        |  GCS_COMPSTR    |  ¤¡           | 
|  ¤¿        |  GCS_COMPSTR    |  °¡           |   |  ¤¿        |  GCS_COMPSTR    |  °¡           | 
|  ¤¤        |  GCS_COMPSTR    |  °£           |   |  Back Space  |  GCS_COMPSTR  |  ¤¡           | 
|  ¤¿        |  GCS_RESULTSTR  |  °¡           |   |  Back Space  |  GCS_COMPSTR  |  NULL (±æÀÌ 0)  | 
|            |  GCS_COMPSTR    |  ³ª           | 
|  ¤§        |  GCS_COMPSTR    |  ³®           | 
|  ¤¿        |  GCS_RESULTSTR  |  ³ª           | 
|   ¡¡       |  GCS_COMPSTR    |  ´Ù           | 
|  3         |  GCS_RESULTSTR  |  ´Ù3          | 
¡¡ ¡¡ ¡¡ 
 
 2.1 ÆÄÀÏ ±¸Á¶ #
'CEGUI-SDK-0.5.0b-vc8\datafiles\'Æúµå¿¡ ÀúÀåµÈ ´Ù¾çÇÑ ÆÄÀÏÀ» ·ÎµùÇØ¼ »ç¿ëÇϸç
±âº»ÀûÀÎ ±¸Á¶·Î schemes, looknfeel, imagesets, layouts·Î ±¸¼ºµÈ´Ù.  
 
<
xml version="1.0" ?>  // xml ¹öÀü
<
GUIScheme Name="
WindowsLookSkin">   // 
GUIScheme À̸§
<Imageset Name="
WindowsLook" Filename="
WindowsLook.imageset" />  // ¿¬µ¿µÉ Image Set
<
LookNFeel Filename="
WindowsLook.looknfeel" />    // ¿¬µ¿µÉ 
LookNFeel 
<
WindowSet Filename="
CEGUIFalagardWRBase" />      // ¿¬µ¿µÉ 
WindowSet 
<
FalagardMapping 
WindowType="
WindowsLook/Button"     // À©µµ¿ì ŸÀÔ
TargetType="CEGUI
/PushButton"       // Ÿ°Ù ŸÀÔ
Renderer="Falagard/Button"          // ·»´õ·¯ ŸÀÔ
LookNFeel="
WindowsLook/Button" />   // 
LookNFeel
 
Falagard ½ºÅ²À» ±¸¼ºÇÏ´Â ºÎºÐÀ¸·Î ±âº»ÀûÀÎ ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.
<
xml version="1.0" ?>
<Falagard>
<
WidgetLook name="
WindowsLook/Button">
<
PropertyDefinition name="
NormalTextColour" initialValue="
FF000000" redrawOnWrite="true" />  // ¼Ó¼ºÀ» Á¤ÀÇ
</ 
WidgetLook>
</ Falagard>
 
À̹ÌÁö¼ÂÀº À̹ÌÁö/ÅØ½ºÃ³ »óÀÇ Á¤ÀÇµÈ ¿µ¿ªÀÇ ÁýÇÕÀ¸·Î 
CEImagesetEditor¸¦ ÅëÇØ¼ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
<
xml version="1.0" ?>
<Imageset Name="
WindowsLook" Imagefile="
WindowsLook.tga" 
NativeHorzRes="800" 
NativeVertRes="600" 
AutoScaled="true">
<Image Name="Background" 
XPos="9" 
YPos="9" Width="2" Height="2" />
...
</Imageset>
Á¤ÀÇµÈ ¿µ¿µµéÀº ½Ã½ºÅÛ ³»ºÎ¿¡¼ ´ÜÀÏÇÑ À̸§ÀÇ Image·Î »ç¿ëÇÑ´Ù.
 
CELayoutEditor¸¦ »ç¿ëÇØ¼ ·¹À̾ƿôÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
<
xml version="1.0" ?>
<
GUILayout>
<Window Type="Vanilla/Button" Name="Vanilla/Console/Submit">
<Property Name="ID" Value="1" />
</Window>
...
<
/GUILayout>
 2.2 ÇÑ±Û ¼³Á¤ #
Ãâó; 
http://blog.naver.com/dekaf?Redirect=Log&logNo=40041234507 
1.CEGUI 0.5.0ºÎÅÍ´Â ¸î °¡Áö µî·ÏÀ» ÅëÇØ¼ ÇѱÛÀ» Ãâ·ÂÇÑ´Ù.Àº ¼ø¼·Î µî·ÏÇØ ÁØ´Ù.
1-1.ÇÑ±Û ÆùÆ® µî·Ï
-.»ç¿ëÇÒ ÆùÆ®¸¦ datafiles\fonts¿¡ ³Ö¾îÁØ´Ù.
-.ÇѱÛ.font ÆÄÀÏÀ» ÀÛ¼º
<
xml version="1.0" ?>
<Font Name="Han-12" Filename="
H2GTRE.TTF" Type="
FreeType" Size="10" 
NativeHorzRes="800" 
NativeVertRes="600" 
AutoScaled="true"/>
-.ÇÑ±Û ÆùÆ®·Î¼ Filename="
H2GTRE.TTF"¸¦ »ç¿ëÇϸç, À§Ä¡°¡ ´Ù¸¦ °æ¿ì Æúµå °æ·Î¸¦ ¼³Á¤ 
1-2.ÇÁ·Î±×·¥¿¡¼ ÆùÆ® ·Îµù
-.FontManager:
:getSingleton().createFont("ÇѱÛ.font");
1-3.Ãâ·ÂÇÒ ÇѱÛÀ» UTF-8·Î º¯È¯
1) ¼Ò½ºÄÚµå ÀÚü¸¦ UTF-8·Î ÀúÀå; Visual Studio¿¡¼ ¼Ò½ºÄڵ带 ÀúÀåÇÒ ¶§, UTF-8·Î ÀúÀåÇÏ¸é º° ¹®Á¦¾øÀÌ ÇѱÛÀÌ Ãâ·Â
Visual Studio 6.0¿¡¼ ÀúÀåÇü½ÄÀ» ¼³Á¤ÇÒ ¼ö ¾øÀ½
VS 2005¿¡¼´Â °í±Þ¿É¼Ç¿¡¼ UTF-8·Î ÀúÀå °¡´É(Á¦´ë·Î µÇÁö ¾Ê´Â´Ù°í ÇÔ)
VS 2003¿¡¼´Â Àß µÈ´Ù°í ÇÔ
2) Á¤ÀûÀ¸·Î Ãâ·ÂÇÒ ¹®ÀÚµéÀ» UTF-8·Î ÀÎÄÚµå ÇØ¼ File·Î ÀúÀå½ÃÄÑµÎ°í °Å±â¼ ÀÐ¾î¼ Ãâ·Â
VS 2005¿¡¼ UTF-8·Î ÀÎÄÚµùµÈ ÆÄÀÏÀ» ÀÐ¾î¼ ÂïÀ¸¸é ÇѱÛÀÌ Àß ³ª¿È
3) MBC ¹®ÀÚ¿À» UTF-8·Î ¸¸µé¾î¼ CEGUI ¸ðµâ·Î º¸³»±â(º¯È¯Àº MBC -> Unicode -> UTF-8 ¼ø¼·Î) 
         Âü°í ÆÄÀÏ(in orge3d ½ºÅ͵ð Ä«Æä)
    
 
     strconv-dekaf.h      
#include "strconv.h"
#define CONV_UTF8_MBCS(a) convUni2Mbcs(convUtf82Uni(a)).c_str()
#define CONV_MBCS_
UTF8(a) convUni2Utf8(convMbcs2Uni(a)).c_str()
 
»ç¿ë½Ã, (utf8*)CONV_MBCS_
UTF8(txt)·Î »ç¿ë
¿¹) history->
SetText((utf8*)CONV_MBCS_
UTF8("ÇѱÛÃâ·Â"));
 
 
Ãâó; 
http://www.gpgstudy.com/forum/viewtopic.php?topic=15388
WM_IME_COMPOSITION ¸Þ¼¼Áö 󸮽ÿ¡´Â return°ªÀ¸·Î true¸¦ Á༠imeÀÔ·Â ¸Þ¼¼Áö°¡ ´õÀÌ»ó ´Ù¸¥ °÷À¸·Î Àü´ÞµÇÁö ¾Ê°Ô ¸·´Â´Ù.
 
#pragma comment(lib, "imm32.lib")
#include <imm.h>
void processImeInput(LPARAM lParam, CEGUI:
:System *pC
EGUISystem)
{
// Ȱ¼ºÈµÈ CEGUIÀ©µµ¿ì°¡ EditboxŸÀÔÀÌ ¾Æ´Ï¶ó¸é IME ÀÔ·Âó¸® ¾ÈÇÕ
Window* myRoot = CEGUI:
:System::getSingleton().getG
UISheet();
CEGUI:
:Editbox *pEditWindow =(CEGUI:
:Editbox*)myRoot->getActiveChild();
if(pEditWindow == NULL)
return;
// IME ÇÚµé¾ò±â. ½ÇÆÐÇϸé IME ÀÔ·Âó¸® ¾ÈÇÔ
HIMC hImc = 
ImmGetContext(
GetWindowReference());
if(hImc == NULL)
return;
// º¯¼ö ¼³Á¤
int		   nLength = 0;
wchar_t	wszComp[4] = {0,};
// IME ¹®ÀÚ Á¶ÇÕÀÌ ¿Ï·áµÇ¾ú´Ù¸é
if(lParam == GCS_RESULTSTR)
{
nLength = 
ImmGetCompositionStringW(hImc, GCS_RESULTSTR, NULL, 0);
if(nLength > 0)
{
ImmGetCompositionStringW(hImc, GCS_RESULTSTR, wszComp, nLength);
 
 
for(int i = 0; i < nLength; i++)
{
if(wszComp[i] != 0)
pC
EGUISystem->injectChar(wszComp[i]);
 
}
// ¹®ÀÚ Á¶ÇÕÀÌ ¿Ï·áµÇ¾úÀ¸¸é Á¶ÇÕÁßÀÎ ¹®ÀÚ ¼±ÅÃÇØÁ¦
size_t caretIndex = pEditWindow->getCaratIndex();
pEditWindow->setSelection(caretIndex, caretIndex);
}
}
// IME ¹®ÀÚ Á¶ÇÕÁßÀ̶ó¸é
else
{
nLength = 
ImmGetCompositionStringW(hImc, GCS_COMPSTR, NULL, 0);
if(nLength > 0)
{
ImmGetCompositionStringW(hImc, GCS_COMPSTR, wszComp, nLength);
for(int i = 0; i < nLength; i++)
{
if(wszComp[i] != 0)
{
pC
EGUISystem->injectChar(wszComp[i]);
}
}
// ¿¡µðÆ® ÀÔ·ÂâÀ» À§ÇØ Á¶ÇÕÁßÀÎ ¹®ÀÚ°¡ ¼±Åõǵµ·Ï ÇÔ
size_t caretIndex = pEditWindow->getCaratIndex();
pEditWindow->setSelection(caretIndex - 1, caretIndex);
 
}
}
// IME ÇÚµé ÇØÁ¦
ImmReleaseContext(
GetWindowReference(), hImc);
 
}
 
¹®Á¦Á¡; ½ºÆäÀ̽º¹Ù¸¦ ´·¯Á༠Á¶ÇÕÀ» ³¡³»¸é ±×Á¦¼¾ß º¸ÀÌ´Â ¹®Á¦°¡ ÀÖÀ½
´ÙÀ½Àº WM_CHAR ¸Þ½Ã¿¡¼ ó¸®ÇÏ´Â ¹æ¹ýÀ¸·Î ÀÔ·ÂµÈ ±ÛÀÚ°¡ ³Ñ¾î¿ÔÀ» ¶§ 2¹ÙÀÌÆ® ¹®ÀÚÀÎÁö 1¹ÙÀÌÆ®¹®ÀÚÀÎÁö Ã¼Å©ÇØ¼
1¹ÙÀÌÆ® ¹®ÀÚ¶ó¸é ÀÔ·Â ¹Þ´Â Áï½Ã ³Ñ±â°í, 2¹ÙÀÌÆ® ¹®ÀÚ¶ó¸é ´©Àû½Ã۰í 2¹ÙÀÌÆ® ´©ÀûÀÌ ´ÙµÇ¸é UTF-8·Î ÄÁ¹öÆ® ÇØ¼ ³Ñ±ä´Ù.
#include < ctype.h >
inline int __cdecl isLeadByte(int _C) {return ((unsigned char)(_C) & 0x80); }
switch(pEventRecord->uiMsg)
{
case WM_CHAR:
{
static char 
MultiByte[2] = {0};
static bool isHaveMultiByte = false;
if(isHaveMultiByte)
{
isHaveMultiByte = false;
MultiByte[1] = (unsigned char)pEventRecord->wParam;
int iLengthUnicode = 0;
wchar_t szUnicode;
MultiByteToWideChar(CP_ACP, 0, (char*)
MultiByte, 2, &szUnicode, 1);
CEGUI:
:System::getSingleton().injectChar((CEGUI:
:utf32)szUnicode);
break;
}
else
{	
if( isLeadByte(pEventRecord->wParam) )
{
isHaveMultiByte = true;
MultiByte[0] = (unsigned char)pEventRecord->wParam;
return true;
}
else
{
CEGUI:
:System::getSingleton().injectChar((CEGUI:
:utf32)pEventRecord->wParam);
break;
}
}  
}
break;
}
 
 3 °ø°³ GUI ¶óÀ̺귯¸® ¸µÅ© ¸ðÀ½ #
GPG¿¡ pacman´ÔÀÌ 2004.04.13 Á¤¸®ÇØ Áֽг»¿ë ( 
http://www.gpgstudy.com/forum/viewtopic.php?topic=5016 )
|  À̸§  |  ¸µÅ©  |  ³»¿ë  | 
|  FLTK  |  http://www.fltk.org/index.php  |   ¸ÖƼ Ç÷§Æû/ UI Åø Á¦°ø, Æ÷·³/ Article, FAQ, Developer Document  | 
|  GTK+  |  http://www.gtk.org/  |  ¸ÖƼ Ç÷§Æû/ ¼ö¸¹Àº GNU ÀÀ¿ë ÇÁ·Î±×·¥¿¡ »ç¿ëµÊ/ ¸ÞÀϸµ ¸®½ºÆ®/ FAQ, Tutorial, API Reference  | 
|  wxWidgets  |  http://www.wxwidgets.org/  |  ¸ÖƼ Ç÷§Æû/ ¸ÞÀϸµ ¸®½ºÆ®, °Ô½ÃÆÇ, À§Å° µî/ FAQ, Book, Reference, Presentations, Tutorials, Courses, Sample Code  | 
|  NGL  |  http://home.gna.org/ngl/about.html  |  ¸ÖƼ Ç÷§Æû/ OpenGL ÀÀ¿ë ÇÁ·Î±×·¥À» À§ÇÑ C++ GUI ÇÁ·¹ÀÓ¿÷/ UI Åø(RADtool) Á¦°ø/ XML, Å׸¶ ±â´É Á¦°ø/ Æ÷·³ ¹ÌÈí/ Reference Manual, FAQ  | 
|  XML User Interface Language (XUL)  |  http://www.mozilla.org/projects/xul/  |  ¸ÖƼ Ç÷§Æû/ Mozilla Project¿¡ »ç¿ë/ XUL Planet (www.xulplanet.com - Tutorial, Developer Guide, References, Forum)/ Specification, Tutorial, Reference Manual  | 
|  Crazy Eddie's GUI System  |  http://www.cegui.org.uk/modules/news/  |  Ƽ Ç÷§Æû/ Åø Á¦°ø/ Æ÷·³, ¸ÞÀϸµ ¸®½ºÆ®, À§Å°/ API Reference, Tutorials, FAQ  | 
|  Para GUI  |  http://www.bms-aust...ts/paragui/index.php  |  ¸ÖƼ Ç÷§Æû/ SDL (Simple DirectMedia Layer) ±â¹Ý/ Æ÷·³, ¸ÞÀϸµ ¸®½ºÆ®/ FAQ, API Reference, Source Code Documentation  | 
|  gameswf  |  http://www.tulrich....ekstuff/gameswf.html  |  Ç÷¡½¬ swfÆÄÀÏÀ» °ÔÀÓ »ó¿¡¼ º¸¿©ÁÖ´Â GUI ¶óÀ̺귯¸®/ ¸ÞÀϸµ ¸®½ºÆ®/ ¹®¼È(FAQ) ¹ÌÈí  | 
|  3DControls  |  http://3dcontrols.free.fr/  |  3Â÷¿ø °ø°£»ó¿¡¼ ÀÔüÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ º¸¿©ÁÜ/ µ¥¸ð ÇÁ·Î±×·¥ ³»Àå/ Æ÷·³(ºÒ¾î, ¿µ¾î)  |