首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入开发(WinCE)的一些经验 12

嵌入开发(WinCE)的一些经验 12

接着,我再说一下关于Rich Edit控件的问题.因为是昨天刚遇到,所以今天就抽空帮别人解决了.他的问题是这样,在2000下,Unicode工程,RichEdit控件中输入小语种(日文,阿拉伯),无法用GetWindowText等函数获取.(获取的都是????).问题原因主要是因为:
(1).Rich Edit控件的版本太低,如RichEdit1.0(riched32.dll)就是不支持Unicode的.所以必须换成RichEdit2.0或者 3.0(riched20.dll)的.所以在你的程序InitInstance()里面应该有下面代码:
HINSTANCE richEdit=:oadLibrary(_T("riched20.dll"));
if(!richEdit)
AfxMessageBox(_T("Unable to load RichEdit2.0"));
AfxInitRichEdit();
(2).修改你的资源*.rc.打开rc文件.(Open->*.rc|Text方式|)..把原来的"RICHEDIT"改成"RICHEDIT20W"就可以了.如下:
CONTROL "",IDC_RICHEDIT1,"RICHEDIT20W",WS_BORDER |
这样,你利用GetWindowText,就可以得到你要的东西.也就是解决上面的问题。
这儿,我提供方法给那些没有用过RichEdit的人去构造这个控件.
A.当你在对话框中有了Rich Edit后..你编译时发现不能弹出对话框了.请在你的InitInstance()开头加上.AfxInitRichEdit();
B.如果你初始化的话..用下面方式(在OnInitDialog里面加)
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CHARFORMAT cfDefault;
memset(&cfDefault,0,sizeof(cfDefault));
cfDefault.cbSize=sizeof(cfDefault);
cfDefault.dwMask = CFM_FACE | CFM_SIZE |CFM_CHARSET | CFM_SPACING;
cfDefault.yHeight = 200;
cfDefault.bCharSet =ARABIC_CHARSET; //这是阿拉伯文的.这个好象不会影响控件.|我没研究清楚.不过是不可以用来让我们在非Unicode中获取文字的(或者没有上面解决方式).
strcpy(cfDefault.szFaceName,"Arial");
m_RichEdit1.SetDefaultCharFormat(cfDefault);//设置模式
c.如果要设置你的RichEdit响应事件消息(Envent)用:
CWnd* pWnd=GetDlgItem(IDC_RICHEDIT1);
CRichEditCtrl* pRich=(CRichEditCtrl*)(pWnd);
long nEvn=pRich->GetEventMask();
nEvn |=ENM_CHANGE; //响应OnChangeEdit函数.
pRich->SetEventMask(nEvn);
上面这些就是RichEdit入门.呵呵..
返回列表