注册 登录
编程论坛 C图形专区

[原创]输入系统 -- 全拼汉字输入

jig 发布于 2006-10-01 10:52, 5983 次点击

输入系统 -- 全拼汉字输入
作者:孙靖(Jig) 时间:2006 - 10 - 1
若要转贴或使用本文章介绍的技术,请在你发布的文章或作品中注明出处。

这个是很久以前的一个作品,可能很多朋友看了后会觉得很垃圾,的确这个做的是很简单,只是当时一时兴起就做了这个。
其实用键盘做输入法很简单,只要自己确立好字库,然后编程建立还输入与字库的对应关系,再将字库显示出来就OK了。这里我是做了简单的全拼输入法,每次只能输入一个文字,且不具有联想功能(有兴趣的朋友可以去实现这样的功能,其实很简单)。

函数介绍:
本输入套件其实就只有4个函数。
SJ_scanf_T *SJ_create_scanf(char *name_bmp[]); /* 给输入系统开辟空间和给出皮肤路径 */
void SJ_win_scanf(int x, int y, SJ_scanf_T *SCANF); /* 输入函数,调用此函数即可实现汉字的输入 */
void SJ_move_scanf(int x, int y, SJ_scanf_T *SCANF); /* 移动标识 */
void SJ_destroy_scanf(SJ_scanf_T *SCANF); /* 销毁输入系统,释放内存 */

在这什么来看看输入系统的数据结构:
typedef struct /* 自定义输入系统结构 */
{
char key_en_ch; /* 标记输入的字符为英文还是中文,分别为 0英,1中 */
char key_en_ch_t;
char key_capslock; /* 标记为大小写,0小,1大 */
char english; /* 记录英文字符 */
char chinese[5]; /* 记录中文字符串,两个字节 */
char name_bmp[3][20]; /* 记录资源图片名称 */
char han_zi[414][11]; /* 记录字库读音 */
int x, y;
long count; /* 记录有多少个字节 */
BITMAP *image;
} SJ_scanf_T;

其中 key_en_ch 标记将输出的是在中文还是英文。若是中文,用户应当打印 chinese[5],否则打印 english。
朋友,按F1可以在中英文中互相转换,翻页即为+,-键。还可以在字库中加入汉字,就可以在本输入系统中使用了。

采用DEV+NEO制作。

效果图片:

只有本站会员才能查看附件,请 登录


作品下载:
http://upload.programfan.com/upfile/200610011055386.zip

[此贴子已经被作者于2006-10-1 10:55:10编辑过]

21 回复
#2
一笔苍穹2006-10-04 11:36
哦,发出来了,支持一下!
#3
jig2006-10-04 14:30

呵呵,也只有你支持我了,呵呵


对了,我打算做个比较强大的编译器外科,真的打算把NEO容入进去,做成VB那样功能,支持TC2,3编译器,支持汇编,也支持脱壳处理,可以直接进行系统级程序编程.

#4
cdmalcl2006-10-08 20:44
靖哥真强
靖哥的学习的速度太快了
看看自己还是在停留
#5
C语言学习者2006-10-14 12:56
为什么没有退出功能?我只有在资源管理器关掉它。
#6
cdmalcl2006-10-14 18:54

你自己看看说明文档
#7
C语言学习者2006-10-14 18:59
为什么不见呢
#8
jig2006-10-14 19:45

朋友,可以切换到英文输入方式下,按 q 就可以退出

#9
C语言学习者2006-10-14 19:49
我应该向你学习一下,还想问你,你花了多少时间啊!
#10
jig2006-10-14 20:00
朋友,等你有一定基础到了一定水平后你会对编程有更多的理解,其实很多小型作品做起来就一两天,到时候你也会有同样的感受的。
#11
Iamwula2007-01-04 09:36

#12
卧龙孔明2007-08-14 18:08
楼主:
我运行后不出现界面而是直接出错退出,重编译后故障依旧,请问是什么原因?
还有我用那个 风之国界面编辑控件 后编译后的程序在自己的机器上(安有allegro)可以正常使用,在其它电脑上界面出现黑块(界面不自动刷新),出现停滞(甚至我运行您写的那个五子棋都这样),我确定那个alleg41.dll/alleg42.dll和其它程序运行的所需文件都在同一目录,请问如何使使用neo for dev + 风之国界面编辑控件 编写的程序可以任意电脑正常使用呢?
#13
jig2007-08-14 18:49

