HEADLINES

■ATOK技術情報
<ATOK12/ATOK11/ATOK10 for Windows
 アプリケーションプログラムインターフェース仕様書>


4.付録

4−1.ATOKComposition取得関数

AT_ImmGetAtCompositionPacket ;ATOKCompositionパケットの取得

    AT_ImmGetAtCompositionPacketはImmGetCompositionのUnicode対応版として提供されている。ImmGetCompositionはCompositionの要素ごとに取得する仕様であるのに対しAT_ImmGetAtCompositionPacketCompositionは要素全体を一括取得する。 ATOKの場合、この関数を使用することで、Windows95上でもUnicode文字列を取得することができる。

4−2.ATOK Composition構造体定義

//構造体バッファサイズ定義
#define ATRESULTSTRCTR_MAX 100 // 確定文字列表記数Max
#define ATRESULTREADCTR_MAX 100 // 確定文字列読み数Max
#define ATRESULTCLAUSECTR_MAX 100 // 確定文字列文節数Max
#define ATCOMPOSITIONSTRCTR_MAX 100 // 未確定文字列表記数Max
#define ATCOMPOSITIONREADCTR_MAX 100 // 未確定文字列読み数Max
#define ATCOMPOSITIONCLAUSECTR_MAX 100 // 未確定文字列文節数Max
#define ATRSLTSTRB_MAX 128  
#define ATRSLTREADB_MAX 128  
#define ATRSLTCLSB_MAX 128  
#define ATCOMPSTRB_MAX 128  
#define ATCOMPREADB_MAX 128  
#define ATCOMPCLSB_MAX 128  

//AtChangeMode(文字列更新情報)構成要素
#define ATGCS_COMPREADSTR GCS_COMPREADSTR // 未確定文字列読み更新
#define ATGCS_COMPREADATTR GCS_COMPREADATTR // 未確定文字列属性更新
#define ATGCS_COMPREADCLAUSE GCS_COMPREADCLAUSE // 未確定文字列文節区切更新
#define ATGCS_COMPSTR GCS_COMPSTR // 未確定文字列表記更新
#define ATGCS_COMPATTR GCS_COMPATTR // 未確定文字列属性更新
#define ATGCS_COMPCLAUSE GCS_COMPCLAUSE // 未確定文字列文節区切更新
#define ATGCS_CURSORPOS GCS_CURSORPOS // 未確定文字列カーソル位置更新
#define ATGCS_DELTASTART GCS_DELTASTART // 未確定文字列表示変更位置更新
#define ATGCS_RESULTREADSTR GCS_RESULTREADSTR // 確定文字列読み更新
#define ATGCS_RESULTREADCLAUSE GCS_RESULTREADCLAUSE // 確定文字列文節区切り更新
#define ATGCS_RESULTSTR GCS_RESULTSTR // 確定文字列表記更新
#define ATGCS_RESULTCLAUSE GCS_RESULTCLAUSE // 確定文字列文節区切り更新

//AtCompositionStrAttr(未確定文字列表記属性)構成要素
//他社IMEの場合、ATCOLINDX_INPUTKOTEI〜は返りません
//カーソル色は返りません(デフォルト)
#define ATCOLINDX_INPUT 0x00 // 変換可能入力文字色
#define ATCOLINDX_TARGETCONVERT 0x01 // 変換文字色
#define ATCOLINDX_CONVERTED 0x02 // 変換済み注目文節色
#define ATCOLINDX_TARGETNOTCONVERTED 0x03 // 未変換注目文節色
#define ATCOLINDX_INPUT_ERROR 0x04 // 入力文字エラー色
#define ATCOLINDX_INPUTKOTEI 0x06 // 固定入力文字色
#define ATCOLINDX_TARGETNOTCONVERTEDKOTEI 0x08 // 固定入力文節色
#define ATCOLINDX_TARGETCOMMENT 0x09 // 注目文節コメント色
#define ATCOLINDX_COMMENT 0x0a // 文節コメント色

