我要自杀了(100分)

  • 主题发起人 刘麻子
  • 开始时间
我用XP,我帮你测!!
 
xuxiaohan,就是中文输入法把 一些消息,包括 EM_SETCHARFORMAT 过滤掉,所以<br>先用<br>application.ProcessMessages; <br>抢先执行! &nbsp;<br><br>application.ProcessMessages; 只是让进程去处理队列中其它消息<br>RichEdit1Change中的代码会占用很多的CPU时间吗?<br>我不懂,所以要问个明白<br>
 
我是怀疑中文输入法屏蔽了Edit Control的一些消息,<br>当然,因为对中文输入发的Hook 机制不了解,所以我仅仅是怀疑。<br>RichEdit1Change中的代码会占用很多的CPU时间吗(不会)<br>用application.ProcessMessages; 先处理消息,就不怕被过滤掉一些消息。
 
刘麻子十分感谢大家的帮忙。我先做个总结,咳咳!<br><br>问题1.我用xuxiaohan的方法,改变颜色前加一条application.ProcessMessages;语句,<br>&nbsp; &nbsp; &nbsp; 果然搞定了.真厉害!<br>&nbsp; &nbsp; &nbsp; 顺便提一下,如果用模拟鼠标单击按钮的方法也可以,变通变通,不一定要单击按钮啊,可以<br>&nbsp; &nbsp; &nbsp; 单击窗体什么的,也能达到同样的效果!<br>&nbsp; &nbsp; &nbsp; 但是,有了xuxiaohan的方法,就不要那么麻烦了吧?<br><br>问题2.现在汉字采用的是GBK内码,占用两个字节,第一个字节最高位肯定是1,第二个字节最高位不<br>&nbsp; &nbsp; &nbsp; 一定是1,而英文字符的ASCII码最高位肯定是0,不要我讲怎么在英汉混合时怎么区分了吧?<br>&nbsp; &nbsp; &nbsp; 其实还有一个函数,可以帮我们快速判断串中某个字节的内容代表汉字还是字母:<br>&nbsp; &nbsp; &nbsp; function ByteType(const S: string; Index: Integer): TMbcsByteType;<br><br>特大喜讯:刘麻子的程序作成功了!可以支持汉字、英文的混合输入!<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;需要源代码的朋友可以加我QQ:71892967,直接传给你,OK?
 
已经收到,谢谢 [:D]<br><br>
 
人已死,心何在,问题又有何用?
 
恭喜了!
 
小刘:<br>发个给我,好吗,我没有QQ<br>FengSirui@sina.com
 
你们也可以在这里下载 http://www.efile.com.cn/?liumazi<br>这边马上就要结帐了,需要的朋友快去哦!<br>对了,xuxiaohan,有个朋友讲,在他那边仍然有不变颜色的情况!<br>他的环境是win2000高级服务器版+sp4,为何?<br>
 
我测试了一下,有如下(BUG):<br>测试环境(WINXP[无SP1--盗版XP]+DELPHI7,P4 1.7)<br>1.输入汉字时,不支持数字选择(我用的是陈桥智能五笔5.4破解版)如:输入“山”时,这样输就有问题:m-&gt;2,在M2中没有变化,只是界面闪了一下,而M1却移了一个汉字。<br>2.M2中不支持方向键<br>3.不该输空格的地方输入空格没有更改背景色。<br>
 
我连接了M2.OnKeyPress:=M2KeyPress;<br>想用它来处理Home,end,PAgeup,pagedown,光标上下左右这些按键,可怎么都捕捉不到,退格与回车可以捕捉到,RichEdit中如何知道插入点在哪?
 
下载了试了一试,<br>发现在输入词语时有个BUG,<br>比如:<br>我用拼音输入法,需要输入‘阳’,那么我输入‘太阳’,<br>然后删除‘太’字后,所输入的‘阳’字仍然为提示错误的红色。<br>
 
我认为笨一点的方法是:在M2的keydown中过滤掉<br>&nbsp; {$EXTERNALSYM VK_PRIOR}<br>&nbsp; VK_PRIOR = 33;<br>&nbsp; {$EXTERNALSYM VK_NEXT}<br>&nbsp; VK_NEXT = 34;<br>&nbsp; {$EXTERNALSYM VK_END}<br>&nbsp; VK_END = 35;<br>&nbsp; {$EXTERNALSYM VK_HOME}<br>&nbsp; VK_HOME = 36;<br>&nbsp; {$EXTERNALSYM VK_LEFT}<br>&nbsp; VK_LEFT = 37;<br>&nbsp; {$EXTERNALSYM VK_UP}<br>&nbsp; VK_UP = 38;<br>&nbsp; {$EXTERNALSYM VK_RIGHT}<br>&nbsp; VK_RIGHT = 39;<br>&nbsp; {$EXTERNALSYM VK_DOWN}<br>&nbsp; VK_DOWN = 40;<br>要不成了很烦的事,<br>如过滤了这些按键就不会出现“网事如风, ”所说的情况了,要不就要重新判断了并且还要找插入点,用户修改了哪些且是在哪个位置修改了!!<br>不过滤就一个字:“烦!”
 
