Cantonese Input (29 Dec 2017)

Here are the download links to my Cantonese Input Method compiled with Visual Foxpro 6 and 9 respectively. The topmost one is the most recent version. All of them contain canton.dbf the database.

 Visual Foxpro 9 Setup

  Visual Foxpro 6 Setup

SourceForge link: http://sourceforge.net/projects/changscantoneseinput/

My Cantonese Input program was intially written in Visual Foxpro 6 (with SP5) for Windows. The program is using Big5 character encoding, NOT Unicode, because Visual Foxpro had never supported Unicode. You will need to set Windows' system locale to Big5 first to run the program.

There are workarounds, but I haven't gotten time to research on them. The best one is VFP dotNet Extender, but it required Visual Foxpro 9. dotNet Extender was supposed to allow you to use dotNet Unicode UI classes in VFP forms. Another method is to switch everything to Micro$oft Access or Visual C#, which would require my aging brain to learn new programming languages.... :)

Micro$oft ActiveX Control Pad (for use of FM20.DLL):

http://download.microsoft.com/download/activexcontrolpad/install/4.0.0.950/win98mexp/en-us/setuppad.exe

Update 16 Oct 2014:

Found a way to make VFP 6 to pass UTF-8 characters properly to MS Form 2.0 ActiveX controls. The trick uses the Unicode clipboard of Windows.

First, the UTF-8 column in canton.dbf were encoded using Base64 algorihtm. To push UTF-8 to an MS Forms 2.0 textbox, the decoded Base64 value (now a UTF-8 character) were FILETOSTR() to a text file temp.txt, CLIP was called to copy the content of temp.txt to clipboard, after calling CHCP 65001 to switch the codepage to UTF-8. With the UTF-8 character in clipboard, textbox.paste() was called.

The above  method involves shelling to Command Prompt to execute those commands as a batch file. To speed things up, a Visual C++ or C# DLL could be developed to do the exact same things.

VFP 6 doesn't support SYS(3101, 65001) and STRCONV(xxx, [6..14]) as in VFP 9. It does have SYS(3005), but executing SYS(3005,65001) doesn't actually work, though VFP 6 still reports a codepage of 65001 when calling SYS(3004).

The above method does NOT work for REPORT FORM, I believe. I couldn't find a way to use ActiveX controls in REPORT FORM. So I still cannot print Unicode characters. Some said VFP 9 could do it. Well.... later!

Update 18 Sep 2014:

Starting September 2014, I was testing Visual Foxpro 9 as a way to add UTF-8 support in the input program. This made it possible to display and copy to clipboard HKSCS-2008 characters (e.g. "埗", "邨", ...)!  You can download the source code of the progrom below and compile it yourself. To execute it, use Visual Foxpro 9's Runtime Installer: http://www.foxpert.com/runtime.htm ! I am finding a way to produce and distribute executables....

Note that Visual Foxpro 9 does NOT support UTF-16 (e.g. "𨋢"), but UTF-8!

The VFP dotNet Extender product had disappeared. So I am now using Micro$oft Forms 2.0 ActiveX controls to display UTF-8 characters. However, VFP 6 automatically convert data from Forms 2.0 controls to english character set whenever data were stored into variables, making it impossible to retrieve raw data (in the form of UTF-8 binary values) from ActiveX controls.