CRichEdit控件制作打字软件ONCHANGE事件

qq_41227742 2020-06-29 04:03:02
两个CRichEdit控件制作打字软件(中文)利用ONCHANGE事件正确和错误的字符用不同的背景色提示。问题是要多按一个空格或按退格键才会正确显示。
void CWztestDlg::OnChangeRichedit2()
{


CWnd *wnd,*wndstatic;
CString wznum,txt1,txt2,temp1,temp2; //richedit文本框的内容长度,两个文本框的内容及每次截取的字符
int wzlength;
wnd=GetDlgItem(IDC_RICHEDIT2); //第二个文本框
wzlength=wnd->GetWindowTextLength();
wznum.Format("%d",wzlength);
wndstatic=GetDlgItem(IDC_STATIC);

CHARFORMAT2 cf; //声明为CHARFORMAT2结构,详细见MSDN
ZeroMemory(&cf, sizeof(CHARFORMAT2));
cf.cbSize = sizeof(CHARFORMAT2);
cf.dwMask = CFM_BACKCOLOR;
GetDlgItem(IDC_RICHEDIT1)->GetWindowText(txt1);//获取第一个文本框内容
wnd->GetWindowText(txt2); //获取第二个文本框内容
if(txt2.GetLength()>txt1.GetLength())
return;

for(int i=0;i<txt2.GetLength();i=i+2) //两个文本中内容比对
{
temp1=txt1.Mid(i,2);
temp2=txt2.Mid(i,2);
if(temp1==temp2)
{
//设置字体
cf.crBackColor=RGB(0, 255, 0); //背景颜色为绿色
m_richedit.SetSel(i, i+1); //设置处理区域
m_richedit.SendMessage(EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf);
}
else
{
cf.crBackColor=RGB(0, 0, 255); //背景颜色为绿色
m_richedit.SetSel(i, i+1); //设置处理区域

m_richedit.SendMessage(EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf);


} //光标移动到文本末尾

}
m_richedit.SetSel(-1,-1);
//m_richedit.SetSel(txt2.GetLength(),txt2.GetLength());
m_richedit.SetFocus();

}
...全文
329 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2020-07-19
  • 打赏
  • 举报
回复
打字软件每按一个键就检查一遍拼写太蛋疼了……用户一分钟可以按几百个键的,还是用定时器吧,用户半秒钟内没有输入的时候才去检查。定时器一直在跑,也不会依赖于EN_CHANGE的触发——不过一段时间内没有EN_CHANGE就什么都不干或者干脆关掉定时器。 PS你把CRichEdit::SetSelectionCharFormat自己重写了一遍是怎么回事?
qq_41227742 2020-07-16
  • 打赏
  • 举报
回复
是不是用UNICODE编码,我也不知道,刚基础VC
Eleven 2020-07-01
  • 打赏
  • 举报
回复
你的是Unicode编码的吗?
qq_41227742 2020-06-30
  • 打赏
  • 举报
回复
EN_UPDATE 事件,不行啊
zgl7903 2020-06-29
  • 打赏
  • 举报
回复
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