Liny_@NotePad

沉迷ACG中

CEGUI主键盘上的回车原来是Return。。Orz

英语果然差劲Orz。。。

早上找Key,只看到NumpadEnter,找不到Enter,无意间发现Apostrophe上的tip是:Enter on main keyboard……

大喜,始终测不出来。。。后来百度之。。原来是RETURN。。

而Apostrophe乃是撇号的意思 OrzOrzOrz 不过我测了下,仿佛是按下回车旁边那个键(")按下再弹起的瞬间。。

为啥米回车会是Return???GOOGLE之。。找到《细查回车和换行》一文,节选如下:

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

话说回车的英文名是carriage return,怪不得\r会回到行首 = = 原来它就是回车,中文名字太奥义了。

Wiki百科说:回車鍵第一次由1960年在Smith Corona公司的印表機出現。當時,此鍵一般被標「Return」。為了幫助不說英語的用戶學習打字,之後出版的打字機經常被標「」符號。

~~~~~~~~~~~~TAT 可我见过的所有键盘都标的是Enter~~~~~

CEGUI setText无法显示中文。。

项目设好了中文字体,加上中文输入,输入的字符显示出来是正常的,但是直接在程序里面setText中文却显示乱码……

查了一下是字符编码的关系……CEGUI是UTF-8格式的。。必须进行转换。。我的项目使用多字节,下面是转换函数:

  1. CEGUI::String CharArrayToString(const char* pszText)
  2. {
  3.         //      ASCII -> Unicode
  4.         int nLen = strlen(pszText);
  5.         std::wstring unicode(nLen, 0);
  6.         unicode.resize(
  7.                 MultiByteToWideChar(CP_ACP, 0, pszText, static_cast<int>(nLen),
  8.                 const_cast<wchar_t*>(unicode.data()), unicode.size())
  9.         );
  10.  
  11.         //      Unicode -> UTF-8
  12.         char buff[128] = "";
  13.         WideCharToMultiByte(CP_UTF8, 0, unicode.data(), static_cast<int>(unicode.size()),
  14.                 buff, sizeof(buff), NULL, NULL);
  15.  
  16.         return CEGUI::String((CEGUI::utf8*)(buff));
  17. }

附上几个链接:

Hello, CEGUI!

花了一天时间 终于搞懂一些些~贴图纪念:

支持中文输入,然后做了几个选择 = = Talk对象不同的话 聊天记录和名字\头像都会改变(废话 = ◇ =||),下面可以输入自己的名字 XD那个格子是表情。

有空可以做个网络版 就可以聊天啦 > <