//AtResultPrvFaceNameFlg(確定文字フォント書体指定有無)構成要素
//他社IMEの場合、常にATRESULTPRVFONT_FALSE
#define ATRESULTPRVFONT_FALSE 0 // 無し
#define ATRESULTPRVFONT_TRUE 1 // 有り

//ATOKCOMPOSITIONPACK構造体
typedef struct{
 int AtChangeMode ;// 文字列更新情報
 int AtCompositionStrCtr ;// 未確定文字列表記数
 int AtCompositionStrClsCtr ;// 未確定文字列表記文節数
 int AtCompositionReadCtr ;// 未確定文字列読み数
 int AtCompositionReadClsCtr ;// 未確定文字列読み文節数
 int AtCompositionCursorPos ;// 未確定文字列カーソル位置
 int AtCompositionDeltaStart ;// 未確定文字列変更位置
 int AtResultStrCtr ;// 確定文字列表記数
 int AtResultReadCtr ;// 確定文字列読み数
 int AtResultStrClsCtr ;// 確定文字列表記文節数
 int AtResultReadClsCtr ;// 確定文字列読み文節数
 int AtResultPrvFaceNameFlg ;// 確定文字フォント書体指定有無
 int AtReserveAreaA[64-12] ;// リザーブ
   
 WCHAR AtCompositionStr[ATCOMPSTRB_MAX] ;// 未確定文字列表記バッファ
 WORD AtCompositionStrAttr[ATCOMPSTRB_MAX] ;// 未確定文字列表記属性バッファ
 DWORD AtCompositionStrCls[ATCOMPCLSB_MAX] ;// 未確定文字列表記文節バッファ
 WCHAR AtCompositionRead[ATCOMPREADB_MAX] ;// 未確定文字列読みバッファ
 WORD AtCompositionReadAttr[ATCOMPREADB_MAX] ;// 未確定文字列読み属性バッファ
 DWORD AtCompositionReadCls[ATCOMPCLSB_MAX] ;// 未確定文字列読み文節バッファ
   
 WCHAR AtResultStr[ATRSLTSTRB_MAX] ;// 確定文字列表記バッファ
 DWORD AtResultStrCls[ATRSLTCLSB_MAX] ;// 確定文字列表記文節バッファ
 WCHAR AtResultRead[ATRSLTREADB_MAX] ;// 確定文字列読みバッファ
 DWORD AtResultReadCls[ATRSLTCLSB_MAX] ;// 確定文字列読み文節バッファ
   
 WORD AtReserveAreaC[ATRSLTCLSB_MAX] ;// リザーブ
 WCHAR AtResultPrvFaceName[LF_FACESIZE] ;// 確定文字フォント書体名
   
 BYTE AtReserveAreaB[1024-64] ;// リザーブ
} ATOKCOMPOSITIONPACK, *PATOKCOMPOSITIONPACK, *LPATOKCOMPOSITIONPACK;

4−3.未確定文字表示色構造体定義

#define ATIMECOMPCOL_ITEMMAX 16 // 未確定文字表示項目数
                // 項目は後述のAtCompositionStrAttrに従い
                // ATOK以外のIMEではATCOLINDX_INPUTKOTEI〜は
                // 使用しません

typedef struct{         // 表示色アトリビュート構造体
  COLORREF  rgbBack;    // 背景色
  COLORREF  rgbText;    // 文字色
  BOOL    fUnderLine;   // 下線表示有無
} ATIMECOL_STRC;
typedef struct{
  ATIMECOL_STRC  ATIMECompCol[ATIMECOMPCOL_ITEMMAX];
} ATIMECOMPCOL_TBL, *PATIMECOMPCOL_TBL, *LPATIMECOMPCOL_TBL;

4−4.ATOK 辞書設定用構造体定義

//辞書セット番号
#define ATDICNO_1 0 // 辞書セット番号:辞書1
#define ATDICNO_2 1 // 辞書セット番号:辞書2
#define ATDICNO_3 2 // 辞書セット番号:辞書3
#define ATDICNO_4 3 // 辞書セット番号:辞書4
#define ATDICNO_5 4 // 辞書セット番号:辞書5
#define ATDICNO_6 5 // 辞書セット番号:辞書6
#define ATDICNO_7 6 // 辞書セット番号:辞書7
#define ATDICNO_8 7 // 辞書セット番号:辞書8
#define ATDICNO_9 8 // 辞書セット番号:辞書9
#define ATDICNO_0 9 // 辞書セット番号:辞書0
   
