           KCTRL Source V0.27 -- Source files for Kanji-Controls

       Copyright (C) Eiichiroh Itoh. 1997-1999. All rights reserved.

* Introduction

     　これは, KCTRL.DLL/KCTRLFNT.ORG/SETKCTRL.EXE の ライブラリ/ソー
     スパッケージです. KCTRLに関する詳しい説明は, KCTRLのパッケージを
     参照して下さい.

     このパッケージの最新版は以下の場所で入手できます.

          http://www.oohito.com/
          http://member.nifty.ne.jp/oohito/　　(←緊急時のみ稼動)

     なお, KCTRLを再構築するには,

        * Microsoft Visual C++ V5.0 Professional/Enterprise
        * Microsoft Visual C++ for WindowsCE
          もしくは
          Microsoft WindowsCE Toolkit for Visual C++5.0

     が必要です.

* Description of package

     KCTRL\
          KCTRL.DLL/KCTRLFNT.DLLのソース
     SETKCTRL\
          SETKCTRL.EXEのソース
     KCTRLDEV.TXT
          ドキュメント(このファイル)

* How to install a Library package

     　KCTRLを利用して日本語アプリを開発するだけであれば, ライブラリパ
     ッケージ のインストールだけでOKです. 各CPU毎にディレクトリを作成
     し, 該当するライブラリパッケージを解凍して下さい.

     なお, ライブラリパッケージはこのソースパッケージとは別に,
     KC???L.ZIP という名称で公開しています. (???はバージョン番号)

     その後, Visual C/C++ の Settings...(設定) のLink部分で,
     Object/Library Module に対して各CPUに応じたKCTRL.LIBを指定してビ
     ルドして下さい. そうすればDLLが実行時に ロードされるようになりま
     す.

     また, アプリケーションでは KCTRL.H をインクルードするようにして下
     さい. このファイルはMIPS版でもSH-3版でも同じものですので, 共通の
     場所に置くほうがよいでしょう.

* Remarks

        * KCTRLFNTをビルドすると, KCTRLFNT.DLLが作成されますが, これを
          HPCに転送するとフォントのない状態となり実行できません.
          KCTRLFNT.ORGとリネームし, SETKCTRL.EXEでフォントを組み込んで
          下さい.
        * cl でコンパイル/リンクすればSETKCTRL.EXEが作成されます.