我也出现过这样的情况,

当可以肯定的不是程序问题,而是可能缺少或是低版本的某些DLL动态连接库

因为你使用的NEO FOR DEV + 风之国界面,其实是一些于硬件无相关上层建筑代码。

他其实就是用了ALLAGRE ,所以你先用基本的ALLAGRE编一个小程序看看,要是不能运行说明是系统配置方面的问题

只要你用ALLAGRE编译出来的程序能正常运行,那你使用 NEO FOR DEV + 风之国界面 就一定没问题


不好意思,我自己也一直没去具体细查到底是哪方面配置有问题,看论坛牛哥哥们来看看。

这个问题可以归结到ALLAGRE的使用特点上。

[此贴子已经被作者于2007-8-14 19:06:34编辑过]

#14
卧龙孔明2007-08-15 09:57
以下是引用jig在2007-8-14 18:49:00的发言:

我也出现过这样的情况,

当可以肯定的不是程序问题,而是可能缺少或是低版本的某些DLL动态连接库

因为你使用的NEO FOR DEV + 风之国界面,其实是一些于硬件无相关上层建筑代码。

他其实就是用了ALLAGRE ,所以你先用基本的ALLAGRE编一个小程序看看,要是不能运行说明是系统配置方面的问题

只要你用ALLAGRE编译出来的程序能正常运行,那你使用 NEO FOR DEV + 风之国界面 就一定没问题


不好意思,我自己也一直没去具体细查到底是哪方面配置有问题,看论坛牛哥哥们来看看。

这个问题可以归结到ALLAGRE的使用特点上。


谢谢您的解答,不过经测试那些仅仅使用allegro的example完全可以正常运行,仅仅是使用了NEO for dev后出现了那样的问题

#15
一笔苍穹2007-08-15 12:25
能把问题程序给我一份吗,我想看看
#16
jig2007-08-15 17:23

哦??难道是 NEO FOR DEV封的有问题??

楼上的,直接用我那汉字输入,或那五子棋就可能出现那问题

不过奇怪,的确是在我的机器上可以,但我曾经在我朋友的机器上就出现了上面说的现象,画面不被刷新。

不知道你能能重现这个问题不。

[此贴子已经被作者于2007-8-15 17:24:44编辑过]

#17
ba_wang_mao2007-08-15 18:12
牛人,敬佩,学习速度真快!
#18
卧龙孔明2007-08-16 08:48
以下是引用jig在2007-8-15 17:23:03的发言:

哦??难道是 NEO FOR DEV封的有问题??

楼上的,直接用我那汉字输入,或那五子棋就可能出现那问题

不过奇怪,的确是在我的机器上可以,但我曾经在我朋友的机器上就出现了上面说的现象,画面不被刷新。

不知道你能能重现这个问题不。


可以,现在就这样
汉字输入:
双击后无显示,仅在任务栏中出现不到一秒后消失,同时中间伴随着屏幕黑闪一次

只有本站会员才能查看附件,请 登录


五子棋:
双击后运行,黑屏,不刷新,需要将窗口拖至屏幕外后再次拖会,方可刷新一次

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-8-16 8:49:04编辑过]

#19
卧龙孔明2007-08-16 08:55
以下是引用一笔苍穹在2007-8-15 12:25:09的发言:
能把问题程序给我一份吗,我想看看

不应该是程序的问题,因为jig的所有窗口程序在我这里若未安装allegro都无法正常刷新(重新编译后故障依旧)

只有本站会员才能查看附件,请 登录

#20
vfdff2007-08-18 10:00
回复:(jig)[原创]输入系统 -- 全拼汉字输入

您现在编写的这个程序运行后,我发现占的CPU 好多资源

我想这个程序能不能嵌入到其他的程序中呢 ?
因为输入毕竟不可能只如你的程序,在自己的那个见面上进行输入
而应该像网上其他的输入发一样,可以对于别的目标区域也可以进行输入,并与其他输入法做自由的切换 。

#21
eakcon2007-11-14 10:15

好强呀!


此主题相关图片如下:

#22
蚂蚁泡大象2010-07-09 16:37
支持,!好好学习学习
1