#define ATASSISTDICMAX 4 // 補助辞書数Max
#define ATDICFILENAME_MAX (256+2) // 辞書ファイル名バイト数Max
#define ATDICFILESETNICKNAME_MAX (80+1) // 辞書セット名文字数Max

// 辞書ファイル設定構造体
typedef struct tagATDICFILENAMESET {
    UCHAR *pszUserDicName; // ユーザ辞書ファイルパス
    UCHAR *pszSystemDicName; // システム辞書ファイルパス
    UCHAR *pszAssistDicName[ATASSISTDICMAX]; // 補助辞書ファイルパス
} ATDICFILENAMESET;

4−5.辞書エラー種類一覧

enum ATAppError {
ATREG_ERROR_RECORD_FULL = 1, // 同じ読みの単語がいっぱい
ATREG_ERROR_YOMI_FULL, // この読みではこれ以上登録できない
ATREG_ERROR_FILE_FULL, // これ以上登録できない
ATREG_ERROR_ABORT, // 辞書が正しく設定されていないので登録を中止
ATREG_ERROR_HYOKI_ERROR, // 単語に不適切な文字が含まれている
ATREG_ERROR_CANT_APPEND, // 登録できなかった
ATREG_ERROR_YOMI_OVER, // 読みが長すぎる
ATREG_ERROR_YOMI_ERROR, // 読みに不適切な文字が含まれている
ATREG_ERROR_APPEND_NOW, // すでに登録されている
ATREG_ERROR_YOMI_TOP, // 読みの先頭文字が不適切
};

4−6.ATOKマウスイベント処理関係定義

// イベントは(ボタン状態+キーボードシフト状態)で定義される
// 左ボタン状態
#define ATMSE_LDOWN 0x0001 // 押す
#define ATMSE_LUP 0x0002 // 離す
#define ATMSE_LDBLCLK 0x0003 // ダブルクリック
#define ATMSE_LDRAG 0x0004 // ドラッグ
// 右ボタン状態
#define ATMSE_RDOWN 0x0011 // 押す
#define ATMSE_RUP 0x0012 // 離す
#define ATMSE_RDBLCLK 0x0013 // ダブルクリック
#define ATMSE_RDRAG 0x0014 // ドラッグ
// 中央ボタン状態
#define ATMSE_MDOWN 0x0021 // 押す
#define ATMSE_MUP 0x0022 // 離す
#define ATMSE_MDBLCLK 0x0023 // ダブルクリック
#define ATMSE_MDRAG 0x0024 // ドラッグ
// キーボードシフト状態
#define ATMSE_KEYSHIFT 0x0100 // SHIFTキー同時押下
#define ATMSE_KEYCTRL 0x0200 // CTRLキー同時押下
// 文字位置詳細
#define ATMSP_FCHAR 0x0000 // 文字位置前半
#define ATMSP_BCHAR 0x0001 // 文字位置後半

4−7.ATOK機能キー番号定義

#define ATKEY_AMET01 0x91 // AMET1起動
#define ATKEY_AMET02 0x92 // AMET2起動
#define ATKEY_AMET03 0x93 // AMET3起動
#define ATKEY_AMET04 0x94 // AMET4起動
#define ATKEY_AMET05 0x95 // AMET5起動
#define ATKEY_AMET06 0x96 // AMET6起動
#define ATKEY_AMET07 0x97 // AMET7起動
#define ATKEY_AMET08 0x98 // AMET8起動
#define ATKEY_AMET09 0x99 // AMET9起動
#define ATKEY_AMET10 0x9a // AMET0起動
#define ATKEY_HELP 0xb0 // ヘルプ起動
#define ATKEY_PROPERTY 0xb2 // プロパティ起動
#define ATKEY_DICUT 0xb3 // 辞書ユーティリティ起動
#define ATKEY_CHARPALLET 0xb4 // 文字パレット起動
#define ATKEY_CLICKPALLET 0xb6 // クリックパレット起動
#define ATKEY_RESULTPALLET 0xb7 // 文字列ボックス起動