我这样测试:我不对着上面的打字,我只打一级简码,第一次有问题(M2不显示,闪一下,好像是把我打的字“吃”了),第二次没有问题,第三次和第一次一样,第四次和第二次一样,如些类推!!
 
好感动,这么多朋友帮助我,5555.... &nbsp; 感动!<br>现在我回复几个问题:<br>首先声明,偶不会五笔,所以我对这方面的问题暂时无法解决。按我开始的想法,因为用的是onchange<br>事件,是和输入法无关的。现在看来没有那么简单,我要学习学习再学习!<br><br>1 .用onkeypress当然捕捉不到方向键,他只可以响应字符按键,应该用onkeydown事件。<br>2 .m2中,因为空格是不可见的,当然也不存在“颜色”,所以就看不到‘红色的空格’了。<br>3 .网事如风讲的,一定是你用方向键移到太的前面然后删除的吧?这的确是我考虑不周所致。<br><br>问题2在金山打字通中也存在,当然我不应该学他的缺点。向大家道歉。<br>问题3有两个解决方法,<br>一、屏蔽方向键等控制键,就象woDing讲的。(金山打字通就是这样的!!我文档里讲错了)<br>二、允许用户象平时打字一样,可以用各种控制符,甚至于,选中、copy、cut、del等。我觉得比较笨的<br>实现方法就是每次从头到尾检查一次,各位有其他好的办法吗?<br>
 
>>2 .m2中,因为空格是不可见的,当然也不存在“颜色”,所以就看不到‘红色的空格’了。<br>我认为打错了的汉字应该改变底色!!<br>让用户知道自己打错了<br>如空格有全角和半角
 
向大家道歉!我这个人太粗心了!因为我平时用的就是win2000+智能ABC拼音,没想到用别的输入法试试!<br><br>晚上试了一下,在我的机子上(Windows 2000 server &nbsp;盗版)就有全拼、双拼、郑码、极品五笔都不行。<br>现在又回到原来的问题上---中文输入法输入汉字时,触发onchange,其中的selatrr..无法改变颜色!(晕)<br>还有一个问题,就是采用某些输入法输入汉字词组时前面的字会被‘吃掉’,可能时因为我程序里面的‘选中’操作<br>所致,选中前面字时,第二个字就传来了.....前面当然没了。这个问题如何解决,考虑ing。不行我就要给输入<br>法的作者写信了^_^<br><br>(今天我在98运行发现有不选中M1中汉字的现象,这是因为我在程序中图省事,设sellength为1,到98就不行了!<br>修改过的程序代码已经重新上传到delphi盒子提供的免费8兆空间,大家可以下载。现在这个程序在我的win98<br>下没出现不变颜色的问题,也没有'吃字'的现象,好象一切正常,但也只是我没有发现而已)<br><br>有没有人知道其他可以改变颜色的方法?(除了画)也不一定要用我那个TMYRichEdit,其他的控件也可以的!<br>从理论上讲,可能是输入法设计缺陷导致(仅仅是‘可能’,也许是不得不这样设计),但我们不想限制用户<br>采用何种输入法的话,就要想办法克服。我一定要把这个程序搞定!!!<br><br>感兴趣的朋友请再帮帮我吧??<br><br>请下载程序的最新版本,发现任何问题都请告诉我,且说明你所使用的操作系统及有没有打补丁、输入法及其版本、<br>出现错误时的具体情况(比如输入的顺序、有没有残叫等),越详细越好!朋友们所反馈给我的问题都仔细作了笔记。最后我会把问题集中起来一起改!谢谢大家!<br><br>最后,感谢WiDong <br>
 
慎用onchange,你可以用跟踪看看执行过程,<br>用keydown,keyup看看能不能代替嘛<br><br>好多人浏览哦,你的知名度很高哦
 
唉!<br>早知道是输入法是问题,不要急,想想输入法的Hook机制。
 
我是说你把 change事件用 timertime代替呢,看是不是刷新的问题
 
顶部