* Function definitions

     　以下はKCTRL.DLLで実現されている関数の仕様です. これらの仕様は予
     告なく変更することがあります.

     BOOL InitKanjiControls( void )
          KCTRL.DLLを初期化します.
          KCTRL.DLLを利用する場合は, 必ず最初に呼び出してください. 内
          部的にはフォントの有無をチェックしたり, 半角・全角フォントを
          ２：１に調整したりしています. 戻り値は, 成功した場合TRUE, 失
          敗した場合FALSEとなります. FALSEの場合にKCTRL.DLLの関数を呼
          び出した場合, 予期せぬ結果になることがあり ます.
     void ReleaseKanjiControls( void )
          アプリケーション終了時にKCTRLの後始末をする為の関数です.
          終了時に必ず呼び出してください.
     void KDrawText( HDC hDC, LPCTSTR str, int len, LPRECT pos, UINT
     format )
          日本語文字列を指定されたデバイスコンテキストに表示します.
          strに指定したUNICODE文字列を, posで指定した領域に出力します.
          lenに-1を指定するとstrのNULL文字まで出力します. なお, format
          の内容は現在無視しています.
     DWORD unicode2sjis( LPCTSTR src, BYTE *dst, DWORD max )
          Unicode→ShiftJIS文字列変換ルーチンです.
          Unicode文字列(src)をShiftJISコード文字列(dst)に変換します.
          max はdstに格納できるバイト数を指定してください. なお, dstに
          NULLを指定すると, 格納領域に必要なバイト数を返します.
     DWORD sjis2unicode( const BYTE *src, LPTSTR dst, DWORD max )
          ShiftJIS→Unicode文字列変換ルーチンです.
          ShiftJISコード文字列(src)をUnicode文字列(dst)に変換します.
          max はdstに格納できる※バイト数※を指定してください. なお,
          dstにNULLを指定すると, 格納領域に必要なバイト数を返します.
     DWORD GetFontZW( void )
          全角フォントの横幅(ドット数)を返します.
     DWORD GetFontHW( void )
          半角フォントの横幅(ドット数)を返します.
     DWORD GetFontH( void )
          フォントの高さ(ドット数)を返します. この値は全角・半角フォン
          ト共通です.
     void SetTabWidth( DWORD tab )
          タブの長さを半角文字を単位として指定します, この関数で変更し
          ない限りタブは半角8文字として扱われます.
     DWORD GetTabWidth( void )
          現在のタブの長さを取得します. (半角文字単位での値を返します)
     DWORD GetKVersion( void )
          KCTRL.DLLのバージョンを返します. 結果は整数で,
          (メジャーバージョン * 100 + マイナーバージョン)
          という値が返ります.
     WORD sjis2jis_char( WORD sjis )
          ShiftJISコード文字をJISコード文字に変換します.
     WORD jis2sjis_char( WORD jis )
          JISコード文字をShiftJISコード文字に変換します.
     TCHAR sjis2unicode_char( WORD sjis )
          ShiftJISコード文字をUNICODE文字に変換します.
     WORD unicode2sjis_char( TCHAR unicode )
          UNICODE文字をShiftJISコード文字に変換します.
     void setup_codeconv( LPTSTR ptr )
          一括コード変換処理を初期化します. ptrには, NULLか変換結果を
          格納する領域を指定します.
          UNICODE→JIS変換や, JIS→UNICODE変換を行うには以下のような手
          順で行って下さい.
            1. setup_codeconv(0) で変換結果のサイズを知る為の初期処理
               を行う.
            2. 変換元の文字列の各文字(c)に対して,
               jis_unicode_char(c) ： JIS→UNICODE
               unicode_jis_char(c) ： UNICODE→JIS
               を呼び出す.
               例) do { jis_unicode_char( c = ptr++ ) ; } while ( c )
               ;
            3. size = getcount_codeconv() で変換に必要な領域の大きさを
               求める.
            4. 上で得たサイズをもとに変換先の領域を確保する.
               例) ptr = LocalAlloc( size * sizeof (TCHAR) ) ;
            5. setup_codeconv(ptr) で実際に変換する為の領域を設定する.
            6. 2.と全く同様に jis_unicode_char/unicode_jis_char を呼び
               出す.

          コード変換の過程で, jis_unicode_char/unicode_jis_char に0を
          指定するのは, コード変換が終了したことを変換ルーチンに指示す
          る為です. 必ず行ってください.

     DWORD getcount_codeconv( void )
          コード変換を行った場合に, 変換で必要となるサイズ(文字単位)を
          返します.
          ※使い方はsetup_codeconvを参照してください.
     void unicode_jis_char( TCHAR c )
          UNICODE→JISコード変換を行う際に使用します.
          ※使い方はsetup_codeconvを参照してください.
     void jis_unicode_char( TCHAR c )
          JIS→UNICODEコード変換を行う際に使用します.
          ※使い方はsetup_codeconvを参照してください.
     void set_convmode( DWORD mode )
          UNICODE→JISコード変換を行う際の変換モードを指定します.
          UNICODE→JISコード変換時に BASE64-encoding や, 漢字の2バイト
          目のダブルクオート をエスケープする為の設定を行います.
             o mode = MODE_NORMAL : 通常の変換
             o mode = MODE_QUOTE : 漢字2バイト目の(")を(\")にする
             o mode = MODE_BASE64 : BASE64-encodingを行う
     BOOL is_hankaku( TCHAR c )
          UNICODE文字が半角文字かどうか調べます.
          半角文字の場合にTRUEを返します.
     DWORD GetKLocale( void )
          KCTRLの種別を取得します.
          インストールされているKCTRLの種別を求めるのに用います.
             o ret = LOCALE_US : 英語版H/PC(日本語表示)
             o ret = LOCALE_USONLY : 英語版H/PC(日本語フォント無し版)
             o ret = LOCALE_JAPAN : 日本語版H/PC用
             o ret = LOCALE_CHINA : 英語版H/PC(中国語表示)※予約コード
               です
             o ret = LOCALE_US20 : 英語版H/PC WinCE V2.0(日本語表示)
     DWORD GetNumFont( void )
          利用できるフォントの数を取得します.
     void SetCurFont( DWORD index )
          利用するフォントを指定します. GetNumFontで得たフォント数以上
          の値を指定しないでください.
          index=0は標準フォント, index=1はエキストラフォントと呼びま
          す. 標準フォントとエキストラフォントを同時に使う場合, なるべ
          く標準フォントは閲覧や編集画面などに, エキストラフォントは一
          覧画面などに利用するようにしてください.
          また, フォントサイズは標準フォント≧エキストラフォントと仮定
          してください.
          (なお, 英語版WinCE V1.0では1種類のフォントのみサポートしてい
          ます)
     DWORD GetCurFont( void )
          現在利用しているフォントを取得します.

     なお, 以下の関数が廃止されました. ご注意ください.

        * HWND KListBox_Create( LPCTSTR title, DWORD style, DWORD x,
          DWORD y, DWORD w, DWORD h, HWND hWndParent, HINSTANCE
          hThisInst )
        * BOOL KListBox_InsertString( HWND hWnd, DWORD index, LPTSTR
          text )
        * void KListBox_ResetContent( HWND hWnd )
        * int KListBox_GetCurSel( HWND hWnd )
        * BOOL KListBox_GetCurText( HWND hWnd, LPTSTR text, DWORD size
          )
        * void KListBox_SetCurSel( HWND hWnd, int index )
        * void KListBox_GetText( HWND hWnd, DWORD index, LPTSTR text,
          DWORD size )
        * void KListBox_SetText( HWND hWnd, DWORD index, LPCTSTR text
          )
        * int KListBox_GetCount( HWND hWnd )
        * void KListBox_SetItemCount( HWND hWnd, int count )
        * void KListBoxProc( HWND hWnd, WPARAM wParam, LPARAM lParam )
        * HWND KStatic_Create( DWORD exStyle, LPCTSTR title, DWORD
          style, DWORD x, DWORD y, DWORD w, DWORD h, HWND hWndParent,
          HINSTANCE hThisInst )

     ※ 従来のKDrawTextWとKDrawTextIは使わないで下さい. 今後削除される
     可能性があります.

     なお, KCTRLのソース内容でわからない場合は, お気軽にお問い合わせ下
     さい. KCTRLパッケージ内のサポート先のほか, メールでも受け付けてお
     ります. メールアドレスは, 著作権表示の項を参照してください.

* 著作権と使用条件

        * このプログラムはフリーウェアです.
        * このプログラムの著作権は,
          伊藤　栄一郎, Eiichiroh Itoh,
          mailto:GHC02331@niftyserve.or.jp
          が保持しています.
        * 著作権者はこのプログラムの動作を一切保証しません.
        * このプログラムを利用した, あるいはしなかったことにより発生し
          た被害に関する一切の責任を著作権者はとりません.
        * このプログラムを商品の一部として添付するなど, 許可なく商業目
          的に利用することを禁じます.
        * このプログラムを再配布したい場合は, 事前に著作権者まで許可を
          求めてください.
        * このプログラムを雑誌で紹介する場合には事前・事後の許可は必要
          ありません.
        * このプログラムを個人のホームページで紹介する場合には事前・事
          後の許可は必要ありません.
        * このプログラムを雑誌以外の書籍で紹介する場合には事前に著作権
          者まで許可を求めてください.

* Copyright, Distribution Policy and Disclaimer

     This program is a copyrighted freeware. Its copyright is owned by
     its author. You may use it freely, but you are not permitted to
     use it for any commercial purpose. If you want to post this
     program to other BBS, ftp site or network, or if you want to
     bundle it to other program or publication, you should receive
     prior permission from its author. The author is in no way liable
     to any damage, which may be caused by the use of or inability to
     use this software.

* History

     バイナリパッケージに付属のドキュメントを参照してください.

(KCTRL Source -- Source files of Kanji-Controls)
