青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

08年05月05日

Posted on 2008-05-05 15:31 RichardHe 閱讀(1902) 評(píng)論(5)  編輯 收藏 引用
CEGUI的中文輸入:
目前為止為我解決的也是參考別人的方法改的代碼,不知道哪位兄臺(tái)有更好的解決方案?
源碼如下:
filename:   Win32AppHelper.h
在后面加一個(gè)
private:
    static bool d_mouseInWindow;
    static bool d_backSpace;//添加的成員變量
filename:   Win32AppHelper.cpp
bool Win32AppHelper::d_backSpace             = false;

/*************************************************************************
    Win32 'Window Procedure' function
************************************************************************
*/

LRESULT CALLBACK Win32AppHelper::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    
switch(message)
    {
    case WM_CHAR:
       {
            
if (ImmIsIME(GetKeyboardLayout(0)))
            {
                CEGUI::injectChar((CEGUI::utf32)wParam);                       
//方法在下面的全局函數(shù)
            }
            
else
            {
                CEGUI::System::getSingleton().injectChar((CEGUI::utf32)wParam);
            }
        }
        
break;

    
case    WM_IME_ENDCOMPOSITION:
        d_backSpace 
= true;
        
break;

    
case    WM_IME_STARTCOMPOSITION:
        d_backSpace 
= false;
        
break;

    
case WM_MOUSELEAVE:
        mouseLeaves();
        
break;

    
case WM_NCMOUSEMOVE:
        mouseLeaves();
        
break;

    
case WM_MOUSEMOVE:
        mouseEnters();

        CEGUI::System::getSingleton().injectMousePosition((
float)(LOWORD(lParam)), (float)(HIWORD(lParam)));
        
break;

    
case WM_LBUTTONDOWN:
        CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::LeftButton);
        
break;

    
case WM_LBUTTONUP:
        CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::LeftButton);
        
break;

    
case WM_RBUTTONDOWN:
        CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::RightButton);
        
break;

    
case WM_RBUTTONUP:
        CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::RightButton);
        
break;

    
case WM_MBUTTONDOWN:
        CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::MiddleButton);
        
break;

    
case WM_MBUTTONUP:
        CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::MiddleButton);
        
break;

    
case 0x020A// WM_MOUSEWHEEL:
        CEGUI::System::getSingleton().injectMouseWheelChange(static_cast<float>((short)HIWORD(wParam)) / static_cast<float>(120));
        
break;

    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;

    
case WM_SIZE:
        
// TODO: Notify about new size
        break;

    
case WM_PAINT:
        {
            HDC         hDC;
            PAINTSTRUCT ps;

            hDC 
= BeginPaint(hWnd, &ps);
            EndPaint(hWnd, 
&ps);
            
break;
        }

    
default:
        
return(DefWindowProc(hWnd, message, wParam, lParam));
        
break;
    }

    
return 0;
}
namespace CEGUI{
    bool 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; //第一個(gè)字節(jié)
                s_flag = true;
                return true;
            }
            else if( uch >= 0xA1 )
            {
                s_tempChar[1] = (char)uch; //第二個(gè)字節(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
    }
}


至于退格鍵的解決方法如下,開(kāi)始一直是在輸入法狀態(tài)下,如果按退格,不但刪除字母,同時(shí)也刪除了開(kāi)始打好的了字.

 1 void Win32AppHelper::doDirectInputEvents(const Win32AppHelper::DirectInputState& dis)
 2 {
 3     // handle direct input based inputs
 4     DIDEVICEOBJECTDATA devDat;
 5     DWORD itemCount = 1;
 6 
 7     HRESULT res = dis.keyboardDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), &devDat, &itemCount, 0);
 8 
 9     if (SUCCEEDED(res))
10     {
11         if (itemCount > 0)
12         {
13             if (LOBYTE(devDat.dwData) & 0x80)
14             {
15                 // force quit on ESCAPE key
16                 if (devDat.dwOfs == CEGUI::Key::Escape)
17                 {
18                     PostQuitMessage(0);
19                 }
20                 else
21                 {
22                     if(!ImmIsIME( GetKeyboardLayout(0))) //輸入法沒(méi)關(guān)閉的時(shí)候才識(shí)別鍵盤(pán)事件可以防止backspace的bug
23                     {    
24                         CEGUI::System::getSingleton().injectKeyDown(devDat.dwOfs);
25                     }    
26                     if (d_backSpace)                     //解決退格時(shí)要到英文狀態(tài)下才可以刪除的問(wèn)題.
27                     {
28                         CEGUI::System::getSingleton().injectKeyDown(devDat.dwOfs);
29                     }
30                 }
31 
32             }
33             else
34             {
35                 CEGUI::System::getSingleton().injectKeyUp(devDat.dwOfs);
36             }
37 
38         }
39     }
40     else
41     {
42         // try to re-acquire device if that was the cause of the error.
43         if ((res == DIERR_NOTACQUIRED) || (res == DIERR_INPUTLOST))
44         {
45             dis.keyboardDevice->Acquire();
46         }
47 
48     }
49 
50 }