4−8.単語登録品詞取得用構造体定義

typedef struct tagATREGSTYLEBUF {
  DWORD    dwStyle;                // 品詞番号
  WCHAR    szDescription[STYLE_DESCRIPTION_SIZE]; // 品詞名称
} ATREGSTYLEBUF, *PATREGSTYLEBUF, *LPATREGSTYLEBUF;

4−9.品詞名一覧

品詞名 品詞の説明
名詞 物や物の状態に付ける一般的な名詞 花、鳥
固有人姓 人の姓に付ける固有の名詞 後藤、村井
固有人名 人の名に付ける固有の名詞 和之、友子
固有人他 外国人名など、固有人姓・固有人名以外に付ける固有の名詞 ガリバー、アリス
固有地名 場所に付ける固有の名詞 徳島市、シドニー
固有組織 組織に付ける固有の名詞 ジャストシステム
固有商品 商品に付ける固有の名詞 一太郎、ATOK
固有一般 人名・場所・組織・商品以外に付ける固有の名詞 天の川、ペガサス
名詞サ変 後にサ変動詞「する」を付けることができる名詞 演出-する、援助-する
名詞ザ変 後にザ変動詞「ずる」を付けることができる名詞 念-ずる、命-ずる
名詞形動 物事の姿・状態・性質などを表し、後ろに「だ」・「な」を付けることができる名詞 画期的-だ(な)、大切-だ(な)
名サ形動 名詞・サ変・形容動詞の要素を持っており、後ろに「する」・「な」を付けることができる名詞 満足-する(な)、いたずら-する(な)
数詞 数量・順序などを数えて示すことば 1、壱
副詞 主に用言(動詞・形容詞・形容動詞)を修飾することば たいへん、ゆっくり
連体詞 活用がなく、体言だけを修飾することば あの、この
接続詞 語句を続けるために使うことば そして、しかし
感動詞 感動・応答・呼びかけなどを表すことば ありがとう、やあ
独立語 助詞・助動詞が付かず他のことばとつながりを持たないことば 敬具、かしこ
接頭語 他のことばの前に付けて使うことば 御、ご、無
冠数詞 数字の前に付けて使うことば 第、午前
接尾語 他のことばの後に付けて使うことば 後、様
助数詞 数字に付けて種類や単位を表すことば 週、グラム
カ行五段 カ行の五段活用する動詞 書く、動く
ガ行五段 ガ行の五段活用する動詞 急ぐ、泳ぐ
サ行五段 サ行の五段活用する動詞 示す、消す
タ行五段 タ行の五段活用する動詞 立つ、勝つ
ナ行五段 ナ行の五段活用する動詞 死ぬ
バ行五段 バ行の五段活用する動詞 飛ぶ、遊ぶ
マ行五段 マ行の五段活用する動詞 生む、読む
ラ行五段 ラ行の五段活用する動詞 売る、走る
ワ行五段 ワ行の五段活用する動詞 会う、笑う
ハ行四段 ハ行の四段活用する動詞 言ふ、笑ふ
一段動詞 上一段、下一段活用する動詞 着る、始める
カ変動詞 カ行変格活用する動詞 来る
サ変動詞 サ行変格活用する動詞 熱する、察する
ザ変動詞 ザ行変格活用する動詞 軽んずる、甘んずる
形容詞 物事の性質・状態を表し、言い切るときの形が「い」で終わることば 美しい、広い
形容詞ウ 形容詞の中で語尾がウ音便化したときに語幹の形が変わることば 高う、長う
形容動詞 物事の性質・状態を表し、言い切るときの形が「だ」・「な」で終わることば 豊かだ(な)、うららかだ(な)
形動タリ 物事の性質・状態を表し、語尾が「と」「たる」に活用することば 燦然と(たる)、平然と(たる)
単漢字 助詞・助動詞がつかず、ほかの品詞としての要素を持たない1文字の漢字 亜、以、宇

