支持中文
来自http://www.cppprog.com/2009/1111/176_5.html
Scintilla默认用的是ANSI编码,所以编辑中文之类的多字节编码时,会出错半个字符的问题。我们可以使用SCI_SETCODEPAGE命令设置使用的编码。
为了支持多语言,建议使用UTF8编码:
-
-
SendEditor(SCI_SETCODEPAGE,SC_CP_UTF8);
这样,我们就得用UTF8编码输入输出了。关于UTF8编码的转换,不在本文讨论范围之内,大家自由发挥吧^_^
与C++Builder更好地集成
好了,Scintilla的使用就讲到这里,同学们下课![班长:“起立!”;童鞋们(包括睡觉中的):“老...师...再...见...”;老师:“啊!对了,用C++Builder的同学请多留一会儿,哎~~小白,说你呢,别跑~~”]。
如果大家和我一样一直在用C++Builder照上面玩Scintilla的话,一定早就发现了这个Scintilla控件不接受TAB键-_-。咳...如果你坚持看到了这里,恭喜你,你马上就可以看到解决这个问题的“终级代码”啦:-P
VCL组件库的消息循环位于TApplication类里,要让我们的Scintilla完美地嫁接到VCL里,一个好办法就是把Scintilla也包装成一个VCL组件。
VCL组件的继承线路很清晰,要包装Scintilla,只要写一个TWinControl的超类就可以了:
-
class TScEdit : public TWinControl{
-
protected:
-
virtual void __fastcall CreateParams(Controls::TCreateParams &Params)
-
{
-
TWinControl::CreateParams(Params);
-
CreateSubClass(Params, "Scintilla");
-
}
-
virtual void __fastcall WndProc(Messages::TMessage &Message)
-
{
-
TWinControl::WndProc(Message);
-
if(Message.Msg == WM_GETDLGCODE)
-
Message.Result = DLGC_WANTALLKEYS|DLGC_WANTARROWS|DLGC_WANTTAB;
-
}
-
public:
-
__fastcall TScEdit(Classes::TComponent* AOwner)
-
:TWinControl(AOwner){;}
-
-
sptr_t SendEditor(unsigned int iMessage, uptr_t wParam = 0, sptr_t lParam = 0)
-
{
-
return SendMessage(Handle, iMessage, wParam, lParam);
-
}
-
};
现在,我们可以用这个TScEdit代替之前的用CreateWindow建立的Scintilla了:
-
class TForm1 : public TForm
-
{
-
...
-
TScEdit *m_se;
-
sptr_t SendEditor(unsigned int iMessage, uptr_t wParam = 0, sptr_t lParam = 0)
-
{
-
return m_se->SendEditor(iMessage, wParam, lParam);
-
}
-
};
-
__fastcall TForm1::TForm1(TComponent* Owner)
-
: TForm(Owner)
-
{
-
-
HWND hwndEditor = ::CreateWindow(_T("Scintilla"),
-
NULL, WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE,
-
0,0,ClientWidth,ClientHeight,
-
Handle,
-
(HMENU)SCINT_ID, HInstance, NULL);
-
m_fnDirect = (SciFnDirect)SendMessage(hwndEditor,SCI_GETDIRECTFUNCTION,0,0);
-
m_ptrDirect = (sptr_t)SendMessage(hwndEditor,SCI_GETDIRECTPOINTER,0,0);
-
-
setCppStyle();
-
setFold();
-
*/
-
-
m_se = new TScEdit(this);
-
m_se->Parent = this;
-
m_se->Align = alClient;
-
setCppStyle();
-
setFold();
-
}
分享到:
相关推荐
"可支持中文"的QR二维码是指在生成二维码时,能够包含汉字字符,这对于中国市场尤其重要,因为中文是主要的沟通语言。传统上,QR码标准可能不直接支持中文,但通过特定的编码方式,如UTF-8,可以将中文字符转换为...
直接复制粘贴代码就行,简单便捷实用,生成二维码,可支持中文!
然而,有时用户会遇到语音播报不支持中文的问题,这可能会限制产品的使用体验。本文将针对这一问题,深入探讨解决方案,并以科大讯飞语音引擎3.0为例进行说明。 首先,语音播报不支持中文的原因可能有多种。可能是...
二维码标准支持多种字符集,包括ASCII、ISO-8859-1以及JIS等,但这些可能不直接支持中文。为了解决这个问题,开发者需要使用能够支持UTF-8编码的二维码生成库,ThoughtWorks.QRCode可能已经考虑到了这一点,确保在...
在原版基础上,经过特定的修改,FastColoredTextBox现已能够完美地支持中文显示和选择,极大地提升了对中文文本处理的能力,为开发人员在处理中文代码或文本时提供了极大的便利。 一、FastColoredTextBox的核心特性...
QRCode二维码范例,支持中文,是二维码技术在信息技术领域中的一个典型应用。二维码,全称为Quick Response Code,快速响应码,是一种二维条形码,能够存储大量的信息,包括文字、数字、网址、图片等,并且可以快速...
4. **API或驱动兼容性**:如果你通过编程语言与SQLite交互,确保所使用的API或驱动(如Python的sqlite3模块、Java的JDBC驱动等)也支持中文字符。 5. **查询优化**:虽然LIKE操作符方便,但其性能可能不如全文搜索...
C语言字符串替换函数strrpl支持中文汉字,解决含中文汉字,可能替换错误的情况。支持GBK、GB18030字符串。
"改写下jquery.searchableSelect.js 支持汉字模糊查询"这个主题,就是关于如何优化一个JavaScript插件,使其能更好地适应中文环境,提升用户在下拉框中搜索汉字的效率。 `jquery.searchableSelect.js`是一个jQuery...
2. `mkisofs_据说支持中文显示_2006版.rar`:这个版本同样声称支持中文显示,可能是针对2006年的一个更新或优化,特别强调了中文支持。 3. `说明.txt`:这个文件很可能包含了使用这两个版本的 `mkisofs.exe` 的详细...
在版本5.1.0中,它引入了对中文字符的支持,解决了之前版本中不支持中文的问题,这对于需要处理中文内容的开发者来说是一个重大改进。这个更新对于在中国、台湾、香港以及其他使用中文语言的地区的企业和开发者尤其...
Consolas字体,支持中文哦 Consolas是一个显示代码特别好看的字体,但是苦于不能支持中文。我找了好久,终于找到了。这个支持中文。 想要免费下载,可以在我文章博客下面留言邮箱,我看到就会给你们发送
超强悍的支持汉字、拼音首字母、英文搜索方式 是对selectseach的改进、升级版 1.把下拉列表从右边移到了下边,根原始的一样。 2.修复了对多音字失效的bug. 3.简化了使用方法:对任意一个不需要做任何改动,只需加入...
然而,原始的ZBar库在处理包含中文字符的二维码时可能会出现乱码问题,这是由于其默认不支持中文编码格式所致。针对这一问题,我们进行了相应的优化和调整。 首先,我们要理解为何会出现中文乱码。乱码通常是因为...
这个支持中文的二维码源代码,意味着它可以处理包含汉字的信息。中文字符在二维码中的编码通常采用Unicode或GB2312等编码标准,确保了全球范围内对中文的支持。源代码中可能包括了对字符编码的转换处理,以便将中文...
针对这个问题,"ffmpeg.exe在windows修正乱码,命令行支持中文字幕文件名" 提供了解决方案。 首先,关于乱码问题,这通常是因为FFmpeg在Windows上默认不支持Unicode编码,尤其是在命令行环境下,可能会对非ASCII字符...
安装redhat linux以后需要安装附件的包才能支持中文,否则中文会显示乱码。 请按照如下步骤安装: rpm -ivh libFS-1.0.0-3.1.x86_64.rpm rpm -ivh ttmkfdir-3.0.9-23.el5.x86_64.rpm rpm -ivh chkfontpath-1.10.1-...
对于支持中文的二维码,需要将汉字转换为对应的Unicode编码,通常是UTF-8格式,以确保全球范围内的兼容性。 2. **添加纠错码**:为了提高二维码的容错能力,会在原始数据后附加纠错码。常见的纠错级别有L、M、Q、H...
1.android adb push不支持中文乱码的解决方案. 2.在windows底下文件(夹)命名所采用的是GBK编码,而在Android中采用的UTF-8编码,所有使用adb 的push和pull命令时就会导致由于编码方式的不同而产生的错误,解决这一...
使用命令行的方式gdal2.4.1和geos联合编译的库,包含五个文件夹,bin为生成的dll和exe,include头文件,lib的gdal_i.lib,还有不知道用途的html和data文件夹,主要用途是支持使用union等操作时支持中文路径和中文...