上面的winpro方法里面我添加了兩個(gè)消息處理.
WM_IME_ENDCOMPOSITION  
WM_IME_STARTCOMPOSITION
具體說(shuō)明請(qǐng)查找MSDN!
中文顯示問(wèn)題請(qǐng)看前面一天的隨筆!

Feedback

# re: 08年05月05日  回復(fù)  更多評(píng)論   

2008-05-06 10:29 by cl
剛開(kāi)始學(xué)的CEGUI,看了你的講解,還是不太明白,在Win32AppHelper.h和Win32AppHelper.cpp改了沒(méi)有用,你是在Sample_FontDemo例子里改的吧.
能發(fā)下你實(shí)現(xiàn)的具體例子代碼嗎???萬(wàn)分的感謝了!!!
mail:chen375877324@163.com

# re: 08年05月05日  回復(fù)  更多評(píng)論   

2008-05-06 11:06 by RichardHe
@cl
上面已經(jīng)是全部代碼了.
Sample里面不用改東西的啊!
不知道你的程序沒(méi)有依賴(lài)Win32AppHelper.h生成的庫(kù)呢?
有什么不明白的地方加我MSN:richardhe@live.cn

# re: 08年05月05日  回復(fù)  更多評(píng)論   

2008-05-06 12:18 by cl
哦 可能是我中文顯示沒(méi)做出來(lái) 看不到結(jié)果 請(qǐng)問(wèn)下在例子頭CEGUI系統(tǒng)如何把字體轉(zhuǎn)換成UTF8*具體代碼是怎么做的? 例如Sample里想把加載simhei.font
字體轉(zhuǎn)換成UTF8*
如:CEGUISystem->setDefaultFont((CEGUI::utf8*)"simhei")
這里代碼具體雜樣,網(wǎng)上找的代碼不全,用CEGUISystem不太明白,請(qǐng)問(wèn)能發(fā)下
轉(zhuǎn)換成UTF8*的代碼嗎? 還有你說(shuō)的把文件格式改成UTF-8格式,發(fā)現(xiàn)沒(méi)有多大的作用,還是需要在代碼里轉(zhuǎn)換啊!!

# re: 08年05月05日  回復(fù)  更多評(píng)論   

2008-05-06 14:18 by RichardHe
@cl
不用..新版本已經(jīng)支持UTF8了.所以你用文本編輯器如:EMEDITOR或是
ULTRAEDIT另存的時(shí)候選擇一下格式為UTF-8就可以了.
我的VanillaConsole.layout
修改如下:
<Window Type="Vanilla/Button" Name="Vanilla/Console/Submit">
<Property Name="ID" Value="1" />
<Property Name="VerticalAlignment" Value="Bottom" />
<Property Name="HorizontalAlignment" Value="Right" />
<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
<Property Name="UnifiedPosition" Value="{{0,-7},{0,-7}}" />
<Property Name="UnifiedSize" Value="{{0.25,0},{0,30}}" />
<Property Name="Text" Value="提交" />
</Window>
上面的"提交"為中文顯示在程序上 .

# re: 08年05月05日  回復(fù)  更多評(píng)論   

2008-10-15 14:45 by lost
呵呵 十分感謝

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


posts - 94, comments - 138, trackbacks - 0, articles - 94