4−10.ATOK再変換用構造体定義

再変換用のRECONVERTSTRING構造体と同じであるが、ビルドオプションに関係なく常にUnicode文字列を想定する。(長さは文字数)
typedef struct tagATRECONVERTSTRING {
  DWORD    dwSize;
  DWORD    dwVersion;
  DWORD    dwStrLen;
  DWORD    dwStrOffset;
  DWORD    dwCompStrLen;
  DWORD    dwCompStrOffset;
  DWORD    dwTargetStrLen;
  DWORD    dwTargetStrOffset;
} ATRECONVERTSTRING, *PATRECONVERTSTRING, *LPATRECONVERTSTRING;

4−11.ATOK再変換用プライベートメッセージ文字列定義

#define MSGNAME_ATOK_RECONVERT    TEXT("Atok Message for ReconvertString")

Windows98から新規に追加された再変換用のメッセージWM_IME_REQUESTに相当するものをWindows95/WindowsNT3.5以降のWindowsでも利用できるように定義したプライベートメッセージである。(メッセージIDはResisterWindowMessage(MSGNAME_ATOK_RECONVERT)により決定される。)
このため、wParam,lParamはWM_IME_REQUESTメッセージに準拠したものになる。
wParamはIMR_RECONVERTSTRING/IMR_CONFIRMRECONVERTSTRINGである。
lParamはIMR_RECONVERTSTRING/IMR_CONFIRMRECONVERTSTRINGの仕様に準拠するが、lParamに設定されるRECONVERTSTRING構造体の中身は、ビルドオプションに関係なくUnicodeを想定する。
(先のATRECONVERTSTRINGの内容と同じである。)
Windows98以前のOS上でも再変換を利用する場合には、IMEで用意される方式で実装する必要がある。
ATOKの場合、WM_IME_REQUESTで行う処理と同等のことを、このプライベートメッセージについても行えば実現できる。

4−12.ATOK MakeRead(Low)構造体定義

//構造体バッファサイズ定義
#define ATMAKEREADSTRCTR_MAX 500  //入力文字列数Max
#define ATMAKEREADREADCTR_MAX 500  //出力読み数Max
#define ATMAKEREADCLAUSESTR_MAX 500  //出力区切り数Max
#define ATMAKEREADREADBUF_MAX 512
#define ATMAKEREADCLSBUF_MAX 512

//区切り情報内容定義(AtMakeReadClsInfoの内容)
#define ATJIRITU_HINSI 1  //自立語起点

//ATOKMAKEREADLOW構造体
typedef struct {
  int    AtMakeReadReadCtr                ;// 出力読み数
  int    AtMakeReadClsCtr                ;// 出力区切り数
  int    AtMakeReadReserveAA[256-2]                ;// リザーブ

  WCHAR    AtMakeReadRead[ATMAKEREADREADBUF_MAX]                ;// 出力読みバッファ
  DWORD    AtMakeReadStrCls[ATMAKEREADCLSBUF_MAX]                ;// 出力表記区切りバッファ
  DWORD    AtMakeReadReadCls[ATMAKEREADCLSBUF_MAX]                ;// 出力読み区切りバッファ
  WORD     AtMakeReadClsInfo[ATMAKEREADCLSBUF_MAX]                ;// 出力区切り情報バッファ
  WORD     AtMakeReadClsInfoEx[ATMAKEREADCLSBUF_MAX]                ;// リザーブ
  WORD     AtMakeReadReserveXX[ATMAKEREADCLSBUF_MAX]                ;// リザーブ
  WORD     AtMakeReadReserveYY[ATMAKEREADCLSBUF_MAX]                ;// リザーブ
  WORD     AtMakeReadReserveZZ[ATMAKEREADCLSBUF_MAX]                ;// リザーブ
} ATOKMAKEREADLOW, *PATOKMAKEREADLOW, *LPATOKMAKEREADLOW;

以上


前ページ目 次



return



to topmenu

update 1998.12.2