µüÁö_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Â÷¿ø °ø°£»ó¿¡¼ ÀÔüÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ º¸¿©ÁÜ/ µ¥¸ð ÇÁ·Î±×·¥ ³»Àå/ Æ÷·³(ºÒ¾î, ¿µ¾î) |