Copyright © RichardHe

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            快she精品国产999| 亚洲国产精品久久久| 亚洲网站在线| 亚洲第一中文字幕在线观看| 欧美99久久| 国产精品久久久久久久久搜平片 | 麻豆精品视频在线| 久久久精品性| 亚洲国产黄色| 欧美中文字幕视频| 欧美一区二区三区视频免费| 久久偷窥视频| 久久久久国产精品午夜一区| 久久亚洲不卡| 久久亚洲一区二区| 国产视频久久久久久久| 欧美国产综合视频| 亚洲国产精彩中文乱码av在线播放| 亚洲一区二区三区中文字幕| 欧美韩日一区二区三区| 亚洲欧美另类综合偷拍| 久久久免费精品视频| 午夜在线a亚洲v天堂网2018| 欧美精品日韩精品| 久久精品日产第一区二区| 国产精品三上| 亚洲一区二区不卡免费| 欧美一区=区| 欧美刺激午夜性久久久久久久| 亚洲婷婷综合久久一本伊一区| 中文欧美日韩| 宅男精品导航| 麻豆9191精品国产| 欧美在线中文字幕| 欧美片在线播放| 亚洲精品国产视频| 国产亚洲欧美日韩美女| 亚洲人成7777| 亚洲自啪免费| 欧美激情精品久久久久久大尺度| 亚洲破处大片| 欧美看片网站| 欧美黄色网络| 一二三四社区欧美黄| 欧美性jizz18性欧美| 午夜激情综合网| 亚洲视频一区在线观看| 国产精品免费视频xxxx| 亚洲精选在线观看| 午夜免费在线观看精品视频| 国产精品久久久久久久久免费樱桃| 午夜视频在线观看一区二区| 欧美久久久久久久久久| 欧美激情导航| 136国产福利精品导航网址| 麻豆av福利av久久av| 日韩午夜av在线| 亚洲精品乱码久久久久久日本蜜臀 | 久久免费视频网| 国产精品免费网站在线观看| 亚洲免费大片| 久久爱www.| 亚洲久久一区二区| 国产精品视频一区二区高潮| 一区二区电影免费观看| 久久aⅴ乱码一区二区三区| 国产精品视区| 宅男噜噜噜66一区二区| 久久久亚洲欧洲日产国码αv| 国产精品久久久久久久午夜片| 亚洲国产成人不卡| 亚洲欧洲日韩综合二区| 欧美.com| 欧美亚洲综合在线| 亚洲国产成人av好男人在线观看| 在线观看欧美| 免费不卡在线观看| 中文国产亚洲喷潮| 亚洲国产高潮在线观看| 一区二区三区高清在线观看| 国产日韩一区欧美| 久久久99久久精品女同性| 亚洲狼人综合| 欧美成人第一页| 日韩小视频在线观看专区| 欧美日韩视频在线一区二区| 制服诱惑一区二区| 亚洲欧洲精品一区二区三区 | 欧美国产日韩亚洲一区| 午夜精品久久久久久99热| 亚洲国产精品成人va在线观看| 亚洲性视频h| 久久精品夜色噜噜亚洲a∨| 亚洲直播在线一区| 国产婷婷97碰碰久久人人蜜臀| 午夜精品久久久久久久蜜桃app| 亚洲精品美女在线| 国产亚洲欧美激情| 国产深夜精品| 国产精品免费电影| 六月丁香综合| 久久久天天操| 欧美一区二区三区视频在线| 亚洲一区二区三区精品动漫| 一本到12不卡视频在线dvd| 亚洲国产欧美在线人成| 欧美国产激情二区三区| 女女同性女同一区二区三区91| 日韩一区二区精品葵司在线| 国产精品日本精品| 欧美日韩精品欧美日韩精品一| 亚洲在线中文字幕| 亚洲一区二区三区午夜| 欧美福利小视频| 欧美成人自拍| 亚洲欧洲日本在线| 久久精品久久99精品久久| 欧美一级在线亚洲天堂| 亚洲精品国产系列| 国产欧美视频一区二区| 欧美国产在线视频| 久久精品日韩| 久久精品一区二区三区四区| 亚洲天堂av电影| 亚洲免费在线视频| 999在线观看精品免费不卡网站| 中文一区二区| 亚洲一级黄色片| 欧美一区二区性| 久久网站热最新地址| 亚洲第一区在线| 欧美刺激性大交免费视频| 欧美在线国产精品| 在线亚洲欧美| 久久av资源网站| 午夜亚洲性色福利视频| 亚洲精品免费一二三区| 黄色成人在线网址| 最新亚洲视频| 亚洲国产日韩欧美一区二区三区| 欧美肥婆在线| 免费在线观看成人av| 久久九九电影| 久久精品国产v日韩v亚洲| 免费h精品视频在线播放| 欧美激情一区二区三区不卡| 久久综合久久综合这里只有精品| 香蕉久久夜色精品国产| 亚洲一区二区三区成人在线视频精品| 欧美大片免费看| 欧美国产国产综合| 亚洲一级黄色片| 亚洲小视频在线| 亚洲永久免费观看| 欧美jizz19性欧美| 国产网站欧美日韩免费精品在线观看| 久久国产福利国产秒拍| 欧美精品国产精品日韩精品| 国产欧美一区二区精品秋霞影院 | 久久综合九色综合欧美就去吻| 亚洲欧美美女| 免费欧美网站| 欧美日韩视频在线第一区| 欧美日韩国产一级| 国产精品久久久久免费a∨| 在线不卡免费欧美| 午夜一区二区三区在线观看| 亚洲国产精品美女| 久久精品在线观看| 国产精品视频yy9299一区| 9国产精品视频| 亚洲专区欧美专区| 久久久www成人免费精品| 在线综合视频| 欧美一区二区三区在| 久久九九热re6这里有精品| 国产精品爱啪在线线免费观看| 免费在线看一区| 国产精品xxxxx| 亚洲精品国偷自产在线99热| 亚洲欧美精品suv| 99在线热播精品免费99热| 亚洲欧美国产高清| 欧美午夜剧场| 亚洲一二三四区| 亚洲美女色禁图| 欧美精品18+| 国产乱肥老妇国产一区二| 在线成人h网| 蜜臀久久99精品久久久画质超高清| 亚洲国产免费| 欧美**人妖| 亚洲美女毛片| 亚洲精品欧洲| 欧美日韩在线播放三区四区| 99精品国产热久久91蜜凸| 亚洲精品九九| 久久久精品网| 国产精品v欧美精品v日韩| 亚洲欧美日韩成人高清在线一区|