• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            剛剛搞CEGUI的時候大體看了一下CEGUI。原以為其不支持中文。
            而且網(wǎng)上很多人都說不支持。。我也就沒有細(xì)細(xì)看了。
            當(dāng)用到Editbox的時候。又不得不用中文。?這時候問題就來了。
            先是用utf8方式轉(zhuǎn)換達(dá)到中文顯示的目的。可是中文輸入?yún)s不行。網(wǎng)上有一種說法是將兩個字節(jié)鏈接起來即可。看了一下編譯器設(shè)置,當(dāng)前使用的是多字節(jié)模式。就不得不這樣做了。不過估計我對C++還不算深。搞了一會,還是失敗了。不過后來在網(wǎng)上有一個朋友說CEGUI本來就支持中文的。但又看到其它人說的,不解其言啊。再后來有一個叫老妖精的網(wǎng)友給了我一份代碼。結(jié)果真的成功了。可顯示可輸入中文。對于中文的字表由一個font文件創(chuàng)建。方法如下:
            1:找一個中文字體文件(.ttf)
            2:創(chuàng)建一個文本文件,將其存為.font文件.
            3:在.font文件里寫如下代碼(我個假設(shè)一個chinese.ttf文件):
            <?xml version="1.0" ?>
            <Font Name="chinese" Filename="chinese.TTF" Type="FreeType" Size="10" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="true"/>
            // 說明:Name就是在程序中要用到的名字, Filename就是文件名,FreeType可以是自定義的,具體到官方網(wǎng)有說明.Size就是字體的大小.程序中是不能調(diào)大小的.因為字體生成紋理后就是固定的.
            4:在你寫的程序的鍵盤和事件上處理上面正常情況下是這樣子的:CEGUI::System->injectChar((CEGUI::utf32)Key); // Key值就是你程序捉到的按鍵值,我們需要將其改為:

            ????if (ImmIsIME(GetKeyboardLayout(0)))
            ????{
            ?????CEGUI::DbcsSupport::injectChar(Key);
            ????}
            ????else
            ????{
            ?????CEGUI::System->injectChar((CEGUI::utf32)Key);
            ????}

            ??? ImmIsIME(GetKeyboardLayout(0))目的是用于檢則現(xiàn)在的輸入法是否打開的。如果是在輸英文狀態(tài)我想你不會畫蛇添足的。使用這個需要imm32.lib的支持。MSDN上面也有說明。
            5:最后就是添加一份代碼到你的CEGUI使用項目里,如下:
            namespace CEGUI{
            bool DbcsSupport::injectChar(utf32 code_point )
            ?{
            #ifndef UNICODE
            ??static char???? s_tempChar[3]? = "";
            ??static wchar_t? s_tempWchar[2] = L"";
            ??static bool s_flag = false;
            ??unsigned char? uch? = (unsigned char)code_point;
            ??if( uch?>= 0xA1 )
            ??{
            ???if( !s_flag )
            ???{
            ????s_tempChar[0] = (char)uch; //第一個字節(jié)
            ????s_flag = true;
            ????return true;
            ???}
            ???else if( uch?>= 0xA1?)
            ???{
            ????s_tempChar[1] = (char)uch; //第二個字節(jié)
            ????s_flag = false;
            ????MultiByteToWideChar( 0, 0, s_tempChar, 2, s_tempWchar, 1); //轉(zhuǎn)成寬字節(jié)
            ????s_tempWchar[1] = L'\0';
            ????utf32 code = (utf32)s_tempWchar[0];
            ????//Font* fnt = System::getSingleton().getDefaultFont();
            ????return CEGUI::System::getSingleton().injectChar( code );
            ???}
            ???else
            ???{
            ????return CEGUI::System::getSingleton().injectChar(code_point);
            ???}
            ??}
            ??else
            ??{
            ???s_flag = false;
            ???return CEGUI::System::getSingleton().injectChar(code_point);
            ??}
            #else
            ??return CEGUI::System::getSingleton().injectChar(code_point );
            #endif
            ?}
            }

            Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1509217

            posted on 2007-02-28 10:25 清源游民 閱讀(4126) 評論(8)  編輯 收藏 引用 所屬分類: OGRE

            FeedBack:
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-03-02 16:53 | pathbreaker
            如果是這樣,那又何必改CEGUI的代碼呢。  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-07-04 16:19 | 包子
            那請問
            Font::xmlHandler::startElement - The unknown Font:Type attribute value 'FreeType' was encountered while processing the Font file.
            是什么原因么/  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-07-28 17:25 | 李錦俊
            @包子

            又見包子。。。
            哈哈
            你這個問題,估計是用了0.4版的cegui吧?或者沒有開啟FreeType系統(tǒng)  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-10-26 15:48 | showlong
            又不是轉(zhuǎn)載我的... - -#  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-10-26 15:49 | showlong
            又是轉(zhuǎn)載我的,轉(zhuǎn)載可否注明出處... - -#  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-10-26 16:16 | i清源游民
            @showlong
            因為不是從你的blog里直接轉(zhuǎn)的,當(dāng)初看到這篇文章時不知出處,所以只能說報歉。不過可以肯定的是,如果以后轉(zhuǎn)文章時,肯定會先看看是不是你寫的,如果是,那絕不會轉(zhuǎn)過來。建議你在文章前加上版權(quán)聲明,那樣效果好些。  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2007-10-26 21:30 | Minidx全文檢索
            ……  回復(fù)  更多評論
              
            # re: (轉(zhuǎn))CEGUI 中文輸入
            2009-07-27 10:27 | 游客
            糾正你一個錯誤,程序中是可以更改字體的大小  回復(fù)  更多評論
              
            <2007年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            中文精品久久久久人妻不卡| 91精品国产综合久久香蕉 | 久久精品亚洲福利| 午夜精品久久影院蜜桃| 狠狠色综合网站久久久久久久高清| 久久亚洲春色中文字幕久久久| 久久青青草原国产精品免费| 狠狠色伊人久久精品综合网| 狠狠色丁香久久婷婷综合蜜芽五月| 久久婷婷成人综合色综合| 久久国产精品免费一区| 久久丫精品国产亚洲av不卡| 欧美久久亚洲精品| 97超级碰碰碰碰久久久久| 成人久久免费网站| 日韩久久无码免费毛片软件| avtt天堂网久久精品| 无码人妻久久一区二区三区蜜桃| 国产一久久香蕉国产线看观看| 国产毛片欧美毛片久久久| 久久综合久久伊人| 久久国产三级无码一区二区| 国产成人精品久久一区二区三区| 精产国品久久一二三产区区别 | 久久精品国产亚洲麻豆| 伊人久久大香线蕉成人| 久久精品亚洲男人的天堂| 国产精品久久久久久福利69堂| 久久精品人妻中文系列| 一级做a爰片久久毛片看看 | 精品久久久久久国产| 亚洲精品乱码久久久久久蜜桃| 精品久久香蕉国产线看观看亚洲| 色88久久久久高潮综合影院 | 久久亚洲精品成人av无码网站 | 久久精品男人影院| 99久久久精品| 国产精品99久久久久久宅男 | 99久久精品国产高清一区二区| 国内精品久久久久影院日本| 精品少妇人妻av无码久久|