MoniWikiµüÁö_CEGUI
Login:
Password:
´ë¹®|ã±â|¹Ù²ï±Û|¸ñ·Ï|¸Þ¸ðÀå|Ã¥°¥ÇÇ|¿¬²É|¸µÅ©
Edit Diff Reload Search Print Info Mail Help RSS

@ 2008-03-29
  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 CEGUI-SDK-0.5.0b(±âÁØÀ¸·Î Á¤¸®) #

Âü°í »çÀÌÆ®
http://www.cegui.org.uk/wiki/index.php/Main_Page - 2008.03.27 CEGUI-SDK-0.6.0-vc8
http://acasia.tistory.com/166
http://cafe.naver.com/ogre3d.cafe - OGRE 3D °ü·Ã Ä«Æä·Î °Ô½Ã¹° Áß¿¡ CEGUI¿¡ °üÇÑ Á¤¸® ÀÖÀ½

        CEGUI-SDK-0.5.0b-vc8.exe/     CEImagesetEditor.zip (¹öÀü ?)
        CELayoutEditorSetup_0.5.0c.exe/     CELayoutEditorSetup-0.5.0b.exe/

2.1 ÆÄÀÏ ±¸Á¶ #

'CEGUI-SDK-0.5.0b-vc8\datafiles\'Æúµå¿¡ ÀúÀåµÈ ´Ù¾çÇÑ ÆÄÀÏÀ» ·ÎµùÇؼ­ »ç¿ëÇϸç
±âº»ÀûÀÎ ±¸Á¶·Î schemes, looknfeel, imagesets, layouts·Î ±¸¼ºµÈ´Ù.

2.1.1 schemes #
<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

2.1.2 looknfeel #
Falagard ½ºÅ²À» ±¸¼ºÇÏ´Â ºÎºÐÀ¸·Î ±âº»ÀûÀÎ ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.
<xml version="1.0" ?>
<Falagard>
<WidgetLook name="WindowsLook/Button">
<PropertyDefinition name="NormalTextColour" initialValue="FF000000" redrawOnWrite="true" /> // ¼Ó¼ºÀ» Á¤ÀÇ
</ WidgetLook>
</ Falagard>

2.1.3 imagesets #
À̹ÌÁö¼ÂÀº À̹ÌÁö/ÅؽºÃ³ »óÀÇ Á¤ÀÇµÈ ¿µ¿ªÀÇ ÁýÇÕÀ¸·Î 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·Î »ç¿ëÇÑ´Ù.

2.1.4 layouts #
CELayoutEditor¸¦ »ç¿ëÇؼ­ ·¹À̾ƿôÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
<xml version="1.0" ?>
<GUILayout>
<Window Type="Vanilla/Button" Name="Vanilla/Console/Submit">
<Property Name="ID" Value="1" />
</Window>
...
</GUILayout>

2.2 ÇÑ±Û ¼³Á¤ #

2.2.1 ÇÑ±Û Ãâ·Â #
Ãâó; 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("ÇѱÛÃâ·Â"));

2.2.2 ÇÑ±Û ÀÔ·Â1 #
Ãâó; 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 *pCEGUISystem)
{
// È°¼ºÈ­µÈ CEGUIÀ©µµ¿ì°¡ EditboxŸÀÔÀÌ ¾Æ´Ï¶ó¸é IME ÀÔ·Âó¸® ¾ÈÇÕ
Window* myRoot = CEGUI::System::getSingleton().getGUISheet();
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)
pCEGUISystem->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)
{
pCEGUISystem->injectChar(wszComp[i]);
}
}

// ¿¡µðÆ® ÀÔ·ÂâÀ» À§ÇØ Á¶ÇÕÁßÀÎ ¹®ÀÚ°¡ ¼±Åõǵµ·Ï ÇÔ
size_t caretIndex = pEditWindow->getCaratIndex();
pEditWindow->setSelection(caretIndex - 1, caretIndex);
}
}

// IME ÇÚµé ÇØÁ¦
ImmReleaseContext(GetWindowReference(), hImc);
}

2.2.3 Âü°í - ÇÑ±Û ÀÔ·Â2 #
Ãâó; http://blog.naver.com/dekaf?Redirect=Log&logNo=40041234507

¹®Á¦Á¡; ½ºÆäÀ̽º¹Ù¸¦ ´­·¯Á༭ Á¶ÇÕÀ» ³¡³»¸é ±×Á¦¼­¾ß º¸ÀÌ´Â ¹®Á¦°¡ ÀÖÀ½

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

December, 2024
1234567
891011121314
15161718192021
22232425262728
293031 

ÁöÇý´Â °®°í ´Ù´Ï±â¿£ ½±Áö¸¸ ¾ò±â¿£ Èûµç °ÍÀÌ´Ù.

Programe's Guides
°üÀ½Àå
Ã¥°¥ÇÇ_The_Pragmatic_Programmer
¸Þ¸ðÀå_DXTn
last modified 2008-04-28 06:02:51
°íÄ¡±â|ã±â|ÂÊ Áö¿ì±â|ºñ½ÁÇÑ ÂÊ Valid XHTML 1.0! Valid CSS! powerd by MoniWiki
0.2310 sec