Windows 中文输入法的实现.docVIP

  • 9
  • 0
  • 约1.86万字
  • 约 7页
  • 2016-11-27 发布于河南
  • 举报
Windows 中文输入法的实现

Windows 中文输入法的实现 本人设计了一个“3++输入法”,可运行操作系统 Windows95/98/NT/2000,“3++输入法”为纯形码,无需识别码,易学,易用,录入速度快,含“简体、繁体、专业”三种版本,字根量 小,词组数大于26000个,全部重码数仅为73个,您可以在 HYPERLINK /cnshare/ /cnshare/ 下搜索“3++输入法”下载软件,或在: HYPERLINK /user1/3jj/ /user1/3jj/ 下载。欢迎各位试用并提出宝贵意见。如有问题可发Email: HYPERLINK mailto:w3jj@ w3jj@ 给我。 ?????? 限于篇幅,Windows系统下汉字输入法的基本原理,大家可参考 MSDN 中的有关文档。本人仅对程序设计的实现方法说明如下: ????? 一、在 Windows 任务栏中增加输入法名称 ??????? 这也就是 Setup 程序的关键,实际上,可以利用 ImmInstallIME 函 数。该函数的原形是:HKL ImmInstallIME( LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);前一个参数 lpszIMEFileName 是“.ime”文件的路径,Win9x 为“\System”下,WinNT/2000为“\System32”下。后一个参数 lpszLayoutText 是输入法的明称。如 HKL MyIme=ImmInstallIME(Windows\\system\\3jaja.ime,3++输入法); 如果 MyIme 不返回 NULL ,则调用成功。 ????? 当然你必须先设计好 DLL 程序“.ime”文件和码表原文件“.mb”文件。 二、“.ime”文件的实现 ???? 程序中的输出函数(必须)即文件“.def”中的函数,以下为函数的名称和原形,部分函数给出了原函数,希望对你能有所帮助。 //初始化输入法函数 BOOL WINAPI ImeInquire(LPIMEINFO lpImeInfo,LPTSTR lpszWndCls,DWORD lpszOptions) { if (!lpImeInfo) ????? return (FALSE); ?? lpImeInfo-dwPrivateDataSize = sizeof(PRIVCONTEXT); ?? lpImeInfo-fdwProperty = IME_PROP_KBD_CHAR_FIRST| ???????????????????????????? IME_PROP_CANDLIST_START_FROM_1| ???????????????????????????? IME_PROP_IGNORE_UPKEYS; ?? lpImeInfo-fdwConversionCaps =????? IME_CMODE_NATIVE|IME_CMODE_NATIVE|IME_CMODE_FULLSHAPE|IME_CMODE_CHARCODE|IME_CMODE_SOFTKBD|IME_CMODE_NOCONVERSION; lpImeInfo-fdwSentenceCaps = 0; lpImeInfo-fdwUICaps = UI_CAP_ROT90|UI_CAP_SOFTKBD; lpImeInfo-fdwSCSCaps = SCS_CAP_COMPSTR|SCS_CAP_MAKEREAD; lpImeInfo-fdwSelectCaps = (DWORD)0; lstrcpy(lpszWndCls, (LPTSTR)szUIClassName); return (TRUE); }?????? ??????????????? //自定义汉字编码格式,未作处理。 DWORD WINAPI ImeConversionList(HIMC hIMC,LPCTSTR lpszSrc,DWORD uBufLen,UINT uFlag) { ?? return (0); } //设置输入法状态函数,如光标跟随等 BOOL WINAPI ImeConfigure(HKL hKL,HWND hAppWnd,DWORD dwMode,LPVOID lpData) { switch (dwMode) ?? { ?????? case IME_CONFIG_GENERAL: ???????????? DialogBox(hInst, MAKEINTRESOURCE(SETIME), (HWND)hAppWnd, (DLGPROC)ImeSetDlgProc); ??????????? break; ??????? default

文档评论(0)

1亿VIP精品文档

相关文档