home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 November / VPR9711A.ISO / VPR_DATA / Special / Wz30demo / wz30demo.lzh / STD / _TEXT.H < prev    next >
C/C++ Source or Header  |  1997-06-16  |  247KB  |  6,565 lines

  1. // TX object define
  2. // (c)1995-97 TY
  3. // included by WZ.EXE and TX-C
  4.  
  5. #ifndef __TEXT_H
  6. #define __TEXT_H
  7.  
  8. // extern ""する関数は、_pascalか_cdeclか明示すること!
  9. // sizeof(BOOL) == 2.
  10.  
  11. // テキストバッファの構造
  12. //    text1    空のこともありうる
  13. //    gap        最低表示行一行の最大長 + @(20位)は確保しておくこと
  14. //    text2
  15. //    LFLF    ストッパ
  16.  
  17. typedef struct tagtx tx;
  18. typedef struct tagtx TX;
  19.  
  20. //##version.h
  21.  
  22. #if 0
  23.     #define STRICT            // typecheck強化
  24.                             // これでコンパイルしたバイナリは実行できない
  25. #endif
  26.  
  27. #define __DEVDRV__            "C:"                        // 開発ドライブ
  28.  
  29. #define __WZ__                0x3002    //1.00D WZのバージョン番号
  30. #define VER_WZEDITOR        "3.00B"
  31. #define VER_WZFILER            VER_WZEDITOR
  32. #define VER_TXC                VER_WZEDITOR
  33. #define VER_WZGREP            VER_WZEDITOR
  34. #define VER_WZCONSOLE        VER_WZEDITOR
  35. // 次のバージョンの設定も忘れずに
  36. // _compile.c "TXCVERSION" __TXC__
  37. // _compile.c "TX-PCODE"
  38. // _text2.c "TX-ATRTEXT"
  39. // _undo.c "TX-UNDO"
  40. // _share.c "TX-PROJECT"
  41. // _txc2.c "TX-EXPORT"
  42. // apidb2.c "TX-APIDB"
  43. // _config.c "TX-CONFIGxxx"
  44.  
  45. // WZ2.0の機能を有効にする?
  46. #define    __WZ2__                01
  47.  
  48. #define __TXCOPTI__            0    // 埋め込み関数使用?
  49. #define __CCJAPAN__                // 日本語Cコンパイラ依存部分
  50. #define __BYTEORDERLOW__        // バイト順(low-high)に依存部分
  51. #define __SINGLETASK__            // シングルスレッド依存部分
  52. #define __ANSICODE__            // ANSI文字コード依存部分
  53. #define __END__                    // 依存部分終了
  54. #define __BINCOMPATIBLE__        // WZ16/32でバイナリコンパチ
  55.                                 // 構造体の場合、メンバの型は次の型のみ使える
  56.                                 // BYTE,WORD,DWORD,
  57.                                 // SIGNED_BYTE,SIGNED_WORD,SIGNED_DWORD,
  58.                                 // BBOOL,mchar
  59. //##base.h
  60.  
  61. #ifdef __TXC__
  62.  
  63. #pragma TXCEX+
  64.  
  65. // LPSTR等が<char>なので、漢字を扱うのが不便。
  66. // そこで<char=unsigned char>とする
  67. #pragma char=unsigned
  68.  
  69. //#ifndef ___WIN_TX_H
  70.  
  71. extern "USER.EXE" {
  72.  
  73. #define VOID                void
  74. #define PASCAL              _pascal
  75. #define CDECL               _cdecl
  76. #define FAR
  77. #define NEAR
  78. typedef int                 BOOL;
  79. #define FALSE               0
  80. #define TRUE                1
  81. typedef unsigned char       BYTE;
  82. typedef unsigned short      WORD;
  83. typedef unsigned long       DWORD;
  84. typedef unsigned int        UINT;
  85. typedef signed long         LONG;
  86. typedef int                 INT;//1.00F EXEのint型
  87.  
  88. #ifdef __FLAT__
  89.     #define MAKELONG(a, b)      ((LONG)(((WORD)(a)) | (((DWORD)((WORD)(b))) << 16)))
  90.     #define LOWORD(l)           ((WORD)(l))
  91.     #define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
  92.     #define LOBYTE(w)           ((BYTE)(w))
  93.     #define HIBYTE(w)           ((BYTE)(((WORD)(w) >> 8) & 0xFF))
  94. #else
  95.     #define MAKELONG(low,high)    ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
  96.     #define LOBYTE(w)           ((BYTE)(w))
  97.     #define HIBYTE(w)           ((BYTE)((UINT)(w) >> 8))
  98.     #define LOWORD(l)           ((WORD)(l))
  99.     #define HIWORD(l)           ((WORD)((DWORD)(l) >> 16))
  100. #endif
  101.  
  102. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  103. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  104.  
  105. typedef UINT WPARAM;
  106. typedef LONG LPARAM;
  107. typedef LONG LRESULT;
  108. #define MAKELPARAM(low, high)   ((LPARAM)MAKELONG(low, high))
  109. #define MAKELRESULT(low, high)  ((LRESULT)MAKELONG(low, high))
  110.  
  111. #ifndef NULL
  112.     #define NULL                0
  113. #endif
  114.  
  115. typedef char NEAR*          PSTR;
  116. typedef char NEAR*          NPSTR;
  117. typedef char FAR*           LPSTR;
  118. typedef const char FAR*     LPCSTR;
  119.     // LPSTR,LPCSTRはsigned charで、日本語が扱いにくいので使わない
  120. typedef BYTE NEAR*          PBYTE;
  121. typedef BYTE FAR*           LPBYTE;
  122. typedef int NEAR*           PINT;
  123. typedef int FAR*            LPINT;
  124. typedef WORD NEAR*          PWORD;
  125. typedef WORD FAR*           LPWORD;
  126. typedef long NEAR*          PLONG;
  127. typedef long FAR*           LPLONG;
  128. typedef DWORD NEAR*         PDWORD;
  129. typedef DWORD FAR*          LPDWORD;
  130. typedef void NEAR*          PVOID;//1.00F
  131. typedef void FAR*           LPVOID;
  132.  
  133. #define MAKELP(sel, off)    ((void FAR*)MAKELONG((off), (sel)))
  134. #define SELECTOROF(lp)      HIWORD(lp)
  135. #define OFFSETOF(lp)        LOWORD(lp)
  136. #define FIELDOFFSET(type, field)    ((int)(&((type NEAR*)1)->field)-1)
  137.  
  138. #ifdef __FLAT__
  139.     #ifdef STRICT
  140.     typedef void *HANDLE;
  141.     #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
  142.     #else
  143.     typedef PVOID HANDLE;
  144.     #define DECLARE_HANDLE(name) typedef HANDLE name
  145.     #endif
  146.     typedef HANDLE *PHANDLE;
  147. #else
  148.     #ifdef STRICT
  149.     typedef const void NEAR*        HANDLE;
  150.     #define DECLARE_HANDLE(name)    struct name##__ { int unused; }; \
  151.                                     typedef const struct name##__ NEAR* name
  152.     #define DECLARE_HANDLE32(name)  struct name##__ { int unused; }; \
  153.                                     typedef const struct name##__ FAR* name
  154.     #else   /* STRICT */
  155.     typedef UINT                    HANDLE;
  156.     #define DECLARE_HANDLE(name)    typedef UINT name
  157.     #define DECLARE_HANDLE32(name)  typedef DWORD name
  158.     #endif  /* !STRICT */
  159. #endif
  160.  
  161. //
  162. //    std define for Windows
  163. //
  164.  
  165. #ifdef __FLAT__
  166.     #define __stdcall _pascal
  167.     #define __import
  168.     #define WINAPI      __stdcall __import
  169.     #define CALLBACK    __stdcall
  170. #else
  171.     #define WINAPI              _pascal
  172.     #define CALLBACK            _pascal
  173. #endif
  174. DECLARE_HANDLE(HWND);
  175. DECLARE_HANDLE(HMENU);
  176. typedef int HFILE;
  177. #define HFILE_ERROR ((HFILE)-1)
  178. DECLARE_HANDLE(HGLOBAL);
  179. DECLARE_HANDLE(HINSTANCE);
  180. typedef HINSTANCE HMODULE;
  181. DECLARE_HANDLE(HBITMAP);
  182. DECLARE_HANDLE(HPEN);
  183. DECLARE_HANDLE(HBRUSH);
  184. DECLARE_HANDLE(HRGN);
  185. DECLARE_HANDLE(HPALETTE);
  186. DECLARE_HANDLE(HFONT);
  187. DECLARE_HANDLE(HICON);
  188. DECLARE_HANDLE(HDC);
  189. typedef HICON HCURSOR;
  190. typedef DWORD                COLORREF;
  191. #ifdef __FLAT__
  192.     typedef int (FAR WINAPI *FARPROC)();
  193. #else
  194.     typedef int (CALLBACK*      FARPROC)();
  195. #endif
  196. #define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  197. #ifdef __FLAT__
  198. typedef struct tagRECT {
  199.     LONG left;
  200.     LONG top;
  201.     LONG right;
  202.     LONG bottom;
  203. } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
  204. typedef struct tagPOINT {//2.94 
  205.     LONG x;
  206.     LONG y;
  207. } POINT;
  208. typedef struct tagSIZE {//2.94 
  209.     LONG cx;
  210.     LONG cy;
  211. } SIZE;
  212. #else
  213. typedef struct tagRECT {
  214.     int left;
  215.     int top;
  216.     int right;
  217.     int bottom;
  218. } RECT;
  219. typedef struct tagPOINT {//2.94 
  220.     int x;
  221.     int y;
  222. } POINT;
  223. typedef struct tagSIZE {//2.94 
  224.     int cx;
  225.     int cy;
  226. } SIZE;
  227. #endif
  228.  
  229. // Virtual key codes
  230. #define VK_BACK             0x08    // [Backspace]
  231. #define VK_TAB              0x09    // [Tab]
  232. #define VK_CLEAR            0x0C    // 
  233. #define VK_RETURN           0x0D    // [Enter]
  234. #define VK_ESCAPE           0x1B    // [Esc]
  235. #define VK_PRIOR            0x21    // [PageUp]
  236. #define VK_NEXT             0x22    // [PageDown]
  237. #define VK_END              0x23    // [End]
  238. #define VK_HOME             0x24    // [Home]
  239. #define VK_LEFT             0x25    //
  240. #define VK_UP               0x26    //
  241. #define VK_RIGHT            0x27    //
  242. #define VK_DOWN             0x28    //
  243. #define VK_INSERT           0x2D    // [Ins]
  244. #define VK_DELETE           0x2E    // [Del]
  245. #define VK_HELP             0x2F    // [Help]
  246. }
  247.  
  248. #define LF_FACESIZE            32
  249. #define IDOK                1
  250. #define IDCANCEL            2
  251. #define IDABORT                3
  252. #define IDRETRY                4
  253. #define IDIGNORE            5
  254. #define IDYES                6
  255. #define IDNO                7
  256.  
  257. //#endif// ___WIN_TX_H
  258.  
  259. // 基本型
  260. #include "base.h"
  261.  
  262. //1.91A txstrに格納できる文字数-1を返すcchtxstr(str)マクロを追加
  263. #define cchtxstr(str)    *(((WORD*)(str)) - 1)
  264.  
  265. // Windowsからコールバックされる関数
  266. #ifdef __FLAT__
  267.     #define TXCALLBACK    __stdcall
  268. #else
  269.     #define TXCALLBACK    _pascal _arg16    // ※_arg16は_pascal/_cdeclの後に指定
  270. #endif
  271.  
  272. #if __TXCOPTI__
  273.     typedef DWORD    SIZE_I;
  274.     #define DECL_I    _pascal
  275. #else
  276.     typedef WORD    SIZE_I;
  277.     #define DECL_I    _cdecl
  278. #endif
  279.  
  280. //    C std libs
  281. extern "TX" {
  282. typedef UINT size_t;    //1.00F __FLAT__対応(unsigned short -> UINT)
  283. //{#API}
  284. //{###文字列操作}
  285. //文字列の長さを数えたり、コピー、比較、走査する機能を提供します。
  286. int _cdecl _txapibase strlen(mchar *str);
  287.     // strの文字数(バイト数)を返す。漢字は2バイトとして数える。
  288.     // ヌルターミネータは数えない。
  289. pmchar _cdecl _txapibase strcpy(mchar *str1,mchar *str2);
  290.     // str1にstr2をコピー
  291.     // ※バッファの長さチェックはされない
  292. pmchar _cdecl strncpy(mchar *str1,mchar *str2,size_t len);
  293.     // str1にstr2を最大lenバイトコピー
  294.     // ※バッファの長さチェックはされない
  295. pmchar _cdecl _txapibase strcat(mchar *str1,mchar *str2);
  296.     // str1の末尾にstr2をコピーして連結
  297.     // ※バッファの長さチェックはされない
  298. pmchar _cdecl strnset(mchar *str,int ch,size_t len);
  299.     // str1の先頭からlenバイトに文字chをセット
  300.     // (len > strlen(str))なら、len = strlen(str)として実行
  301.     // ※バッファの長さチェックはされない
  302. int _cdecl _txapibase strcmp(mchar *str1,mchar *str2);
  303.     // 2つの文字列を比較
  304.     // {返り値}str1がstr2より小さい場合、負の値、
  305.     // str1がstr2と等しい場合、0、
  306.     // str1がstr2より大きい場合、正の値、を返す
  307. int _cdecl _txapibase stricmp(mchar *str1,mchar *str2);
  308.     // strcmpと同じだが、半角英大小文字は区別しないで比較
  309. int _cdecl _txapibase strncmp(mchar *str1,mchar *str2,size_t len);
  310.     // strcmpと同じだが、最大len文字まで比較
  311. int _cdecl _txapibase strnicmp(mchar *str1,mchar *str2,size_t len);
  312.     // strncmpと同じだが、半角英大小文字は区別しないで比較
  313. pmchar _cdecl _txapibase strstr(mchar *str1,mchar *str2);
  314.     // str1を調べ、str2が最初に現れる位置をポインタで返す
  315.     // 見つからなければ0を返す
  316. pmchar _cdecl _txapibase stristr(mchar *str1,mchar *str2);
  317.     // strstrと同じだが、半角英大小文字は区別しないで比較
  318. pmchar _cdecl _txapibase stristrword(mchar *str1,mchar *str2);
  319.     // stristrと同じだが、str2を単語としてstr1から検索
  320.     // 1.00Cで追加
  321. pmchar _cdecl _txapibase strchr(mchar *str1,WORD c);
  322.     // str1を調べ、文字cが最初に現れる位置をポインタで返す
  323.     // cに全角文字を指定できます
  324.     // {返り値}見つからなければ0を返す
  325. pmchar _cdecl _txapibase strichr(mchar *str1,WORD c);
  326.     // strichrと同じだが、半角英大小文字は区別しないで比較
  327. pmchar _cdecl _txapibase strchrs(mchar *str1,mchar *found);
  328.     // strchrと同じですが、found文字列の各文字のうち、
  329.     // 最初に現れる文字の位置をポインタ返します
  330.     // 見つからなければ0を返します
  331.     // foundには全角文字を含めることができます
  332. pmchar _cdecl _txapibase strupr(mchar *str);
  333.     // 文字列内の半角英小文字を大文字に変換
  334. pmchar _cdecl _txapibase strlwr(mchar *str);
  335.     // 文字列内の半角英大文字を小文字に変換
  336. long _cdecl _txapibase atoi(const mchar *str);
  337.     // 文字列を整数に変換し、結果を返す
  338.     // 文字列が次の形式の時だけ変換。そうでなければ0を返す
  339.     //  [タブ|半角スペースの並び][符号][数字]
  340.     // 認識されない文字が現れた所で変換を終了
  341.     // オーバーフローは考慮しない
  342. void vsprintf(mchar *szdst,mchar *_format,void *pparam);
  343.     // %c,%ld,%d,%u,%s,%pだけ使えるvsprintf
  344. //{###ファイル操作}
  345. int _cdecl rename(const mchar *szoldname,const mchar *sznewname);
  346.     // oldnameのファイルをnewnameにリネーム
  347.     // ドライブを指定する場合、oldとnewで同じでないといけない
  348.     // ディレクトリは同じでなくてもよい
  349.     // {返り値}成功すると0、失敗すると-1を返す
  350. int _cdecl remove(mchar *szfilename);
  351.     // ファイルを削除
  352.     // ファイルがオープンされている場合、削除する前に必ずクローズすること
  353.     // {返り値}成功すると0、失敗すると-1を返す
  354. int _cdecl mkdir(const mchar *szpath);
  355.     // ディレクトリを作成
  356.     // {返り値}成功すると0を返す
  357. int _cdecl rmdir(const mchar *szpath);
  358.     // ディレクトリを削除
  359.     // {返り値}成功すると0を返す
  360. //{###メモリ操作}
  361. LPVOID DECL_I _txapibase memcpy(void *mem1,void *mem2,SIZE_I size);
  362.     // mem2のsizeブロックを、mem1にコピー
  363.     // mem1とmem2が重複する場合の動作は未定義
  364. LPVOID _cdecl _txapibase memmove(void *mem1,void *mem2,size_t size);
  365.     // mem2のsizeブロックを、mem1にコピー
  366.     // mem1とmem2が重複していても正確に動作
  367. LPVOID _cdecl _txapibase memset(void *mem1,int c,size_t size);
  368.     // mem1のsizeバイトを、バイトデータcで埋める。
  369. int DECL_I _txapibase memcmp(void *mem1,void *mem2,SIZE_I size);
  370.     // 2つのメモリブロックの内容を比較
  371.     // {返り値}mem1がmem2より小さい場合、負の値、
  372.     // mem1がmem2と等しい場合、0、
  373.     // mem1がmem2より大きい場合、正の値、を返す
  374. LPVOID _txapibase memchr(LPVOID mem,int ch,size_t size);
  375.     // メモリブロック:mem,サイズ:sizeからchを探す。見つかればポインタを返す
  376.     // 見つからなければNULLを返す
  377.     //2.00Bで追加
  378. LPVOID _cdecl _txapibase malloc(DWORD size);
  379.     // sizeバイトのメモリブロックを確保してポインタを返す
  380. void _cdecl _txapibase free(LPVOID pmem);
  381.     // mallocで確保したメモリブロックを解放する
  382. LPVOID _cdecl _txapibase realloc(LPVOID pmem,DWORD size);
  383.     // mallocで確保したメモリブロックのサイズを変更する
  384. //{#ENDAPI}
  385. #if 0    // 未サポート
  386.     DWORD _cdecl memsize(LPVOID pmem);
  387. #endif
  388. }
  389.  
  390. #include "std.txh"
  391.  
  392. #endif// __TXC__
  393.  
  394. //1.97 
  395. typedef signed char         SIGNED_BYTE;
  396. typedef signed short        SIGNED_WORD;
  397. typedef signed long         SIGNED_DWORD;
  398.  
  399. #ifdef __TXC__
  400. extern "tx" {
  401. #endif
  402.  
  403. //##_time.h
  404.  
  405. typedef long TIME;
  406. typedef struct {
  407.     int tm_sec;        // 秒
  408.     int tm_min;        // 分
  409.     int tm_hour;    // 時(0-23)
  410.     int tm_mday;    // 月内の通し日数
  411.     int tm_mon;        // 月(0-11)
  412.     int tm_year;    // 年(西暦-1900)
  413.     int tm_wday;    // 曜日(日曜:0-土曜:6)
  414.     int tm_yday;    // 年内の通し日数
  415.     int tm_isdst;    // 0:夏時間が無効,1:有効
  416. } TM;
  417.  
  418. //{#API}
  419. //{###時間}
  420. void _cdecl timeGet(TIME *time);
  421.     // 現在時刻を整数値としてtimeに得る
  422.     //1.00CからはitimeGetNowを使って下さい。
  423. void _cdecl timeGetLocal(TM *tm,TIME *time);
  424.     // 整数値の時刻timeを、tmに変換する
  425.     //1.00CからはitimeToTmを使って下さい。
  426. //{#ENDAPI}
  427.  
  428. //##_macro.h
  429.  
  430. // コンパイラオプション
  431. // これを変更したら、config.cの"_txcConfig"と"_compile.c"の_copt、
  432. // _share.hのTXCONFIGSHAREも変更すること
  433. typedef struct __BINCOMPATIBLE__ {
  434.     DWORD sizeCode;
  435.     WORD nErrorMessage;
  436.     BBOOL fWarnFuncNotCall;
  437.     BBOOL fWarnSignMismatch;
  438.     BBOOL fWarnLoseDigit;
  439.     BBOOL fReportTxapi;
  440.     BBOOL fReportAutoDef;
  441.     BBOOL fnotxcex;
  442.     BBOOL fstdout;        //1.00Fで仕様変更 [stdoutのオープン]
  443.                         //    0:エラー時だけ
  444.                         //    1:エラー,警告
  445.                         //    2:いつも
  446.     BBOOL fautomake;    // .cをユーザが眺めてて、書き換えたりしてるうち、
  447.                         // うっかりautosaveされてしまうことがあるため
  448.     BBOOL fNoAutoDef;    //2.00B 変数の自動定義を無効にする?
  449.     BYTE reserved[19];
  450. } TXCOPTION;
  451.  
  452. // マクロ関数のアドレス構造体
  453. typedef struct {
  454.     WORD imodule;    // モジュール
  455.     DWORD address;    // アドレス (0なら、無効アドレス)
  456. } PMACROFUNC;
  457.  
  458. // exec stat
  459. typedef WORD MPEXECSTAT;
  460. #define MPEXECERR    1    // 実行できない
  461. #define    MPEXECEND    2    // 実行は終了した
  462. #define MPEXECSLEEP    3    // 実行停止中
  463. #define MPEXECNONE    4    // 実行しなかった
  464.                         // 関数が見つからなかった
  465.                         // (mpAwakeで起きなかった)
  466. #define MPEXECFORK    5    // forkした
  467.  
  468. // macro kind
  469. typedef BYTE TXPKIND;    //1.00H WORD->BYTE
  470. #define TXP_ERROR    0    // エラー
  471. #define TXP_TXM        1
  472. #define TXP_TXE        2
  473. #define TXP_TXW        3
  474. #define TXP_TLL        4
  475. #define TXP_TWA        5    //2.0
  476.  
  477. // getch
  478. #define GC_VK                0x7000U
  479. #define GC_SHIFT            0x0100U
  480. #define GC_CONTROL            0x0200U
  481. #define GC_MENU                0x0400U
  482. #define GC_ISVK(c)            (((WORD)(c) & 0xF000U) == 0x7000U)
  483. #define GC_GETVK(c)            (GC_ISVK(c) ? (c) & 0xFF : 0)
  484. #define GC_WITHSHIFT(c)        ((c) & GC_SHIFT)
  485. #define GC_WITHCONTROL(c)    ((c) & GC_CONTROL)
  486. #define GC_WITHMENU(c)        ((c) & GC_MENU)
  487. #define GCVK_LEFT            (GC_VK|VK_LEFT)
  488. #define GCVK_UP                (GC_VK|VK_UP)
  489. #define GCVK_RIGHT            (GC_VK|VK_RIGHT)
  490. #define GCVK_DOWN            (GC_VK|VK_DOWN)
  491.  
  492. #define macroFreeWndProc    macroFreeCallBackProc
  493.  
  494. //{#API}
  495. //{###マクロ}
  496. #ifdef __TXC__
  497. void _cdecl _txapibase sleep(DWORD tm);
  498.     // tmミリ秒だけマクロの実行を休んで制御を他アプリに渡します
  499.     // このAPIはWZとWZ以外の他アプリと同期を取る事を主な目的として提供されています。
  500.     // sleep中は、マクロの実行はストップし、WZのメッセージループに処理が移りますので、
  501.     // 思わぬ動作をすることがあります。
  502.     // また、sleepは、sleepを呼び出したマクロコンテキストが現在実行されているときに有効です。
  503.     // sleep中に、callなどで新しいマクロコンテキストが作られて実行されると無効になります。
  504. #endif
  505. TXCHAR _cdecl getch(void);
  506.     // キー入力を待ちます。入力されたキーを返します
  507.     // <例> (getch() == 'あ')、(getch() == ' ')、(getch() == '\r')
  508.     // 矢印キーは、GCVK_LEFT,GCVK_UP,GCVK_RIGHT,GCVK_DOWNを返します。
  509.     // その他、文字を生成しないキー入力は次のように調べます
  510.     //     c = getch();として、キー入力後、
  511.     //     GC_GETVK(c)       押されたキーのコードを返す
  512.     //                       VK_BACK    [Backspace]
  513.     //                       VK_TAB     [Tab]
  514.     //                       VK_CLEAR   
  515.     //                       VK_RETURN  [Enter]
  516.     //                       VK_ESCAPE  [Esc]
  517.     //                       VK_PRIOR   [PageUp]
  518.     //                       VK_NEXT    [PageDown]
  519.     //                       VK_END     [End]
  520.     //                       VK_HOME    [Home]
  521.     //                       VK_LEFT,VK_UP,VK_RIGHT,VK_DOWN(矢印キー)
  522.     //                       VK_INSERT  [Ins]
  523.     //                       VK_DELETE  [Del]
  524.     //                       VK_HELP    [Help]
  525.     //                       0          文字を生成するキー入力だった
  526.     //     GC_WITHSHIFT(c)   SHIFTが同時に押されていたら真
  527.     //     GC_WITHCONTROL(c) CONTROLが同時に押されていたら真
  528.     //     GC_WITHMENU(c)    MENUが同時に押されていたら真
  529.     //          ※漢字が入力されたときはSHIFTキーなどは取れません
  530.     //     GC_ISVK(c)        文字を生成しないキーなら真
  531.     //          ※BS/TAB/RETURN/ESC/^H/^I/^M/^[が入力されたときも真
  532.     // <例> 
  533.     //     c = getch();
  534.     //     if (GC_GETVK(c) == VK_INSERT) { // [Ins]キー
  535.     //         if (GC_WITHSHIFT(c)) { // SHIFTが押されている
  536. BOOL _cdecl macroHookWndBase(void);
  537.     // マクロから、WZのウィンドウ(text->wndbase)のプロシジャーをフックします。
  538.     // 成功したらTRUEを返します。
  539.     // マクロに、__wndprocbase関数がないとエラーとしてFALSEを返します
  540.     // __wndprocbaseでは、フックしたらHOOK_CAPTURE,
  541.     // しなかったらHOOK_CONTINUEを返してください
  542.     // フックした場合、WZのウィンドウプロシジャは呼ばれません
  543. BOOL _cdecl macroHookWndText(void);
  544.     // マクロから、WZのウィンドウ(text->wndtext)のプロシジャーをフックします。
  545.     // マクロに、__wndproctext関数がないとエラーとしてFALSEを返します
  546. HOOKRESULT macroHookWndBaseReturn(DWORD ret);
  547.     // __wndprocbaseで、WZのウィンドウプロシジャが返す値をretにセットします。
  548.     // __wndprocbaseで、HOOK_CAPTUREを返した場合、セットした値が返されます。
  549.     // セットが成功したらHOOK_CAPTURE、失敗したらHOOK_ERRORを返します。
  550. HOOKRESULT macroHookWndTextReturn(DWORD ret);
  551.     // __wndproctextで、WZのウィンドウプロシジャが返す値をretにセットします。
  552. BOOL _cdecl macroHookWndBaseFree(void);
  553.     // macroHookWndBaseのフックを解放します
  554.     // 成功したらTRUEを返します。
  555.     // 1.00Cで追加
  556. BOOL _cdecl macroHookWndTextFree(void);
  557.     // macroHookWndTextのフックを解放します
  558.     // 成功したらTRUEを返します。
  559.     // 1.00Cで追加
  560. FARPROC _cdecl macroMakeWndProc(mchar *szname);
  561.     // マクロのszname関数を、Windowsからコールバックされる
  562.     // sznameは大文字小文字は区別しません
  563.     // ウィンドウプロシジャーとして登録します。
  564.     // "funcname"のように指定すると、このAPIを呼び出したマクロのfuncname関数、
  565.     // "module.fumcname"のように指定すると、モジュールのfuncname関数を登録します。
  566.     // szFuncNameは"TXCALLBACK"関数として定義しないといけません。
  567.     // 成功したら関数ハンドルを返します。このハンドルをWindowsAPIに
  568.     // 渡すと、マクロの関数がコールバックされます。
  569.     // 失敗したら0を返します
  570.     // 不要になったらmacroFreeWndProcを呼び出して解放してください。
  571.     // macroMakeCallBackProcとあわせて10個までしか同時に登録できません
  572. FARPROC _cdecl macroMakeCallBackProc(mchar *szFuncName,WORD sizeArg);
  573.     // マクロのszFuncName関数を、Windowsからコールバックされる
  574.     // プロシジャーとして登録します。
  575.     // szFuncNameはmacroMakeWndProcと同じように指定します。
  576.     // sizeArgには、szFuncNameが受け取る引数のバイト数を指定します。
  577.     // 各引数を、WZ32では各4バイト、
  578.     // WZ16ではchar/int/BYTE/WORD/BOOLは2バイト、他は4バイトと数え、
  579.     // 合計します。
  580.     // 成功したら関数ハンドルを返します。このハンドルをWindowsAPIに
  581.     // 渡すと、マクロの関数がコールバックされます。
  582.     // 失敗したら0を返します
  583.     // 不要になったらmacroFreeCallBackProcを呼び出して解放してください。
  584.     // WZ32では、sizeArgには16しか指定できません。運がいいと、8か32を指定しても
  585.     // 成功することがあります。この制限はそのうち解除する予定です。
  586. void _cdecl macroFreeCallBackProc(FARPROC lpfnMacroCallBackFunc);
  587.     // macroMakeWndProc,macroMakeCallBackProcで登録した
  588.     // コールバック関数を削除します。
  589.     // 関数macroFreeWndProcを呼び出しても同じです。
  590. MPEXECSTAT _cdecl macroCall(mchar *szName,LPDWORD lpRet,WORD nArg,...);
  591.     // szNameのマクロの関数を呼び出します
  592.     // szNameは大文字小文字は区別しません
  593.     //    "launcher":launcherマクロのmain関数を呼び出す
  594.     //    "launcher.root":launcherマクロのroot関数を呼び出す
  595.     //    このように、「マクロ名.関数名」の書式で指定します。
  596.     //    マクロ名は、TX-PCODEファイルの拡張子を取り除いて指定します。
  597.     //    マクロ名を絶対パスで指定すると、そのパスだけ調べます。
  598.     //    ファイル名だけで指定すると、txpathで検索します。
  599.     // lpRetには関数の返り値の代入先を指定します。0を指定すると代入されません
  600.     // nArgには引数の個数を指定します。
  601.     // nArgに続けて、引数を指定します。引数は全て4バイトとして指定してください
  602.     // 例:macroCall("abc",0,3,(DWORD)a,(DWORD)b,(DWORD)c);
  603. BOOL macroExist(mchar *szname);
  604.     // マクロの指定関数が存在するか調べて結果を返します。
  605.     // sznameは大文字小文字は区別しません
  606.     // 例:macroExist("launcher");        //launcherマクロのmain関数があるか?
  607.     // 例:macroExist("launcher.root");    //launcherマクロのroot関数があるか?
  608. BOOL macroGetFuncAddress(mchar *szFunction,PMACROFUNC *pfunc);
  609.     // この関数を呼び出したマクロのszFunction関数のポインタを、
  610.     // pfuncに取得します。
  611.     // szFunctionは大文字小文字は区別しません
  612.     // "module.fumcname"のように指定すると、モジュールのfuncname関数のポインタを取得します
  613.     // 取得できたか返します。
  614. MPEXECSTAT _cdecl macroCallAddress(PMACROFUNC *pfunc,LPDWORD lpRet,WORD nArg,...);
  615.     // macroCallと同じですが、
  616.     // マクロ関数を、マクロ関数ポインタで指定します。
  617. MPEXECSTAT  macroCallAddressV(PMACROFUNC *pfunc,LPDWORD lpRet,WORD sizeArg,LPBYTE pArg);
  618.     // macroCallAddressと同じですが、
  619.     // 引数を、引数メモリブロックへのポインタとサイズで指定します。
  620. MPEXECSTAT macroCallStr(mchar *szNameArg,LPDWORD lpRet);
  621.     // szNameArgに呼び出すマクロ関数名と引数もまとめて指定し、呼び出します。
  622.     // マクロ関数名は大文字小文字は区別しません
  623.     //    引数は4個までです。数値または文字列を渡せます。
  624.     //    !引数チェックはしないので注意してください。引数チェックは追加する予定です。
  625.     // 数値を指定するには、そのまま記述します。-を付ければ負の値になります。
  626.     // '\'の特殊な意味を消して文字列を指定するには[]で囲みます。
  627.     // []を使うとパス名を簡単に指定できます。
  628.     // '\'の特殊な意味を消さずに文字列を指定するには{}で囲みます。
  629.     //    例:macroCallStr("module(123,{abc\n},[a:\log\nif\*.*])",0);
  630.     //    例:macroCallStr("module.funcname(123,{abc\n},[a:\log\nif\*.*])",0);
  631. LPBYTE macroGetFileName(void);
  632.     // この関数を呼び出したマクロのファイル名を、
  633.     // 拡張子は付けずにフルパスで返します
  634.     // 返された内容を変更してはいけません。
  635. BOOL macroCompile(mchar *szname);
  636.     // sznameのマクロをmakeし、コンパイルし、組み込みます
  637.     // コンパイルできたか返します
  638.     // すでに組み込まれていればコンパイルしません
  639. BOOL macroFlush(mchar *szname);
  640.     // sznameのマクロをmakeし、コンパイルします。組み込みは行いません
  641.     // コンパイルできたか返します
  642.     // すでに組み込まれていてもコンパイルします
  643.     // コンパイル中のメッセージは出しません。
  644. TXPKIND macroGetKind(mchar *szname);
  645.     // sznameのマクロの種類を返します
  646.     // マクロをロードして、判別します。
  647.     // TXP_TXM,TXP_TXE,TXP_TXW,TXP_TLLのどれかを返します。
  648.     // マクロがロードできないなど、エラーの場合は0を返します。
  649. LPVOID macroGetExport(mchar *szfilename,DWORD *size);
  650.     // szfilenameのマクロファイルの#EXPORT情報があれば、
  651.     // グローバルメモリをmemAllocして読み込んで、ポインタを返します。
  652.     // 使い終わったら、呼び出し側でmemFreeしてください。
  653.     // *sizeに#EXPORT情報のサイズを返します。
  654.     // szfilenameにはTX-PCODE形式のファイル名を拡張子も含めフルパスで指定してください。
  655.     // szfilenameのファイルを_lopenして調べます
  656.     // なければNULLを返します
  657. mchar* macroGetFuncName(mchar *szmacro,int ifunc);
  658.     // szmacroのマクロの外部にEXPORTする関数の名前を取得します
  659.     // ifuncに-1を指定すると、EXPORTする関数の数(N)を返します
  660.     // ifuncに0から(N-1)を指定すると関数名を返します
  661. mchar* macroGetFullFileName(mchar *szmacro,mchar szfilename[CCHPATHNAME]);
  662.     // sznameのマクロのファイル名を
  663.     // 拡張子(.txm,.tll,.txe)を含めてフルパスで返します
  664.     // エラーのときはszfilename[0] = 0とします。
  665. DWORD TXAPI txCall(TX* text,mchar* szApi);
  666.     // szApiにTXCMDのTXAPI(txJumpFileTop等)を指定すると、それを実行して、
  667.     // 結果を返します。
  668.     // szApiにマクロコマンド名(search.txuiSearchPrev等)を指定すると、そのマクロを
  669.     // 呼び出して結果を返します。
  670.     // いずれの場合も、引数にtext一つを取るAPI、マクだけが指定できます。
  671.     //2.98 970305 new
  672. //{#ENDAPI}
  673.  
  674. #ifndef __TXC__
  675.  
  676. int mpGetExec(void);
  677. BOOL mpIsGetch(void);
  678. BOOL mpIsFetch(void);
  679. BOOL mpIsSuspend(void);//1.01A 
  680. void mpGetch(TXCHAR wParam);
  681. MPEXECSTAT mpAwake(void);
  682. BOOL macroDump(mchar *szName);
  683. void macroFreeAll(void);
  684. void macroSavePrmAll(void);
  685. void macroLoadPrmAll(void);
  686. void *macroInit(WORD sizeusermem);
  687. BOOL macroTerm(void);
  688. void txcCloseWindow(void);
  689. BOOL macroIsCompile(mchar *szname);
  690. DWORD call(mchar *szNameArg);
  691. #ifdef __FLAT__
  692. void _cdecl itimeFromFileTime(TIME *time,FILETIME *ft);
  693. #endif
  694. #endif// __TXC__
  695.  
  696. //##_key.h
  697.  
  698. typedef WORD TXFUNC;    // function number
  699.  
  700. #define CCHKEY            20        // キーボードのキー表記を文字列で表した時の最大長
  701. #define TXK_MAXPRE    10    // 2ストロークキーMAX
  702.  
  703. //##TX key code
  704. #define TXK_NULL        0x00    // NULL
  705. #define TXK_ASCIITOP    0x01    // ASCII(0x40)
  706. #define TXK_ASCIIEND    0x20    // ASCII(0x5F)
  707. #define TXK_NUMTOP        0x21    // 2ストロークのときは,TXK_CONTROLにとって代わる
  708. #define TXK_NUMEND        0x2A    // 同上
  709. #define TXK_CONTROLTOP    0x21    // コントロールコード先頭
  710. #define TXK_RLUP        0x21    // VK_PRIOR
  711. #define TXK_RLDN        0x22    // VK_NEXT
  712. #define TXK_INS            0x23
  713. #define TXK_DEL            0x24
  714. #define TXK_UP            0x25
  715. #define TXK_LEFT        0x26
  716. #define TXK_RIGHT        0x27
  717. #define TXK_DOWN        0x28
  718. #define TXK_HOME        0x29    // VK_HOME(98:CLR)
  719. #define TXK_END            0x2A    // VK_END(98:HELP)
  720. #define TXK_ESC            0x2B
  721. #define TXK_TAB            0x2C
  722. #define TXK_BS            0x2D
  723. #define TXK_RET            0x2E
  724. #define TXK_SPACE        0x2F
  725. #define TXK_MOUSEL        0x30
  726. #define TXK_MOUSEL2        0x31
  727. #define TXK_MOUSEL3        0x32
  728. #define TXK_MOUSEL4        0x33
  729. #define TXK_MOUSER        0x34
  730. #define TXK_MOUSERCLIP    0x35
  731. #define TXK_F1            0x36
  732. #define TXK_F15            (TXK_F1 + 15 - 1)
  733. #define TXK_CONTROLEND    TXK_F15    // コントロールコードこれまで
  734. #define TXKSIZE            (TXK_CONTROLEND + 1)
  735. #define TXK_S_SHIFT                (TXKSIZE * 1)
  736. #define TXK_S_CONTROL            (TXKSIZE * 2)
  737. #define TXK_S_SHIFTCONTROL        (TXKSIZE * 3)
  738. #define TXK_S_MENU                (TXKSIZE * 4)
  739. #define TXK_S_SHIFTMENU            (TXKSIZE * 5)
  740. #define TXK_S_CONTROLMENU        (TXKSIZE * 6)
  741. #define TXK_S_SHIFTCONTROLMENU    (TXKSIZE * 7)    //1.00Cで追加
  742. #define TXK_S_PRE(i)            (TXKSIZE * 8 + (TXK_NUMEND + 1) * (i))
  743. // Shiftキーを追加したらwzkeyToSzkeyも変更すること
  744.  
  745. //##TX function code
  746. #define TXF_KEYUP            9
  747. #define TXF_KEYDOWN            10
  748.  
  749. typedef struct {
  750.     WORD iName;    // (szName)
  751.                 // tMacroNameBuffからのオフセット
  752.     WORD lchName;
  753. } MACRONAME;
  754.  
  755. typedef struct {
  756.     mchar pre[CCHKEY];
  757.     int lchpre;
  758. } PREKEY;
  759.  
  760. typedef struct {
  761.     // 2ストロークキー
  762.     int npre;
  763.     PREKEY pre[TXK_MAXPRE];
  764.     // キーに割り当てられたコマンド
  765.     WZCMD txfuncFromVzk[TXK_S_PRE(TXK_MAXPRE)];
  766. } KEY;
  767.  
  768. #ifndef __TXC__
  769.  
  770. BOOL IsIgnoreWM_CHAR(WPARAM wParam);
  771. TXFUNC txfuncFromStr(mchar *pFind,int lchFind);
  772. LPVOID txfuncGetAddress(TXFUNC hfunc);
  773. BOOL txfuncExec(tx *text,TXFUNC hfunc,int txk,int n);
  774. DWORD txfuncCall(tx *text,TXFUNC hfunc,BOOL fMacro,int nRepeat);
  775. BOOL wzkeyInit(mchar* szkey,BOOL ffirstprocess);
  776. void wzkeyTerm(void);
  777. BOOL ProcWM_KEY(tx *text,UINT message,WPARAM wParam,LPARAM lParam);
  778. void autosaveCheckAndExec(tx *text);
  779. void keyRescue(void);
  780. void keyIdle(void);
  781. MPEXECSTAT callmacro(tx *text,mchar *szfunc,DWORD *ret);
  782. void statusbarClear(TX* text);
  783.  
  784. void autosaveAddCmd(tx *text,BOOL fedit);
  785.  
  786. BOOL keymacroDoing(void);
  787. BOOL keymacroPop(void);
  788. BOOL keymacroAdd(WZCMD wzcmd);
  789.  
  790. BOOL keymacroRecording(void);
  791. BOOL keymacroExist(void);
  792. void keymacroRecord(void);
  793. BOOL keymacroStop(int txk);
  794. void keymacroPlay(tx *text);
  795. BOOL keymacroPlayStep(tx *text);
  796. void keymacroPlayContinue(tx *text);
  797.  
  798. #endif// __TXC__
  799.  
  800. //##_text.h
  801.  
  802. #define EDITORNAME        "WZ Editor"
  803.  
  804. // 基本型定義
  805. typedef DWORD    NLINE;    // 表示行番号
  806. typedef DWORD    NPARA;    // 論理行番号
  807. typedef WORD    NPAGE;    // ページ番号
  808. typedef DWORD    IFILE;    // テキストファイルインデックス
  809. typedef UINT    IMEM;    // CPUネイティブのメモリアクセスインデックス型
  810. typedef UINT    IBUFF;    // テキストバッファインデックス
  811. #ifndef __TXC__
  812.     typedef mchar * txstr;
  813. #endif
  814.  
  815. //1.90 
  816. #ifdef __FLAT__
  817.     #define IBUFF_ERROR    ((IBUFF)0xFFFFFFFFU)
  818. #else
  819.     #define IBUFF_ERROR    ((IBUFF)0xFFFFU)
  820. #endif
  821.  
  822. // 文字数定義
  823. #ifdef __FLAT__
  824.     #define CCHLINE        512U    // 表示行一行の最大文字数
  825.                                 // (\0、禁則追い出し域も含む)
  826. #else
  827.     #define CCHLINE        251U    // 表示行一行の最大文字数
  828.                                 // (\0、禁則追い出し域も含む)
  829. #endif
  830. #define CCHWORD            80        // 検索文字列サイズ(最大CCHLINE程度)
  831.                                 // 一般的な文字列の長さ
  832. #define CCHSWORD        40        // CCHWORDの半分
  833. #define CCHNAME            30        // 各種識別子
  834. #define MINWIDTH        10U        // 最小折り返し幅
  835. #define MAXWIDTH (CCHLINE-11U)    // 最大折り返し幅(禁則域は除く)
  836. #define MAXTABSIZE      64        // 最大タブサイズ
  837. #define MAXMARK            5        // 最大マーク数
  838. #define CCHMARK            40        // マーク文字列
  839. #define CCHLPSTYLE        40        // 印刷スタイル名
  840.  
  841. // テキストバッファ関連
  842. #define TEXTBUFFSIZE    65520U            //1.00F (IBUFF) -> U , 65536U-16U -> 65520U
  843.     // テキストバッファサイズ
  844.     // 16の倍数であること。最大、65536-16=65520まで。
  845.     // これはあくまで確保するサイズ。
  846.     // バッファに入っているテキストデータのバイト数は、
  847.     // tx.buffsizeに入っている。
  848. #define MAXPARASIZE        8192U            //1.00F (IBUFF) -> U
  849.     // 論理行の最大サイズの目安
  850.     // これを越える論理行も編集できるが、折り返し表示、
  851.     // 論理行頭・行末ジャンプ・削除がいい加減になる。
  852.     // 編集内容を破壊したり、飛んだりすることはない。
  853. #define STDGAPSIZE        2048U            //1.00F (IBUFF) -> U
  854.     // 最低2048、最大8192程度
  855.     // (CCHLINE * 2)より大きいこと
  856. #define STDSWAPSIZE        (TEXTBUFFSIZE / 2)
  857.     // 一度にSwapIn/Outする標準サイズ
  858.     // 最大サイズは、MAXSWAPSIZE
  859. #define MAXSWAPSIZE        (STDSWAPSIZE + MAXPARASIZE)
  860.     // 一度にSwapIn/Outする最大サイズ
  861.     // (STDSWAPSIZE + MAXPARASIZE)より大きいこと
  862. #define MAXVIEWPAGE        1024U            //1.00F U
  863.     // ViewMode時、最大(MAXVIEWPAGE * 32KB)のファイルを表示できる
  864.  
  865. //## ヒュージメモリブロック サブアロケーター
  866. //2.97 970217 start
  867.  
  868. // NULL = 0
  869. typedef WORD TYP;
  870.  
  871. #define TYPMAXBLOCKSIZE    4080
  872.  
  873. typedef struct __BINCOMPATIBLE__ {
  874.     BYTE HUGE* hpMem;    // サブアロケートに使うメモリ
  875.     DWORD cbMem;        // hpMemのサイズ
  876.     DWORD cbAllocate;    // アロケート中のメモリブロック数
  877.     TYP typFreeNext;    // 次の空きブロックへのリンク
  878. } TYMALLOC;
  879.  
  880. LPVOID typGetLP(TYMALLOC *ty,TYP typ);
  881. TYP tymalloc(TYMALLOC *ty,UINT cb);
  882. TYP typFromLP(TYMALLOC *ty,LPVOID p);
  883. BOOL tyfree(TYMALLOC* ty,TYP typ0);
  884. void tydelete(TYMALLOC* ty);
  885.  
  886. //##_word.h
  887. //##文字アトリビュート
  888.  
  889. // sizeof <= 8のこと
  890. // sizeofが変ったら、_text.hのgapCharatrを調整すること
  891. //2.97 970216 CHARATRフォーマット変更。WZ2.0の.WZファイルはコンバートが必要。
  892. typedef struct __BINCOMPATIBLE__ {
  893.     WORD fLink:1;            // CHAR_PLUGのcharatrであることを示す
  894.                             // これが真ならCHARATR_PLUG型とみなす
  895.     WORD fBold:1;
  896.     WORD fItalic:1;
  897.     WORD fUnderline:1;
  898.     WORD modeScript:2;        // (未完成) 0:標準,1:下付き,2:上付き
  899.     WORD fHide:1;            // (HTML)コメント表示(淡色表示)
  900.                             // (!HTML)隠し文字
  901.                             // 表示のみサポート
  902.                             // 折り返し位置、カーソル位置等はcharatrを参照せねばならず
  903.                             // 遅くなりそうなにでサポートしない
  904.     WORD fHottext:1;        //2.99G 970405 (HTML)ホットテキスト 下線+色分け表示
  905.     WORD fReserved:8;        // 
  906. // 境界(WZ16ではビットフィールドはUINTまで)
  907.     WORD fStrikeout:1;        // (未完成)取り消し線
  908.     WORD fFixed:1;            // (HTML)固定ピッチ (表示サポートなし)
  909.     WORD fFontsize:1;        // (HTML)文字サイズ/相対フォントサイズが指定されている? (表示サポートなし)
  910.     WORD fColor:1;            // 色が指定されている?
  911.     WORD r:4;                // red / 16        (255->15)
  912.     WORD g:4;                // green / 16    (255->15)
  913.     WORD b:4;                // blue / 16    (255->15)
  914. } CHARATR;
  915. #define CHARATR_GAP    4        //1.95 CHARATR拡張予備
  916.  
  917. //2.97 970217 CHARATR_LINKフォーマット変更
  918. typedef struct {
  919.     WORD fLink:1;            // CHAR_PLUGのcharatrであることを示す
  920.                             // これが真ならCHARATR_PLUG型とみなす
  921.     WORD fBold:1;
  922.     WORD fItalic:1;
  923.     WORD fUnderline:1;
  924.     WORD modeScript:2;        // (未完成) 0:標準,1:下付き,2:上付き
  925.     WORD fHide:1;            // (HTML)コメント表示(淡色表示)
  926.                             // (!HTML)隠し文字
  927.                             // 表示のみサポート
  928.                             // 折り返し位置、カーソル位置等はcharatrを参照せねばならず
  929.                             // 遅くなりそうなにでサポートしない
  930.     WORD fHottext:1;        //2.99G 970405 (HTML)ホットテキスト 下線+色分け表示
  931.     WORD fReserved:8;        // 
  932. // 境界(WZ16ではビットフィールドはUINTまで)
  933.     TYP ibitmap;            // typ plugatr index
  934. } CHARATR_LINK;
  935.  
  936. //2.97 970218 CHARATR_TAB,CHARATR_HR,CHARATR_BR 廃止
  937.  
  938. // 旧CHARATRメンバ
  939. //    WORD nFontSize:3;        // 文字サイズ
  940.         #define NFONTSIZE_N    7
  941. //    WORD modeFontSize:2;    // 相対フォントサイズ指定
  942.         #define FONTSIZE_ABS    0
  943.         #define FONTSIZE_PLUS    1
  944.         #define FONTSIZE_MINUS    2
  945.  
  946. //2.97 970218 charatrGetIlink,charatrGetIbitmap廃止
  947. //2.97 970218 new
  948. #define charatrGetPlug(charatr)        (((CHARATR_LINK*)(&(charatr)))->ibitmap)
  949.  
  950. //##埋め込みアトリビュート PLUGATR
  951. //2.97 970217 new
  952. // PLUGATR内に、TYPなど、ポインタを保持してはいけない。
  953. // Cut&Pasteでは、ポインタまで見ない。
  954.  
  955. //3.00B1 970609 RUBI->RUBY
  956.  
  957. typedef struct __BINCOMPATIBLE__ {
  958.     BYTE modePlug;        // プラグモード
  959.         #define PLUG_LINK            1    // ファイルリンク
  960.         #define PLUG_ANCHOR            2    // アンカー
  961.         #define PLUG_FOOTNOTE        3    // 脚注
  962.         #define PLUG_RUBY            4    // ルビ
  963.         #define PLUG_PROOF            5    // 校正
  964.         #define PLUG_OLE            6    // OLE
  965.         #define PLUG_FONT            7    // マルチフォント
  966.         #define PLUG_IMG            8    // 図
  967.         #define PLUG_IMG_LINK        9    // 図とlink
  968.         #define PLUG_HTML_TAG        10    // (HTML)タグ+アトリビュート
  969.         #define PLUG_TAB            11    // 表の縦罫線、桁揃え、小見出し
  970.         #define PLUG_HR                12    // 水平線
  971.     TYP typWork;        // 内部ワーク
  972.     BYTE reserved[8];
  973. } PLUGHEAD;
  974.  
  975. typedef struct __BINCOMPATIBLE__ {
  976.     PLUGHEAD head;
  977.     mchar szfilename[CCHPATHNAME32];    // リンク先のファイル名
  978.     mchar szCaption[CCHWORD];            // 表示文字列
  979. } PLUGLINK;
  980.  
  981. typedef struct __BINCOMPATIBLE__ {
  982.     PLUGHEAD head;
  983.     WORD number;            // 脚注番号
  984.     WORD cchFootnoteAlloc;    // szFootnoteのサイズ-1
  985.     WORD lchFootnote;        // 脚注の長さ
  986.     mchar szFootnote[1];    // 脚注の内容
  987. } PLUGFOOTNOTE;
  988.  
  989. typedef struct __BINCOMPATIBLE__ {
  990.     PLUGHEAD head;
  991.     mchar szTarget[CCHWORD];    // ルビ対象文字列
  992.     mchar szRuby[CCHWORD];        // ルビ文字列
  993. } PLUGRUBY;
  994.  
  995. //2.99 970312 PLUGPROOFのフォーマット変更
  996. typedef struct __BINCOMPATIBLE__ {
  997.     PLUGHEAD head;
  998.     mchar szReader[CCHSWORD];    // 校正者
  999.     //
  1000.     WORD ichProof;                // szTarget_szProofのszProof開始位置
  1001.     WORD cchProofAlloc;            // szTagのサイズ-1
  1002.     mchar szTarget_szProof[1];    // 校正の内容(szTarget:校正対象文字列,szProof:校正内容文字列)
  1003. } PLUGPROOF;
  1004.  
  1005. #define CCHSTORAGE    32    // STORAGE/STREAM名
  1006. typedef struct __BINCOMPATIBLE__ {
  1007.     PLUGHEAD head;
  1008.     mchar szname[CCHPATHNAME32];// DOCファイルの中のオブジェクトSTORAGE名
  1009. // 以下、"非"永続項目
  1010.     #ifdef __OLECPP__
  1011.     LPSTORAGE pIStorageObject;    // sznameのストレージオブジェクト
  1012.     PBox pBox;                    // コンテナC++オブジェクト
  1013.     #else
  1014.     LPVOID pIStorageObject;
  1015.     LPVOID pBox;
  1016.     #endif
  1017. // 以下、一時作業用
  1018.     LPVOID tmp1;
  1019.     LPVOID tmp2;
  1020. } PLUGOLE;
  1021.  
  1022. typedef struct __BINCOMPATIBLE__ {
  1023.     PLUGHEAD head;
  1024.     mchar lfFaceName[LF_FACESIZE];    // フォント名
  1025.     WORD lfHeight;                    // フォントサイズ
  1026.     mchar szStr[CCHWORD];            // このフォントで表示する文字列
  1027. } PLUGFONT;
  1028.  
  1029. typedef struct __BINCOMPATIBLE__ {
  1030.     WORD cx;            // 幅
  1031.     WORD cy;            // 高さ
  1032.     SIGNED_WORD width;    // atr WIDTH
  1033.                         // 負の値の時は、%指定。0はデフォルト
  1034.     SIGNED_WORD height;    // atr HEIGHT
  1035.                         // 負の値の時は、%指定。0はデフォルト
  1036.     BYTE fWidthOriginal;// 図のオリジナルサイズを使う?
  1037.     BYTE modeAlign;        // atr ALIGN
  1038.     WORD hspace;        // atr HSPACE
  1039.     WORD vspace;        // atr VSPACE
  1040.     BYTE border;        // atr BORDER
  1041.     mchar szAlt[CCHWORD];                // atr ALT
  1042.     BYTE reserved[16];
  1043. } PLUGIMGATR;
  1044.  
  1045. typedef struct __BINCOMPATIBLE__ {
  1046.     PLUGHEAD head;
  1047.     PLUGIMGATR atr;
  1048.     mchar szfilename[CCHPATHNAME32];    // 図のファイル名
  1049.     // HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
  1050.     WORD cchTagAlloc;        // szTagのサイズ-1
  1051.     mchar szTag[1];            // タグの内容
  1052. } PLUGIMG;
  1053.  
  1054. typedef struct __BINCOMPATIBLE__ {
  1055.     PLUGHEAD head;
  1056.     PLUGIMGATR atr;
  1057.     mchar szfilename[CCHPATHNAME32];    // 図のファイル名
  1058. // 以上のメンバはPLUGIMGと同じ
  1059.     mchar szlink[CCHPATHNAME32];        // リンク先のファイル名
  1060.     // HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
  1061.     WORD cchTagAlloc;        // szTagのサイズ-1
  1062.     mchar szTag[1];            // タグの内容
  1063. } PLUGIMG_LINK;
  1064.  
  1065. typedef struct __BINCOMPATIBLE__ {
  1066.     PLUGHEAD head;
  1067.     WORD tag;                // タグID
  1068.     BYTE fTagTop;            // 開始タグ?
  1069.     // HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
  1070.     WORD cchTagAlloc;        // szTagのサイズ-1
  1071.     mchar szTag[1];            // タグの内容
  1072. } PLUGHTMLTAG;
  1073.  
  1074. typedef struct __BINCOMPATIBLE__ {
  1075.     PLUGHEAD head;
  1076.     BYTE modeTab;
  1077.         #define MODETAB_TABLE        1    // 表
  1078.         #define MODETAB_BEAMTAB        2    // 桁揃え,行に1つの場合は小見出し
  1079.     BYTE modeAlign;            // セルデータの配置
  1080.                             // ALIGN_LEFT,ALIGN_CENTER,ALIGN_RIGHTのみ有効
  1081.     BYTE modeAlignV;        // セルデータの縦配置
  1082.                             // 表示には反映されない
  1083.     BYTE fSpanClm;            // 列にまたがる(未完成)
  1084.     BYTE fSpanRow;            // 行にまたがる(未完成)
  1085.     BYTE fHead;                // 見出し?
  1086.     BYTE modeSepaLeft;        // TAB位置に描画するセパレータの種類
  1087.         #define MODESEPA_NONE    0    // なし
  1088.         #define MODESEPA_STD    1    // 標準線
  1089.         #define MODESEPA_BOLD    2    // 太線
  1090.         #define MODESEPA_DOT    3    // 点線
  1091.     BYTE modeSepaBottom;
  1092.     // 内部情報
  1093.     SIGNED_WORD cxIndent;    // タブ位置から、文字表示位置までの幅
  1094.                             // セル内の文字列の中央寄せ、右寄せを実現
  1095.                             // 詳細モードでもMM_TEXT座標
  1096.     SIGNED_WORD xTab;        // タブ位置(MM_TEXT座標)
  1097.     SIGNED_WORD lpxTab;        //2.99C 970325 タブ位置(プリンタ座標)
  1098.     //
  1099.     WORD fTagEnd:1;
  1100.     WORD fOriginalDesignate:1;    //2.99E 970402 もともとのHTMLファイルに存在したタグ?
  1101.     WORD fReserved:14;
  1102.     // HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
  1103.     WORD cchTagAlloc;        // szTagのサイズ-1
  1104.     mchar szTag[1];            // タグの内容
  1105. } PLUGTAB;
  1106.  
  1107. typedef struct {
  1108.     PLUGHEAD head;
  1109.     WORD width;                // 幅
  1110.     WORD height;            // 高さ
  1111.     BYTE modeAlign;            // 配置
  1112.     BYTE fNoShade;            // 平面的?
  1113.     // HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
  1114.     WORD cchTagAlloc;        // szTagのサイズ-1
  1115.     mchar szTag[1];            // タグの内容
  1116. } PLUGHR;
  1117.  
  1118. //2.97A 970302 LINKATR,LINKATR_TAB廃止
  1119.  
  1120. //##論理行アトリビュート
  1121. // PARAATRではページの切れ目は保持できない。段落の途中でページが切れたら対応できない。
  1122. //1.99D 箇条書き関係全面変更
  1123.  
  1124. #define NESTARTICLE_N    7    // 箇条書きの最大ネスト数
  1125. #define LCXINDENT_STD    4    // 箇条書きなどの標準インデント数
  1126.  
  1127. // sizeof <= 16のこと
  1128. typedef struct __BINCOMPATIBLE__ {
  1129.     WORD lcxIndent:6;            // インデント数(0-63)
  1130.         #define LCXINDENT_MAX    63
  1131.     WORD lcxIndentTop:6;        // 先頭行のインデント数(0-63)
  1132.                                 //2.93 サポート
  1133.     WORD modeDefine:2;            // TAG_DT/TAG_DD
  1134.         #define DEFINE_DT        1
  1135.         #define DEFINE_DD        2
  1136.     WORD modeDL:2;                // TAG_DL
  1137.         #define DL_NORMAL        1
  1138.         #define DL_COMPACT        2
  1139. // 境界(WZ16ではビットフィールドはUINTまで)
  1140.     WORD lcxIndentRight:6;        // 右インデント数(0-63)
  1141.         #define LCXINDENTRIGHT_MAX    63
  1142.     WORD fArticle:1;            // バレットが付いている段落?
  1143.                                 // fReturnLineの場合は、段落内改行の各行にも
  1144.                                 // 同じ値をセットすること
  1145.     WORD modeArticle:4;            // バレットのモード
  1146.         #define ARTICLE_NONE    0
  1147.         #define ARTICLE_DISC    1
  1148.         #define ARTICLE_CIRCLE    2
  1149.         #define ARTICLE_SQUARE    3
  1150.         #define ARTICLE_NOTICE    4    //1.93  [※]記号
  1151.         #define ARTICLE_AUTO    5    //1.99E 字下げに合わせて自動変化
  1152.         #define ARTICLE_ALL        6    //1.99E 全て[・]
  1153.         #define ARTICLE_NUMBER    11
  1154.         #define ARTICLE_I        12
  1155.         #define ARTICLE_i        13
  1156.         #define ARTICLE_A        14
  1157.         #define ARTICLE_a        15
  1158.     WORD nArticle:4;            // 箇条書きの番号の指定(0-15)
  1159.         #define NARTICLE_N        15
  1160.     WORD fReturnLine:1;            // この行は、段落内改行か?
  1161.                                 // 改段ではない。改行と改段を区別しないと、
  1162.                                 // 箇条書きの途中で、行を改めたいときなどに困る。
  1163. // 境界(WZ16ではビットフィールドはUINTまで)
  1164.     WORD modeTitle:3;            // 見出し(0:なし)
  1165.     WORD modeLineInt:3;            // 行間
  1166.         #define LINEINT_NORMAL        0    // 普通
  1167.         #define LINEINT_HALF        1    // 1/2空ける
  1168.         #define LINEINT_LINE        2    // 1行空ける
  1169.         #define LINEINT_LINETOPEND    3    // 頭に1行、お尻に1行空ける
  1170.         #define LINEINT_LINETOP        4    // 頭に1行空ける
  1171.         #define LINEINT_LINEEND        5    // お尻に1行空ける
  1172.     WORD modeAlign:3;            // 文字揃え
  1173.     WORD fPre:1;                // TAG_PRE
  1174.     WORD lplcxIndentHead:6;        //2.99C 970325 (内部情報)小見出しのインデント幅(プリンタ座標)
  1175. // 境界(WZ16ではビットフィールドはUINTまで)
  1176.     WORD fReservedItable:3;        //2.98 970304 fTab,itable廃止
  1177.     WORD fReturnFF:1;            //2.98 970308 この行の行末は、改ページか?
  1178.     WORD fEdited:1;                //2.98 970304 編集が加えられた?
  1179.     WORD fTableTop:1;            //2.97 970216 (内部情報)表の開始行?
  1180.     WORD fTableTail:1;            //2.97 970217 (内部情報)表の終了行?
  1181.     WORD lcxIndentHead:6;        //2.97 970216 (内部情報)小見出しのインデント幅
  1182.     WORD modeTab:2;                //2.97 970216 (内部情報)same PLUGTAB modeTab
  1183.     WORD fBodyTop:1;            //2.97A 970227 本文の先頭行?
  1184. } PARAATR;
  1185. #define PARAATR_GAP    8        //1.95 PARAATR拡張予備
  1186.  
  1187. //2.98 970304 テキストモードのparaatr
  1188. typedef struct __BINCOMPATIBLE__ {
  1189.     BYTE fEdited:1;                //2.98 970304 編集が加えられた?
  1190.     BYTE fReserved:7;
  1191. } PARAATR_TEXT;
  1192.  
  1193. //3.00B1 970521 
  1194. typedef struct {
  1195.     PARAATR_TEXT HUGE * buff;    // PARAATR_TEXT buff
  1196.     NPARA cur0;                    // gap start
  1197.     NPARA cur;                    // gap end + 1
  1198.     NPARA size;                    // buff size
  1199. } PARAATR_TEXT_CONTEXT;
  1200.  
  1201. //1.95 見出しスタイル
  1202. typedef struct {
  1203.     WORD modeAlign:3;
  1204.     WORD fBold:1;
  1205.     WORD fItalic:1;
  1206.     WORD fUnderline:1;
  1207.     WORD reserved:10;
  1208. } HEADSTYLE;
  1209.  
  1210. #define paraatrIsTable(paraatr)    ((paraatr)->itable)
  1211.  
  1212. //2.90 拡張 paraatr
  1213.  
  1214. typedef struct __BINCOMPATIBLE__ {
  1215.     mchar szArticle[CCHSWORD];    // 見出し文字列
  1216.     SIGNED_WORD lchArticle;        // 0なら無効
  1217.     SIGNED_WORD cxArticle;
  1218.     WORD fArticleNum:1;            // szArticleは番号付きか?
  1219.     WORD fArticleSub:1;            // szArticleは小見出しか?
  1220.     WORD fReserved:14;
  1221.     SIGNED_WORD nArticle;        // 先頭番号(0なら番号指定なし)
  1222.     SIGNED_WORD ichNum;            // szArticleの番号のオフセット
  1223.                                 // -1なら番号なし
  1224.     SIGNED_WORD lchNum;            // szArticleの番号の長さ
  1225. } PARAFORM_ARTICLE;
  1226.  
  1227. typedef struct __BINCOMPATIBLE__ {
  1228.     PARAFORM_ARTICLE article;
  1229.     mchar szLinetop[CCHSWORD];
  1230.     SIGNED_WORD lchLinetop;
  1231.     // szLinetop等を除く本文のインデント数
  1232.     BYTE lcxIndent;                // インデント数(0-255)
  1233.     BYTE lcxIndentTop;            // 先頭行のインデント数(0-255)
  1234. } PARAATR2;
  1235.  
  1236. //1.91A 
  1237. //##ページアトリビュート
  1238. typedef struct {
  1239.     IFILE address;            // ページ先頭のaddress
  1240.     WORD lpy;
  1241.     WORD nlineByPage:8;
  1242.     WORD fFF:1;                // 前ページの終わりは改ページコード?
  1243.     WORD reserved:7;
  1244. } PAGEATR;
  1245.  
  1246. // HTML,タグ
  1247.  
  1248. #define TAG_TOP            0    // WZ work
  1249. #define TAG_END            1    // WZ work
  1250. #define CCHTAG            30    // タグ最大文字数+1
  1251. //
  1252. #define TAG_NULL        0    // WZ work
  1253. #define TAG_H            1
  1254. #define TAG_UL            2
  1255. #define TAG_LI            3
  1256. #define TAG_B            4    // TAG_B - TAG_U 連続していること
  1257. #define TAG_I            5
  1258. #define TAG_U            6
  1259. #define TAG_TT            7
  1260. //#define TAG_S            8
  1261. #define TAG_STRONG        9
  1262. #define TAG_EM            10
  1263. #define TAG_CITE        11
  1264. #define TAG_CODE        12
  1265. #define TAG_KBD            13
  1266. #define TAG_SAMP        14
  1267. #define TAG_VAR            15
  1268. #define TAG_SUB            16
  1269. #define TAG_SUP            17
  1270. //#define TAG_BLINK        18
  1271. #define TAG_BR            20
  1272. #define TAG_P            21
  1273. #define TAG_HR            22
  1274. #define TAG_PRE            23
  1275. //#define TAG_NOBR        24
  1276. //#define TAG_WBR        25
  1277. #define TAG_FONT        26
  1278. #define TAG_BASEFONT    27
  1279. #define TAG_OL            28
  1280. //#define TAG_MENU        29
  1281. //#define TAG_DIR        30
  1282. #define TAG_DT            31
  1283. #define TAG_DD            32
  1284. #define TAG_DL            33
  1285. #define TAG_BLOCKQUOTE    34
  1286. #define TAG_LINK        35
  1287. #define TAG_IMG            36
  1288. #define TAG_HTML        37
  1289. #define TAG_HEAD        38
  1290. #define TAG_TITLE        39
  1291. #define TAG_BODY        40
  1292. #define TAG_ADDRESS        41
  1293. #define TAG_COMMENT        42    // <!-- ... -->
  1294. #define TAG_TABLE        43
  1295. #define TAG_TD            44
  1296. #define TAG_TR            45
  1297. #define TAG_TH            46
  1298. #define TAG_CAPTION        47
  1299. #define TAG_LEFT        48    // WZ TAG_LEFT - TAG_JUST は連続していること
  1300. #define TAG_CENTER        49
  1301. #define TAG_RIGHT        50    // WZ
  1302. #define TAG_JUST        51    // WZ
  1303. #define TAG_LINUM        52    // WZ
  1304. #define TAG_INDENT        53    // WZ
  1305.                             // <INDENT>:左インデント=4,右インデント=0
  1306.                             // <INDENT LEFT=10>:左インデント=10,右インデント=0
  1307.                             // <INDENT RIGHT=10>:左インデント=4,右インデント=10
  1308.                             // <INDENT TOP = 2>:左インデント=4,右インデント=0,先頭行左インデント=2
  1309.                             // </INDENT>:インデントなし
  1310. #define TAG_FORMFEED    54    // WZ
  1311. #define TAG_TEXTATR        55    // WZ
  1312. #define TAG_TAB            56    // WZ
  1313. #define TAG_LINOTICE    57    // WZ
  1314. #define TAG_CLEAR        58    // WZ
  1315. #define TAG_SELECT        59    //2.99 970319 
  1316. #define TAG_OPTION        60    //2.99 970319 
  1317. #define TAG_FRAME        61    //2.99 970320 
  1318. #define TAG_FRAMESET    62    //2.99 970320 
  1319. #define TAG_SCRIPT        63    //2.99C 970326 
  1320. #define TAG_MAP            64    //2.99C 970326 
  1321. #define TAG_AREA        65    //2.99C 970326 
  1322. #define TAG_IECOMMENT    66    //2.99C 970326 <COMMENT>-</COMMENT>
  1323. #define TAG_OBJECT        67    //2.99C 970326 
  1324. #define TAG_APPLET        68    //2.99C 970326 
  1325. #define TAG_PARAM        69    //2.99C 970326 
  1326. #define TAG_COL            70    //2.99C 970326 
  1327. #define TAG_COLGROUP    71    //2.99C 970326 
  1328. #define TAG_NOFRAME        72    //2.99C 970326 
  1329. #define TAG_IFRAME        73    //2.99C 970326 
  1330. #define TAG_DIV            74    //2.99C 970326 
  1331. #define TAG_N            75    // 総タグ数(タグを増やしたら、総タグ数も増やすこと)
  1332. // (charatr.tagの制限)255種類まで
  1333. // 以下、ワーク用のタグ            // WZ work
  1334. #define TAG_INDENTADD    300
  1335. #define TAG_DEFINECLEAR    301
  1336. #define TAG_DTDD        302
  1337. #define TAG_ANCHOR        303
  1338. #define TAG_COLOR        304    //2.00E4 
  1339. #define TAG_VBSCRIPT    305    //2.97 970223 
  1340. #define TAG_SUBHEAD        306    //2.97 970224 小見出し
  1341. #define TAG_FOOTNOTE    307    //2.98 970305 
  1342. #define TAG_RUBY        308    //2.98 970305 
  1343. #define TAG_PROOF        309    //2.98 970305 
  1344. #define TAG_SEPARATOR    310    //2.98 970305 
  1345.  
  1346. // align(3bit)
  1347. #define ALIGN_NONE        0    // なし
  1348. #define ALIGN_LEFT        1    // 左揃え
  1349. #define ALIGN_CENTER    2    // 中央寄せ
  1350. #define ALIGN_RIGHT        3    // 右揃え
  1351. #define ALIGN_JUST        4    // 両端揃え
  1352. #define ALIGN_TOP        5
  1353. #define ALIGN_BOTTOM    6
  1354. #define ALIGN_ALL        7
  1355.  
  1356. //2.98 970304 
  1357. #ifdef __FLAT__
  1358.     #define SZHTMLMASK    "*.htm*"
  1359. #else
  1360.     #define SZHTMLMASK    "*.htm"
  1361. #endif
  1362.  
  1363. //##API
  1364.  
  1365. #ifndef __TXC__
  1366. BOOL TXAPI wordInit(tx* text);
  1367. void wordTerm(tx* text);
  1368. #endif
  1369.  
  1370. #ifndef __TXC__
  1371. extern CHARATR charatrNull;
  1372. CHARATR TXAPI echaratrRead(tx* text,IFILE address);
  1373. BOOL TXAPI echaratrWrite(tx* text,IFILE address,CHARATR charatr);
  1374. BOOL charatrInsert(tx* text,IFILE address,IMEM chars);
  1375. BOOL charatrDelete(tx* text,IFILE address,IFILE chars);
  1376. #endif
  1377. BOOL TXAPI charatrRead(tx* text,IFILE address,CHARATR* charatr);
  1378. BOOL TXAPI charatrWrite(tx* text,IFILE address,CHARATR* charatr);
  1379.  
  1380. #ifndef __TXC__
  1381. extern PARAATR paraatrNull;
  1382. PARAATR TXAPI eparaatrRead(tx* text,NLINE npara);
  1383. BOOL TXAPI eparaatrWrite(tx* text,NLINE npara,PARAATR paraatr);
  1384. BOOL paraatrInsert(tx* text,NLINE npara,IMEM nLf);
  1385. BOOL paraatrDelete(tx* text,NLINE npara,IMEM nLf);
  1386. #endif
  1387. BOOL TXAPI paraatrRead(tx* text,NLINE npara,PARAATR* paraatr);
  1388. BOOL TXAPI paraatrWrite(tx* text,NLINE npara,PARAATR* paraatr);
  1389. BOOL TXAPI paraatrText(tx* text,PARAATR* paraatr,BOOL fWrite,BOOL fDeleteOld);
  1390.  
  1391. BOOL TXAPI txCharatrSet(tx *text,int tag,LPVOID arg);
  1392. BOOL TXAPI txParaatrSet(tx *text,int tag,PARAATR* arg);
  1393. int TXAPI txParaatrRead(tx *text,PARAATR* arg,int* pLen);//1.93 
  1394. BOOL TXAPI txParaatrWrite(tx *text,PARAATR* arg);//1.93 
  1395. BOOL TXAPI txSetEditmode(tx* text,int editmode);
  1396.  
  1397. //##クリップボードハンドル
  1398. typedef UINT HCLIP;                    //1.00H2 HWND->UINT //1.00F WORD->HWND
  1399. #define HCLIP_ERROR        ((HCLIP)999)//2.00E HCLIP_NULLは廃止
  1400. #define HCLIP_PRIVATE    ((HCLIP)0)    //2.00Eで追加 プライベートテキストスタック(プロセス固有)
  1401.                                     // WZ32はマルチタスクなので、HCLIP_TSは他のWZのタスク
  1402.                                     // と干渉します。
  1403.                                     // スタックにPushしてPopする前に
  1404.                                     // 他のWZがスタックを操作してしまうかもしれません。
  1405.                                     // HCLIP_PRIVATEは他のWZとのデータ交換には使えない
  1406.                                     // 代わりに他のWZのタスクと干渉しません
  1407. #define HCLIP_TS        ((HCLIP)1)    // テキストスタック
  1408. #define HCLIP_DELSTR    ((HCLIP)2)    // 削除文字列バッファ
  1409. #define HCLIP_WORK        ((HCLIP)3)    // ワークバッファ1
  1410.                                     // 多重化起動時、世代ロード時にWZが内部で使用します
  1411.                                     // それ以外のときは、自由に使えます
  1412. #define HCLIP_WORK2        ((HCLIP)4)    // ワークバッファ2
  1413.                                     // WZが内部で使用します。マクロでは使えません
  1414.                                     // 多重化時の、挿入されたテキストデータの
  1415.                                     // 受け渡しに使用
  1416.                                     // 多重化起動時、世代ロード時にも使用
  1417. #define HCLIP_WORK3        ((HCLIP)5)    // ワークバッファ3
  1418.                                     // WZが内部で使用します。マクロでは使えません
  1419.                                     // 多粛化起動時、世代ロード時にも使用
  1420. #define HCLIP_TXATR1    ((HCLIP)6)    //1.99C CHARATR,PARAATR,PLUGATR
  1421.                                     // テキストからクリップボードやテキストスタックにコピーした場合に、
  1422.                                     // 文字装飾や書式データはここに入ります。
  1423.                                     // スタックにはなっていませんが、
  1424.                                     // HCLIP_TXATR1,HCLIP_TXATR2,HCLIP_TXATR3のトリオを
  1425.                                     // スタックの様に使います。
  1426. #define HCLIP_TXATR2    ((HCLIP)7)    //1.99C CHARATR,PARAATR,PLUGATR
  1427. #define HCLIP_TXATR3    ((HCLIP)8)    //1.99C CHARATR,PARAATR,PLUGATR
  1428. #define HCLIP_TXATRP    ((HCLIP)9)    //2.00Eで追加 HCLIP_PRIVATE用HCLIP_TXATR
  1429.                                     // テキストをHCLIP_PRIVATEにコピーした場合は、
  1430.                                     // 文字装飾や書式データはここに入ります。
  1431.                                     // スタックにはなっていません。
  1432. #define NCLIPINTERNAL    10            // TSの数
  1433.                                     // 変更したら_share.c "_ts["も変更すること!
  1434. #define HCLIP_WIN        ((HCLIP)10)    // Windowsクリップボード
  1435.                                     // ここでは0x00を含むバイナリデータは扱えない
  1436.                                     // HCLIP_WORKxxxでは扱える
  1437. #define HCLIP_MEM        ((HCLIP)11)    // メモリクリップ
  1438.                                     // WZが内部で使用します。マクロでは使えません
  1439. #define NCLIP            12            //1.00F HCLIP_WIN,MEMも含めWZでサポートするクリップ数
  1440.  
  1441. //##ツールバー
  1442.  
  1443. #define TXTOOLBAR_N        40
  1444. #define TOOLBAR_ICONSTR    20000
  1445. typedef struct {
  1446.     WZCMD wzcmd;                    // コマンド
  1447.     mchar szcaption[CCHWORD];        // ステータスバーに出す説明
  1448.     mchar sztip[CCHSWORD];            // チップヘルプ
  1449.                                     // 現在はszcaptionで代用
  1450.     mchar sziconfilename[CCHWORD];    // このファイルからアイコンをロード
  1451.                                     // iiconがTOOLBAR_ICONSTRなら、
  1452.                                     // sziconnameで文字列ボタンとして表示
  1453.     short int iicon;                // ファイルのiicon番目のアイコンをロード
  1454.     BYTE fSelAble:1;                // 選択可能?
  1455.     BYTE fReduce:1;                    // 1/4に縮小?
  1456.     BYTE fCheck:1;                    // チェックボックススタイルのボタン
  1457.     BYTE fChecked:1;                // 押し込まれている
  1458.     BYTE fDrag:1;                    // ボタンを離さなくてもコマンド発生
  1459. } TXTOOLBAR;
  1460.  
  1461. //1.95 フォントのスタイル
  1462. #define IFONT_STD    0    // 標準フォント
  1463. #define IFONT_ANK    1    // ANKフォント(無指定ならIFONT_STDを使用)
  1464. #define IFONT_N        2    // 個数
  1465. //2.96 970208
  1466. // IFONT_ANK2,3を使ってマルチフォント対応実験をしてみた。
  1467. // 表示はなんとかOKなものの、折り返し幅計算は文字コードだけを使っていて、
  1468. // charatrを見るとなるとコスト高になるので止めた。
  1469. typedef struct __BINCOMPATIBLE__ {
  1470.     UCHAR tlfFaceName[IFONT_N][LF_FACESIZE];
  1471.                                 // フォント名
  1472.     BYTE tlfHeight[IFONT_N];    // ポイント数
  1473.     WORD perNline;                // 行どり(%)
  1474.                                 // modeAlignから始まるbitfieldの先頭にあること
  1475.                                 // テキストファイル埋め込み時は次のbitfieldをWORD値として
  1476.                                 // 扱っているため
  1477.     WORD modeAlign:3;            // 配置 ALIGN_XXX
  1478.     WORD fBold:1;
  1479.     WORD fItalic:1;
  1480.     WORD fUnderline:1;
  1481.     WORD fStrikeout:1;
  1482.     WORD reservedB:9;            // これやんなんとTC++ではBYTEのビットフィールド、
  1483.                                 // TX-CではWORDのビットフィールドになっちゃう
  1484.     COLORREF rgcColor;            // 色
  1485.     BYTE reserved[32];            // 余裕
  1486. } FONTSTYLE;
  1487. #define SIZE_TFONTSTYLE        (sizeof(FONTSTYLE) * FONTTX_N)
  1488. #define fontstyleFromItitle(text,ititle)    \
  1489.                             (&(text)->tFontstyle[(ititle) + FONTTX_H1])
  1490. #define itxfontFromItitle(ititle)    \
  1491.                             (FONTTX_H1 + ititle)
  1492.  
  1493. //1.99H dialog.tll font select fontname context
  1494. #define NFONT_MAX    1000
  1495. typedef struct {
  1496.     WORD nFont;    // 数
  1497.     mchar tFontName[NFONT_MAX][LF_FACESIZE];
  1498.     BYTE lfPitch;    // PitchAndFamily
  1499.     BYTE lfCharSet;    // lfCharSet
  1500.     WORD fPrinterFont:1;    // プリンタフォントの取得中
  1501.     WORD fPrinterFontOnly:1;
  1502.     WORD freserved:14;
  1503.     HDC hdcPrinter;
  1504. } FONTNAMES;
  1505.  
  1506. //##フォントハンドラ
  1507. // used WZ.EXE,filer.txe
  1508. typedef struct {
  1509.     FONTSTYLE fs;                // フォントスタイル
  1510. // fsに対する内部情報
  1511.     HFONT hfont[IFONT_N];        // 必ず内部情報の先頭のメンバであること
  1512.     BYTE lfProp[IFONT_N];
  1513.     int cyChar;                    // 高さ
  1514.     int cyBase;                    //2.96 970209 ベースラインまでの高さ
  1515.     int cxChar;                    // 基準幅(半角)
  1516.     int cxCharMax;                // 最大幅
  1517.     int lpcyChar;                // (printer)高さ
  1518.     int lpcxChar;                // (printer)基準幅(半角)
  1519.     int tcxCharAve[IFONT_N];    //1.99F 平均幅
  1520.     int tcyChar[IFONT_N];        //
  1521.     int tcyAscent[IFONT_N];        // 
  1522.     int tcyDescent[IFONT_N];    // 
  1523.     int tlpcyDescent[IFONT_N];    // (printer)
  1524.     int tdyAscent[IFONT_N];        // 行頭からフォントyTopまでの高さ
  1525.     int tdyDescent[IFONT_N];    // フォントyEnd+1からcyCharまでの高さ
  1526.     int nline;                    // 本文フォントを基準1とした整数倍の高さ
  1527.     LPBYTE tcxChar;                // 幅
  1528.     LPBYTE tlpcxChar;            // (printer)幅
  1529.     BYTE fKanji[IFONT_N];        //2.00E2 漢字フォントか?
  1530.     WORD fWesternWordlap:1;        //2.00E4 欧文禁則(アクセント付き文字の禁則)実行?
  1531.     WORD lfWestern:1;            //2.96 970208 欧文フォント?
  1532.     WORD fReserved:14;
  1533.     BYTE reservedI[28];            // 余裕
  1534. } FONTTX;
  1535. //
  1536. #define FONTTX_TEXT        0    // text/fast modeのフォント
  1537. // 以下、print modeのフォント
  1538. // レターヘッダ/フッタは、本文と同じ様にWZのファイルとして作成し、挿入する形とする
  1539. #define FONTTX_BODY        1    // 本文
  1540. #define FONTTX_H1        2    // H1 
  1541. #define FONTTX_H2        3    // H2 
  1542. #define FONTTX_H3        4    // H3 
  1543. #define FONTTX_H4        5    // H4 
  1544. #define FONTTX_H5        6    // H5 
  1545. #define FONTTX_H6        7    // H6 
  1546.                             // FONTTX_H?はデフォルトではゴシック
  1547.                             // サイズはH6=BODY,H5=H6+2,H4=H5+2,...
  1548. #define FONTTX_MARGIN    8    // ページヘッダ/ページフッタ
  1549.                             // デフォルトではゴシック
  1550.                             // サイズはBODYと同じ
  1551. //
  1552. #define FONTTX_N        9    // フォント数
  1553.  
  1554. //##印刷
  1555. // used WZ.EXE,word.tll
  1556. //2.98 970305 LPRINTの拡大により、wzprint.cfgの互換性なくなる。
  1557. typedef struct {
  1558. // 以下、ユーザ設定
  1559. BYTE configTop;
  1560.     // configEndまでバイナリ出力されるので、__BINCOMPATIBLE__とする
  1561.     mchar szstyle[CCHWORD];    // スタイル名
  1562.     SIGNED_WORD dmPaperSize;        // ページサイズ
  1563.     SIGNED_WORD dmOrientation;        // 用紙の向き
  1564.     SIGNED_WORD dmScale;            // スケーリング(100=等倍)(未完成)
  1565.     SIGNED_WORD dmScaleFont;        // フォント(本文と見出し)のスケーリング(100=等倍)
  1566.     SIGNED_WORD dmDefaultSource;    // 用紙供給元
  1567.     SIGNED_WORD dmTTOption;            // TrueTypeフォントの印刷方法
  1568.     SIGNED_WORD nClm;                // 段組数
  1569.     BBOOL fLxPage;                    // 折り返し文字数を指定?
  1570.     SIGNED_WORD lxPage;                // 折り返し文字数
  1571.     BBOOL fLyPage;                    // 1ページの行数を指定?
  1572.     SIGNED_WORD lyPage;                // 1ページの行数
  1573.     BBOOL fDispLineNo;                // 行番号を印刷?
  1574.     mchar szHeader[CCHWORD];        // ヘッダ文字列
  1575.     mchar szFooter[CCHWORD];        // フッタ文字列
  1576.     mchar szHeader2[CCHWORD];        // 偶数ページのヘッダ文字列
  1577.     mchar szFooter2[CCHWORD];        // 偶数ページのフッタ文字列
  1578.     FONTSTYLE fontstyleMargin;        // ヘッダ、フッタのフォント
  1579.     // mcm:ミリセンチ(一単位:0.1mm)
  1580.     BBOOL fUserPaperSize;            // サイズをmm単位で指定するか?
  1581.     SIGNED_WORD mcmMarginTop;
  1582.     SIGNED_WORD mcmMarginLeft;
  1583.     SIGNED_WORD mcmMarginBottom;
  1584.     SIGNED_WORD mcmMarginRight;
  1585.     SIGNED_WORD mcmPaperWidth;        // fUserPaperSizeがTRUEの時に有効
  1586.     SIGNED_WORD mcmPaperHeight;        // fUserPaperSizeがTRUEの時に有効
  1587.     SIGNED_WORD mcmLineInt;            // 行間
  1588.     SIGNED_WORD mcmCharInt;            // 字間(未完成)
  1589.     SIGNED_WORD mcmClmInt;            // 段組間の空白
  1590.     //2.00D 
  1591.     FONTSTYLE tFontstyle[FONTTX_H6];// 印刷フォント(FONTTX_BODY - FONTTX_H6)
  1592.     BBOOL fUsePrintFontstyle;        // LPRINTのtFontstyleを使用するかどうか
  1593.                                     //2.96 970209 欧文編集の時は必ずtextの
  1594.                                     // tFontstyleを使用
  1595.     BBOOL ReservedlflpProp;            //2.99 970320 廃止(プロポーショナルフォントで印刷)
  1596.     BBOOL fNoHeaderPrint;            // ヘッダを印刷しない
  1597.     BBOOL fNoFooterPrint;            // フッタを印刷しない
  1598.     BBOOL fHeaderSymmerty;            // 左右ページでヘッダフッタを対称に
  1599.     BBOOL fMarginSymmerty;            // 左右ページでマージンを対称に
  1600.     //2.00E 
  1601.     BBOOL fPrinterName;                // プリンタ名を指定するか
  1602.     mchar szPrinterName[80];        // プリンタ名
  1603.     SIGNED_WORD dmPrintQuality;        // 印字品質(マイナス値の場合もある)
  1604.     //2.96 970204 
  1605.     BBOOL fLineInt;                    // 行間を指定?
  1606.     BBOOL fUseTextLxLyClm;            // 文書の設定の文字数・行数・段組を使用?
  1607.     BBOOL f2pages;                    // 袋とじ?
  1608.     BBOOL fSpecifyHeader2;            // 偶数ページのヘッダ/フッタを指定する?
  1609.     BBOOL fHeadFontAuto;            // 見出しフォントの自動設定?
  1610.     BYTE modePrintFootnote;            // 0:脚注を印刷しない,1:印刷する,2:文末に続けて印刷
  1611.     SIGNED_WORD mcmMarginHeader;    //2.96A 970214 ヘッダ上余白
  1612.     SIGNED_WORD mcmMarginFooter;    //2.96A 970214 ヘッダ下余白
  1613.     mchar szTemplateHeader[80];        //2.98 970305 プリントレターヘッダ用テンプレート
  1614.     mchar szTemplateFooter[80];        //2.98 970305 プリントレターフッタ用テンプレート
  1615.     BYTE reserved[30];        // 余裕
  1616. BYTE configEnd;
  1617. // 以下、内部情報
  1618.     // 設定保存しない、印刷時の設定
  1619.     //1.99C 以前はconfigに入れていたが、プログラムで指定するので、
  1620.     // 色々問題があった
  1621.     BBOOL fNpagenum;        // 開始ページのページ番号を指定?
  1622.     NPAGE npagenum;            // 開始ページのページ番号
  1623.     NPAGE npagetop;            // 開始ページ
  1624.     NPAGE npageend;            // 終了ページ
  1625.     BBOOL fClip;            // 選択範囲を印刷?
  1626.     BBOOL f1page;            // 1ページのみ印刷?
  1627.     BYTE modePrintPage;        // 0:全てのページを印刷,1:奇数ページを印刷,2:偶数ページを印刷
  1628.     // text状態保持
  1629.     TX* text;                // 印刷テキスト
  1630.     int editmode;            // 印刷モード終了時に設定するtext->editmode
  1631.     NPARA npara;            // 印刷モードに入ったときのnpara
  1632.     IFILE ich;                // ich
  1633.     int ly;                    // ly
  1634.     RECT rect;                //2.96 970210 ウィンドウ位置
  1635.     BBOOL fNoCaret;            //2.96 970210 fNoCaret
  1636.     BBOOL flpPreview;        //2.96 970210 flpPreview
  1637.     BYTE nparaLetterHeader;    //2.98 970305 
  1638.     //
  1639.     NPAGE npageall;            // 総ページ数
  1640.     TIME time;                // 印刷開始時刻
  1641.     int iClm;                // 印刷中の段
  1642.     int icopy;                // 印刷中の部数
  1643.     int ncopy;                // 印刷部数
  1644.     //
  1645.     int fPrint;                // 印刷モードフラグカウンタ
  1646.     int cbDevMode;            // sizeof DEVMODE
  1647.     HANDLE hDevMode;        // デバイスモード
  1648.     HANDLE hDevNames;        // デバイス名
  1649.     HDC hdc;                // プリンタデバイスコンテキスト
  1650.     HDC hic;                //2.00B プリンタ情報コンテキストをhdcから分離
  1651.     int fGetHdc;            // GetHdcカウンタ
  1652.     int fGetHic;            //2.00B GetHicカウンタ
  1653.     BYTE fNoLoadConfig;        //2.96 970209 0以外ならtxLpOpでLPRINTを設定からロードしない
  1654.     //2.00D 計算値
  1655.     SIGNED_WORD cmcmMarginBottom;    // 計算値
  1656.     SIGNED_WORD cmcmMarginRight;    // 計算値 (縦書き時は左マージン)
  1657.     SIGNED_WORD cmcmLineInt;        // 計算値
  1658.     SIGNED_WORD clxPage;    //2.00E6 計算値
  1659.     SIGNED_WORD clyPage;    //2.00E6 計算値
  1660.     SIGNED_WORD xbase;        //2.00E xbase
  1661.     //2.96 970205 プレビュー
  1662.     BYTE pvRate;                //2.93 プレビューの拡大/縮小率
  1663.     SIGNED_DWORD logPixelsX;    //2.94 970120 1インチあたりのデバイスピクセル数
  1664.     SIGNED_DWORD logPixelsY;    //2.94 970120 
  1665.     HWND hwndPreviewCmd;        //2.96A 970214 プレビューコマンド用モードレスダイアログ
  1666.     SIGNED_WORD xViewportOrg;    //2.98 970307 原点X
  1667.     SIGNED_WORD yViewportOrg;    //2.98 970307 原点Y
  1668.     //2.96 970201 lpx:プリンタピクセル座標
  1669.     SIGNED_WORD lpxMarginTop;
  1670.     SIGNED_WORD lpxMarginLeft;
  1671.     SIGNED_WORD lpxMarginBottom;
  1672.     SIGNED_WORD lpxMarginRight;
  1673.     SIGNED_WORD lpxMarginLeftAdd;    // 縦書き & 袋とじ印刷用
  1674.     SIGNED_WORD lpxMarginHeader;    //2.96A 970214 ヘッダ上余白
  1675.     SIGNED_WORD lpxMarginFooter;    //2.96A 970214 ヘッダ下余白
  1676.     SIGNED_WORD lpxPaperWidth;        // fUserPaperSizeがTRUEの時に有効
  1677.     SIGNED_WORD lpxPaperHeight;        // fUserPaperSizeがTRUEの時に有効
  1678.     SIGNED_WORD lpxLineInt;            // 行間
  1679.     SIGNED_WORD lpxCharInt;            // 字間(未完成)
  1680.     SIGNED_WORD lpxClmInt;            // 段組間の空白
  1681.     SIGNED_WORD lpcxClient;            // 紙のサイズ(上下マージンの分も含む)
  1682.     SIGNED_WORD lpcyClient;            // 紙のサイズ(上下マージンの分も含む)
  1683.     //2.96 970205 設定時のワーク用
  1684.     FONTSTYLE fontstyleTemp[2];
  1685.     SIGNED_DWORD idTemp[2][IFONT_N];
  1686.     BBOOL lfPropTemp;
  1687.     BBOOL fHeadFontAutoTemp;
  1688.     //
  1689.     int rateEdit;                    //2.96 970206 WYSIWYG編集時の縮小レート
  1690.     IFILE sizeTemplateHeader;        //2.98 970305 挿入したレターヘッダテンプレートのサイズ
  1691.     IFILE sizeTemplateFooter;        //2.98 970305 挿入したレターフッタテンプレートのサイズ
  1692.     IFILE adrFootnote;                //2.96 970207 脚注挿入開始アドレス
  1693.     //2.99C 970324 印刷可能域
  1694.     SIGNED_WORD mcmMarginMinTop;    //2.99C 970324 印刷マージンの最小値
  1695.     SIGNED_WORD mcmMarginMinLeft;
  1696.     SIGNED_WORD mcmMarginMinBottom;
  1697.     SIGNED_WORD mcmMarginMinRight;
  1698.     BYTE configDisuse;        //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
  1699.     BYTE reservedI[55];        // 余裕
  1700. } LPRINT;
  1701. #define NPAGE_MAX    9999
  1702.  
  1703. //##メール
  1704. //2.90 
  1705.  
  1706. typedef struct {
  1707.     mchar szCaption[160];            // フック先のキャプション
  1708.     mchar szCaptionOriginal[160];    // フック先のオリジナルのキャプション
  1709.     mchar szTo[250];
  1710.     mchar szCc[250];
  1711.     mchar szTitle[250];
  1712. } MAIL;
  1713.  
  1714. //##検索
  1715.  
  1716. typedef DWORD SEARCHMODE;        //1.92 検索モード
  1717. //1.01A スペルミス修正 SEARCH_FORWORD -> SEARCH_FORWARD
  1718. //2.92 long値であることを明示 for WZ16
  1719. #define SEARCH_FORWARD            0x00000000L    // テキスト末尾方向へ検索(デフォルト)
  1720. #define SEARCH_PREV                0x00000001L    // テキスト先頭方向へ検索
  1721. #define SEARCH_AREA                0x00000002L    // 範囲内のみ検索する
  1722. #define SEARCH_NOESC            0x00000004L    // 検索文字列中の'\'の特別な意味を消して検索
  1723. #define SEARCH_CUR                0x00000008L    // カーソル位置の文字から検索
  1724.                                             // 以前は、置換時、前方検索時は
  1725.                                             // 無効でしたが、1.99Aから
  1726.                                             // 有効になりました。
  1727. #define SEARCH_SELECT            0x00000010L    // 見つけた文字列を選択する(置換時は無効)
  1728. #define SEARCH_ALL                0x00000020L    // テキスト全体で検索(置換時のみ)
  1729. #define SEARCH_PARATOP            0x00000040L    //1.00H2 論理行頭のみ検索
  1730. #define SEARCH_NOSENSECASE        0x00000080L    // 大文字・小文字を区別しない
  1731. #define SEARCH_NOSENSEZENHAN    0x00000100L    // 全角/半角文字を区別しない
  1732. #define SEARCH_WORD                0x00000200L    // ワードサーチ
  1733. #define SEARCH_RE                0x00000400L    // 正規表現による検索
  1734. #define REPLACE_CONFIRM            0x00000800L    // 置換確認を行う(置換時のみ)
  1735. #define REPLACE_ONCE            0x00001000L    //1.96 最初の1つだけ置換
  1736. #define SEARCH_NOSYMBOL            0x00002000L    //2.98 970309 テキストの改行や空白や記号を無視して検索
  1737. //1.01A GREP_XXXの定義値変更
  1738. #define SEARCH_NOSELECT            0x00004000L    // 検索で見つけた文字列の選択を行わない
  1739. #define SEARCH_ALLTEXT            0x00008000L    //1.01A オープン中の全てのテキストを対象として検索
  1740.                                             // (検索するtextが裏テキストの場合は無効)
  1741. // 特別検索モード
  1742. #define GREP_BACKUP                0x01000000L    //2.92 バックアップファイル内も検索(WZ Grepのみ)
  1743. #define REPLACE_CONFIRMMODAL    0x02000000L    //2.92 REPLACE_CONFIRMをモーダルで実行
  1744. #define SEARCH_NEXTTEXT            0x04000000L    //2.00B WZ.EXE内部用
  1745. #define SEARCH_OLDDIALOG        0x08000000L    // search.c
  1746. #define SEARCH_REPLACE            0x10000000L    // search.c
  1747. #define SEARCH_DIALOGCOMPACT    0x20000000L    //2.97 970225 search.c
  1748. #define GREP_DIRECTORY            0x20000000L    // サブディレクトリ内も検索(WZ Grepのみ)
  1749. #define SEARCH_DIALOGSLIST        0x40000000L    //2.97 970225 search.c
  1750. #define GREP_BINARY                0x40000000L    // バイナリファイル内も検索(WZ Grepのみ)
  1751. //2.96  SEARCH_TXSETSEARCHMODE    0x80000000L    //1.01A WZ.EXE内部用 廃止
  1752.  
  1753. typedef struct {                //1.92 検索モード展開構造体
  1754.     WORD fCategory:1;            //1.96 category enable?
  1755.     WORD reservedB:15;
  1756.     UINT category;                //1.96 
  1757.         #define SEARCHCATEGORY_NORMAL    0
  1758.         #define SEARCHCATEGORY_WORD        1
  1759.         #define SEARCHCATEGORY_RE        2
  1760.         #define SEARCHCATEGORY_FUZZY    3
  1761.     BOOL fSearchSenseCase;
  1762.     BOOL fSearchSenseZenhan;
  1763.     BOOL fSearchWord;
  1764.     BOOL fSearchRE;
  1765.     BOOL fSearchEscapeNo;
  1766.     BOOL fSearchAllText;
  1767.     BOOL fSearchArea;
  1768.     BOOL fSearchCur;
  1769.     BOOL fReplaceConfirm;//2.92 
  1770.     BOOL fSearchNoSymbol;//2.98 970309 
  1771.     BYTE reserved[8];
  1772. } SEARCHOPT;
  1773.  
  1774. // 検索・置換ダイアログモード
  1775. #define SEARCHDLG_PREV        0x0001
  1776. #define SEARCHDLG_MINI        0x0002
  1777. #define SEARCHDLG_VZ        0x0004
  1778. #define SEARCHDLG_REPLACE    0x0008
  1779. #define SEARCHDLG_CONFIRM    0x0010
  1780. #define SEARCHDLG_CAPTION    0x0020
  1781. #define SEARCHDLG_SZFIND    0x0040    // szfind not init
  1782. #define SEARCHDLG_MODELESS    0x0080    //1.96 modeless
  1783.  
  1784. //1.00H2 Replace Context WZ内部用
  1785. typedef struct {
  1786.     DWORD searchmode;
  1787.     mchar szFind[CCHWORD];
  1788.     mchar szReplace[CCHWORD];
  1789. #if 1//3.00A2 970505 廃止
  1790.     HWND reserved;
  1791. #else
  1792.     HWND hwndReport;    //2.92 for WZ Grep replace
  1793. #endif
  1794. } REPLACEARGEX;
  1795.  
  1796. #define IDREPLACEALL        101        // 置換確認ダイアログ:全て置換
  1797.  
  1798. typedef DWORD TXRECORD;                // レコード(0 origin)
  1799. #define TXRECORD_ERROR    0xFFFFFFFF    // エラー値
  1800.  
  1801. //2.00B TXREPORT仕様変更
  1802. #define TXREPORT_TEXTBUFF_INSERT    1    // address/nparaにcountバイト/nparaCount行、挿入された
  1803. #define TXREPORT_TEXTBUFF_DELETE    2    // address/nparaからcountバイト/nparaCount行、削除された
  1804. #define TXREPORT_KEY_INSERTSTR        3    // キー入力によってpStr文字列(ASCIZ)、長さcountバイト挿入される
  1805.                                         // HOOK_CAPTUREを返すと挿入しません
  1806. #define TXREPORT_NLINE_CHANGE        4    //2.98 970309 文字列の挿入や削除によって表示行数が変化した
  1807.                                         // 必ずしも正確ではない
  1808. typedef struct {
  1809.     TX* text;                // 対象テキスト
  1810.     NPARA npara;            // 対象npara
  1811.     NPARA nparaCount;        // 増減したnpara数
  1812.     IFILE address;            // 対象address
  1813.     IFILE count;            // 増減したバイト数またはpStrの文字数
  1814.     mchar* pStr;            // 対象文字列
  1815. } TXREPORT;
  1816.  
  1817. typedef struct {
  1818.     BYTE crSave;
  1819.     BYTE kcSave;
  1820. } TXFILETYPE;
  1821.  
  1822. //1.97 txSetUndispEx/txSetUndispEdit
  1823. // txSetUndispしてtxSetUndispExするとカーソル位置が保存されなかったのを修正
  1824. typedef struct {
  1825.     int ly;            //
  1826.     NPARA npara;    //
  1827.     IFILE address;    //
  1828.     IFILE ich;        //
  1829. } UNDISPCONTEXT;
  1830. #define UNDISPCONTEXT_N    5
  1831. //1.99A 裏テキストなど、fUndispがマイナス値の場合もある。
  1832. #define txGetUndispContextPre(text)    \
  1833.     ((1 <= text->fUndisp && text->fUndisp <= UNDISPCONTEXT_N) ? &text->tUndispContext[text->fUndisp - 1] : NULL)
  1834.  
  1835. //1.99C 
  1836. typedef DWORD TXATRATR;
  1837. #define TXATRATR_ARC        0x00000001LU    // WZ圧縮文書ファイル
  1838. #define TXATRATR_TEXT_PLAIN    0x00000002LU    //2.99 970316 プレーンテキストファイル出力
  1839. #define TXATRATR_TEXT_FORM    0x00000004LU    //2.99 970316 整形テキストファイル出力
  1840. #define TXATRATR_TEXT_WZ    0x00000008LU    //2.99 970316 装飾・体裁付きテキストファイル出力
  1841. #define TXATRATR_HTML_TEXT    0x00000010LU    //2.99 970316 HTML文書ファイル出力
  1842. #define TXATRATR_ENABLE        0x00008000LU    // 内部用(Saveの引数)
  1843.  
  1844. //##TEXTWINDOW STYLES,TEXTWINDOW FRAME STYLES
  1845. //1.97 WZをチャイルドウィンドウとして使用できるようにした。
  1846. // クラス名
  1847. //2.99C 970327 WZ16のクラス名を変更(末尾に16を追加)
  1848. // SHAREのバージョンチェックに対応していない旧WZと混ざらない様にするため
  1849. #ifdef __FLAT__
  1850.     #define TXWS_SZCLASS        "txText32"
  1851.     #define TXBASE_SZCLASS        "txBase32"        //2.93 
  1852.     #define TXPARTITION_SZCLASS    "txPartition32"    //2.96A 970211 
  1853. #else
  1854.     #define TXWS_SZCLASS        "txText16"
  1855.     #define TXBASE_SZCLASS        "txBase16"        //2.93 
  1856.     #define TXPARTITION_SZCLASS    "txPartition16"    //2.96A 970211 
  1857. #endif
  1858.  
  1859. // TXWS_SZCLASS ウィンドウスタイル
  1860. #define TXWS_TEXT            0x0001L        // TEXT構造体をアロケートする
  1861. #define TXWS_OPENTEXT        0x0002L        // いきなりtxOpenTextする
  1862. #define TXWS_CONFIGINHERIT    0x0004L        //2.90 textfの設定を受け継ぐ
  1863. #define TXWS_ENABLEUNDO        0x0008L        //2.90 undo可
  1864. #define TXWS_ALLOCMAIL        0x0010L        //2.90 text->mailをアロケートする
  1865. #define TXWS_TEXTHWNDTEXT2    0x0020L        //2.99 970316 hwndtext2用
  1866. #define TXWS_FRAME            0x0040L        //2.95 970129 fFrame用にTEXT構造体をアロケートする
  1867.                                         // これを指定するときは必ずTXWS_ENABLEUNDOと一緒に指定し、
  1868.                                         // TXWS_ALLOCMAILは指定しないこと!!!
  1869.                                         // アロケートしたTEXT+undoをfreeしないで再利用するため。
  1870. #define TXWS_TEXTINHERIT    0x0080L        //2.99 970316 既にopenされてるtextを引き継ぐ
  1871. #define TXWS_FONTINHERIT    0x0100L        //2.99D 970328 textfのフォント設定(フォント名、lfProp,lfWestern)を引き継ぐ
  1872.                                         // フォントサイズは引き継がない
  1873.                                         // デフォルトはダイアログのフォントになる
  1874. #define TXWS_FONTINHERITALL    0x0200L        //2.99D 970328 TXWS_FONTINHERIT+フォントサイズも引き継ぐ
  1875. // TXWS_SZCLASS ウィンドウメッセージ
  1876. //        message            define            // return    wParam    lParam
  1877. #define    TXWM_GETTX        (WM_TXUSER + 0)    // TX*        0        0
  1878.  
  1879. // TXPARTITION_SZCLASS ウィンドウスタイル
  1880. #define WSPB_SEPARATOR        0x0001L        // dialog box用セパレータ?
  1881. #define WSPB_SMALLFONT        0x0002L        //2.99D 970330 小さいフォントを使う?
  1882. // TXPARTITION_SZCLASS partition bar message
  1883. //        message                                        wParam        lParam    備考
  1884. #define WMPB_SETRANGE            (WM_USER +  1)    //    min            max
  1885. #define WMPB_GETRATE            (WM_USER +  2)    //    void        void
  1886. #define WMPB_SETRATE            (WM_USER +  3)    //    rate        void
  1887.  
  1888. #define SZCFG_STD            "標準"        // 拡張子別の設定がないときに参照する名前
  1889.  
  1890. //## txAllocText
  1891.  
  1892. #define TXALLOC_UNDO    0x0001        // undoができるようにする
  1893.  
  1894. //##WZ.EXE用 ウィンドウメッセージ、コマンド番号、タイマーID
  1895.  
  1896. // WZ専用ウィンドウメッセージ
  1897. // WM_USERからWM_TXUSER-1までを使用
  1898. // マクロではWM_TXUSER以降を使用可
  1899. #define WM_TXUSER                (WM_USER+1000)    //1.00H4 
  1900. #if 0
  1901. ●備考について
  1902. ・"xxx"は、他プロセスに送ることができないメッセージを示します。
  1903. ・"wndtxSendStr"は、wndtxSendStr関数だけを使って他プロセスにメッセ
  1904.   ージを送ることができます。SendMessageやPostMessageを使ってメッセ
  1905.   ージを送ることはできません。
  1906. ・"wndtxSendMem"は、wndtxSendMem関数だけを使って他プロセスにメッセ
  1907.   ージを送ることができます。SendMessageやPostMessageを使ってメッセ
  1908.   ージを送ることはできません。
  1909. #endif
  1910. // 内部 WORK / SystemMessage
  1911. //        message                                        wParam        lParam    備考
  1912. #define WM_TXINITMENU            (WM_USER +  1)    //    0            0
  1913. #define WM_TXFILERSELECTED        (WM_USER +  2)    //    0            lpStr    wndtxSendStr
  1914. #define WM_TXIDLE                (WM_USER +  3)    //    0            0
  1915. #define WM_TXCLOSEEVERY            (WM_USER +  4)    //    fForce        0        2.94
  1916. #define WM_TXCONTROLTAB            (WM_USER +  5)    //    void        void    2.95
  1917. #define WM_TXSETKEYMACRO        (WM_USER +  7)    //    txk            hfunc
  1918. #define WM_TXIDLEEXEC            (WM_USER +  8)    //    id            0        2.93
  1919.                                                 // アイドル時に実行する内部動作
  1920. //2.93  WM_TXMTCMD                (WM_USER +  9)    廃止
  1921. #define WM_TXCMDLINE            (WM_USER + 10)    //    0            lpsw    wndtxSendStr
  1922. #define WM_TXSB_SETUPTEXT        (WM_USER + 11)    //    hsl            sztext    xxx
  1923. #define WM_TXSB_SETTEXT            (WM_USER + 12)    //    hsl            sztext    xxx 1.99E
  1924. #define WM_TXQUERYCLOSE            (WM_USER + 13)    //    0            0
  1925. #define WM_TXQUIT                (WM_USER + 14)    //    0            0
  1926. //2.96A WM_TXFLUSHKEY            (WM_USER + 15)    廃止
  1927. #define WM_TXFLUSHMENU            (WM_USER + 16)    //    0            0
  1928. #define WM_TXWINDOWSIZE            (WM_USER + 17)    //    0            rect    xxx
  1929. //2.96A WM_TXWINDOWREGISTER        (WM_USER + 18)    廃止
  1930. #define WM_TXTOOLBARSELECTED    (WM_USER + 19)    //    itoolbar    0        xxx 1.00F2
  1931. #define WM_WZCONSOLE_STOPED        (WM_USER + 20)    //    0            0        1.00H3
  1932. #define WM_TXSHAREMEMFREE        (WM_USER + 21)    //    id            0        1.00H4
  1933. #define WM_TXACTIVE                (WM_USER + 22)    //    0            0        1.00H4
  1934. #define WM_TXOPENFINISH            (WM_USER + 25)    //    stat        0        1.01A
  1935.                                                 // stat=0 : txOpen終了
  1936.                                                 // stat=1 : モーダルWM_TXREPLACEEX終了
  1937. #define WM_TXREPORT                (WM_USER + 26)    //    code    TXREPORT*    2.00B
  1938. #define WM_TXREPORTACK            (WM_USER + 27)    //    free        free    1.93 用途自由
  1939. #define WM_TXFLUSHWINDOWSIZE    (WM_USER + 28)    //    0            0        1.93
  1940. #define WM_TXCHECKFILETIME        (WM_USER + 30)    //    0            0        1.97
  1941. #define WM_TXCLOSE                (WM_USER + 31)    //    0            0        1.99A
  1942.                                                 // text->hwndbaseウィンドウが閉じられる直前に送られる
  1943.                                                 // 閉じるのをキャンセルすることはできない。
  1944.                                                 //2.94 970123 引数wParam廃止
  1945. #define WM_TXGETPROPERY            (WM_USER + 32)    //    0            0        1.99B
  1946.                                                 // TXPROPERTY型の構造体の実体を返す
  1947. #define WM_TXDISPTEXT            (WM_USER + 33)    //    lyTop        lyEnd    1.99C
  1948. #define WM_TX_TBN_ENDCMD        (WM_USER + 34)    //    0            0        1.99H 
  1949. //2.94    WM_TXGETSZFORK            (WM_USER + 35)    //    0    廃止    0        xxx 2.00B
  1950. #define WM_TXSHAREMEMALLOC        (WM_USER + 36)    //    id            0        2.00E6
  1951. // dialog.c and user
  1952. //        message                                        wParam        lParam
  1953. #define WM_TXDIALOG                (WM_USER + 50)    //    idm            0
  1954. #define WM_TXDIALOGOK            (WM_USER + 51)    //    idm            0
  1955. #define WM_TXDIALOGREAD            (WM_USER + 52)    //    0            0
  1956. #define WM_TXDIALOGENTERIDLE    (WM_USER + 53)    //    0            0
  1957. #define WM_TXDIALOGCLEAR        (WM_USER + 54)    //    0            hdlg
  1958. #define WM_TXDIALOGPASTE        (WM_USER + 55)    //    0            hdlg
  1959. #define WM_TXDIALOGINIT            (WM_USER + 56)    //    0            hdlg
  1960. #define WM_TXDIALOGINITEND        (WM_USER + 57)    //    0            hdlg
  1961. #define WM_TXDIALOGWRITE        (WM_USER + 58)    //    0            0
  1962. #define WM_TXDIALOGWRITEITEM    (WM_USER + 59)    //    id            0
  1963. #define WM_TXDIALOGREADITEM        (WM_USER + 60)    //    id            0
  1964. #define WM_TXDIALOGPAGECHANGED    (WM_USER + 61)    //    iPage        0        1.91A 
  1965. #define WM_TXDIALOGCLOSE        (WM_USER + 62)    //    0            0        1.92
  1966.                                                 //2.00B wParamがIDOKならOKを押す
  1967. #define WM_TXDIALOGCOLORSELECTED (WM_USER + 63)    //    id            0        1.97 
  1968. #define WM_TXDIALOGPAGECHANGE    (WM_USER + 64)    //    oldpageid    0        1.99C
  1969. #define WM_TXDIALOGITEMSETCONTEXT (WM_USER + 65)//    id            context    1.99F
  1970. #define    WM_TXDIALOGENABLEAPPLY    (WM_USER + 66)    //    fEnable        0        2.00B
  1971. // 内部WORK
  1972. //        message                                        wParam        lParam
  1973. #define WM_WKSYSKEYDOWN            (WM_USER + 95)    //    0            0        1.00H2 
  1974. #define WM_WKLBUTTON4            (WM_USER + 96)    //    0            0
  1975. #define WM_WKLBUTTON3            (WM_USER + 97)    //    0            0
  1976. #define WM_WKKEYDOWN            (WM_USER + 98)    //    0            0
  1977. #define WM_WKCHAR                (WM_USER + 99)    //    0            0
  1978. // wndtxCallで呼べないTXAPIなどをメッセージ経由で呼び出すのに使います
  1979. //        message                                        wParam        lParam    備考
  1980. #define WM_TXMOVEBYTE            (WM_USER +101)    //    cbByte        void
  1981. #define WM_TXCMPPRE                (WM_USER +102)    //    void        void    HCLIP_WORKを使います
  1982. #define WM_TXMACROCONT            (WM_USER +103)    //    void        void
  1983. #define WM_TXJUMPMODAL            (WM_USER +104)    //    void        行番号
  1984. #define WM_TXJUMPADDRESS        (WM_USER +105)    //    void        address
  1985. #if 0//1.00Fで廃止
  1986. #define WM_TXSAVETOMEM            (WM_USER +106)    //    void        lpMem    xxx
  1987. #define WM_TXSAVETOFILE            (WM_USER +107)    //    hfile        void    xxx
  1988. #define WM_TXWRITETOMEM            (WM_USER +108)    //    cbWrite        lpMem    xxx
  1989. #define WM_TXWRITETOFILE        (WM_USER +109)    //    hfile        cbWrite    xxx
  1990. #endif
  1991. #define WM_TXINSERTSTR            (WM_USER +110)    //    void        lpStr    wndtxSendStr
  1992. #define WM_TXNEXTROLL            (WM_USER +111)    //    void        void
  1993. #define WM_TXPREVROLL            (WM_USER +112)    //    void        void
  1994. #define WM_TXSETEDIT            (WM_USER +113)    //    fEdit        void
  1995. #define WM_TXGETTEXTSIZE        (WM_USER +114)    //    void        void
  1996. #define WM_TXSETHIGH            (WM_USER +115)    //    void        void
  1997. #define WM_TXRESETHIGH            (WM_USER +116)    //    void        void
  1998. #define WM_TXRIGHTBYTES            (WM_USER +117)    //    sizeMove    void
  1999. #define WM_TXGETFMESSAGELOOP    (WM_USER +118)    //    void        void
  2000. //2.96  WM_TXSEARCH        廃止    (WM_USER +119)    //    void        szfind    wndtxSendStr
  2001. #ifdef __FLAT__
  2002. #define WM_TXGETFILENAME        (WM_USER +120)    //    void        hclip    hclipにデータをセット
  2003. #else
  2004. #define WM_TXGETFILENAME        (WM_USER +120)    //    void        szbuff    szbuffにデータをセット
  2005. #endif
  2006. #define WM_TXCALL                (WM_USER +121)    //    void        szmacro
  2007. //2.96  WM_TXSEARCHPREV    廃止    (WM_USER +122)    //    void        szfind    wndtxSendStr
  2008. #define WM_TXJUMPPARA            (WM_USER +123)    //    void        行番号    //1.00Cで追加
  2009. #define WM_TXGETGENE            (WM_USER +124)    //    void        void    //1.00H2 
  2010. #define WM_TXGETNULLTEXT        (WM_USER +125)    //    void        void    //1.00H2 
  2011. #define WM_TXCALLEX                (WM_USER +126)    //    void        szmacro    //1.01A wndtxSendStr
  2012. #define WM_TXSEARCHEX            (WM_USER +127)    //    void    replaceargex//1.01A wndtxSendMem
  2013. #define WM_TXREPLACEEX            (WM_USER +128)    //    void    replaceargex//1.01A wndtxSendMem
  2014. #define WM_TXSETSEARCHMODE        (WM_USER +129)    //    void    searchmode    //1.01A searchmodeに合わせてtext->fSearchXXXをセット
  2015. #define WM_TXSETPAGINGMODE        (WM_USER +130)    //    pagingmode    void    //1.01A 
  2016. #define WM_TXAPPENDSTR            (WM_USER +131)    //    void        lpStr    //2.00B wndtxSendStr
  2017. #define WM_TXPARAFORMSTART        (WM_USER +135)    //    void        void    //2.90 paraform start
  2018. #define WM_TXCALLCMD            (WM_USER +136)    //    void        szapi    //2.90 text->hwndtextにSendすると、
  2019.                                                                         // textをカレントテキストとしてszapiを呼び出す
  2020. #define WM_TXISDIALOGMESSAGE    (WM_USER +137)    //    void        MSG*    //2.90 for hwndtext
  2021. #define WM_TXGETTEXT1            (WM_USER +138)    //    void        void    //2.90 for hwndtext
  2022. //2.99    WM_TXHK_SENDMAIL        (WM_USER +139)    //    廃止
  2023. //2.99    WM_TXHK_POPUP            (WM_USER +140)    //    廃止
  2024. #define WM_TXPARAFORMCMD        (WM_USER +141)    //    vk            void    //2.90 hwndtext
  2025. #define WM_TXNOTIFY                (WM_USER +142)    //    hwndFrom    id        //2.97A 970228 汎用通知メッセージ
  2026. //2.99    WM_TXEHGETHWNDEH        (WM_USER +143)    //    廃止
  2027. #define WM_TXEHOP                (WM_USER +144)    //    cmd            arg        //2.99 970315 旧WM_TXEHFLUSHWINDOW
  2028. #define WM_TXCOMMAND            (WM_USER +145)    //    wParam        lParam    //2.99 970319 textfに拘わらずfFrameのtextにopする。
  2029.                                                                         // WM_COMMANDは、textfにopする。
  2030. #define WM_TXKEYDOWN            (WM_USER +146)    //    wParam        lParam    //2.99C 970324 
  2031.                                                                         // for outline keyboard interface
  2032.                                                                         // lParam:TXKEYDOWNARG
  2033.                                                                         // キー入力をフックする場合はTXKEYDOWNARG.fHook=TRUEとすること
  2034. #define WM_TXOPEN                (WM_USER +147)    //    void        void    //3.00A 970427 text->hwndbaseを持つtextが生成されたことを
  2035.                                                                         // test->hwndbaseに通知する
  2036.  
  2037. //2.99C 970324 WM_TXKEYDOWM lParam
  2038. typedef struct {
  2039.     LPARAM lParam;
  2040.     BOOL fHook;
  2041. } TXKEYDOWNARG;
  2042.  
  2043. //2.99 970317 
  2044. // WM_TXNOTIFY id
  2045. #define TXN_CHANGENPARA        1    // ユーザ操作でy座標が変化した
  2046. #define TXN_CHANGEX            2    // ユーザ操作でx座標が変化した
  2047. #define TXN_REQUESTRESIZE    3    // 未完成
  2048. #define TXN_CONTROLTAB        4    // Ctrl+Tabが押された
  2049.                                 // キャプチャーする場合は、次をする必要がある
  2050.                                 //    macroHookWndBaseReturn(TRUE);
  2051.                                 //    return HOOK_CAPTURE;
  2052. #define TXN_CONTROLF4        5    // Ctrl+F4が押された
  2053.                                 // キャプチャーする場合は、次をする必要がある
  2054.                                 //    macroHookWndBaseReturn(TRUE);
  2055.                                 //    return HOOK_CAPTURE;
  2056.  
  2057. //1.99C 99->9に改正
  2058. #ifndef IDHELP
  2059.     #define IDHELP          9
  2060. #endif
  2061.  
  2062. //2.94 970120 WM_COPYDATA dwData
  2063. // 30000以上はWZ本体が使用。30000未満はユーザ使用可
  2064. #ifndef __FLAT__
  2065.     #define WM_COPYDATA            0x004A
  2066.     typedef struct tagCOPYDATASTRUCT {
  2067.         DWORD dwData;
  2068.         DWORD cbData;
  2069.         LPVOID lpData;
  2070.     } COPYDATASTRUCT;
  2071. #endif
  2072. #define WM_COPYDATA_TXEXEC        30000
  2073.  
  2074. // wndprocbaseのWM_COMMANDのwParamの定義
  2075. // 0 - 29999までをアプリは自由につかって良い
  2076. // IDM_TXCOMMANDTOP以降のメッセージはTXが処理する
  2077. // これは、主に次の為に用いる
  2078. //    ・TX-APIにする必要のないもの
  2079. //    ・TX-APIにできないもの
  2080. //    ・マクロで実現されている機能を呼ぶ
  2081. #define IDM_TXCOMMANDTOP            30000    //2.96A 970213 旧IDM__TXCOMMANDTOP
  2082. //2.96A 970213 IDM__FILEHIST -> IDM_TXFILEHIST
  2083. //2.96A 970213 IDM__QUITALLFORCE,IDM__CLOSEALLEVERYCONT廃止
  2084. #define IDM_TXUISAVEEX                30001    //2.98 970310 編集されているときだけ保存
  2085. #define IDM_TXUISAVE                30002    //2.96A 970213 旧 IDM__FILESAVE
  2086. #define IDM_TXFILEHIST                30003
  2087. #define IDM_TXFILEHISTTAB            30004    // キーとファイル名の間に'\t'付き
  2088. #define IDM_TXLPRINT                30005
  2089. #define IDM_TXLPRINTSTYLEEDIT        30006
  2090. #define IDM_TXLPRINTSTYLESELECT        30007
  2091. #define IDM_TXLOADONDEMAND            30008    //1.90 まだ内容をloadしていないメニュー
  2092. #define IDM_TXWINDOWLIST            30009    //1.90 ウィンドウリスト
  2093. //2.96A 970213 IDM__MACROxxx -> IDM_TXMACROxxx
  2094. #define IDM_TXMACROFORKTEXT            30010
  2095. #define IDM_TXMACRODUMPTEXT            30011
  2096. #define IDM_TXMACROCOMPILETEXT        30012
  2097. #define IDM_TXMACROINSTALL            30014
  2098. #define IDM_TXMACROUNINSTALL        30015
  2099. #define IDM_TXMACROEXECTEST            30016
  2100. #define IDM_TXTEXTTOAPIDB            30017
  2101. //2.96A 970213 IDM__GREP,IDM__FILER,IDM__LAUNCHERxxx 廃止
  2102. #define IDM_TXSTDOUTOPEN            30025    //2.96 970209 旧IDM__WINDOWSTDOUT
  2103. #define IDM_TXPARAFORMFAILED        30026    //2.99 970314 通知(paraformできなかった)
  2104. #define IDM_TXGENEMAN                30030
  2105. #define IDM_TXUISAVEAS                30031    //2.99D 970331 new
  2106. #define IDM_TXUISAVETO                30032    //2.99D 970331 new
  2107. #define IDM_TXABOUT                    30052    //2.96A 970213 旧IDM__TXABOUT
  2108. #define IDM_TXGETVERSION            30054
  2109. //
  2110. #define IDM_TXUIPRJRESUME            30060
  2111. #define IDM_TXUIPRJOPEN                30061
  2112. #define IDM_TXUIPRJSAVETO            30062
  2113. #define IDM_TXPRJOPEN                30063    //1.00C
  2114. #define IDM_TXPFSAVE                30064    //1.00D
  2115. #define IDM_TXPREVIEWEXIT            30065    //2.96A 970214 内部用
  2116. #define IDM_TXFLUSHTABLEALL            30066    //2.99D 970329 
  2117. //
  2118. #define IDM_TXUIIMEREGWORD            30070
  2119. #define IDM_TXUPREPEAT                30071
  2120. #define IDM_TXDOWNREPEAT            30072
  2121. // 内部用
  2122. #define IDM_TXFILEHISTTOP            30100
  2123. #define IDM_TXFILEHISTEND            30199
  2124. #define IDM_TXFILEHISTMAX            100
  2125. // 内部用
  2126. //2.96A 970213 IDM__WINDOWxxx -> IDM_TXWINDOW
  2127. #define IDM_TXWINDOWTOP                30200
  2128. #define IDM_TXWINDOWEND                30299
  2129. // これ以降、TX function・マクロ ID
  2130. //2.96A 970213 IDM__TXFUNC廃止。IDM_WZCMDTOPを使ってください
  2131. #define IDM_WZCMDTOP                30500
  2132.  
  2133. //1.01A 
  2134. // タイマーID
  2135. // 0-29999まではマクロで自由に使えます
  2136. #define TIMER_TOP                30000
  2137. #define TIMER_TX                30000
  2138. #define TIMER_TXSCROLL            30001
  2139. #define TIMER_TXFLUSHTOOLBAR    30002    //2.97 970216 旧TIMER_TXFLUSH
  2140. #define TIMER_TXAUTOSAVE        30003
  2141. #define TIMER_TXSLEEP            30004
  2142. #define TIMER_TXTERM            30005
  2143. #define TIMER_TXFLUSHPAGE        30006    //1.99I 
  2144. #define TIMER_TXFLUSHBINEDIT    30007    //2.00E 
  2145. #define TIMER_TXFLUSHTABLE        30008    //2.97 970216 
  2146. #define TIMER_TXFLUSHPARAFORM    30009    //2.98 970309 
  2147. #define TIMER_TXFLUSHMAILEDIT    30010    //2.99 970315 
  2148. #define TIMER_TXACTIVATE        30011    //2.99D 970401 new
  2149. #define TIMER_TXDISPALL            30012    //3.00A2 970506 new
  2150. #define TIMER_END                30012    //2.99D 970330 タイマを増やしたらここも増やす
  2151.  
  2152. //1.99A 
  2153. // ヘルプトピック ID
  2154. #define IDH_OPEN        101
  2155. #define IDH_SEARCH      102
  2156. #define IDH_REPLACE     103
  2157. #define IDH_GENMNGR     104
  2158. #define IDH_PRINT       105
  2159. #define IDH_HTMLTAG        106        //2.99D 970402 HTMLタグ挿入用
  2160. //
  2161. #define IDH_CUSTKEY     110
  2162. #define IDH_CUSTMENU    111
  2163. #define IDH_CUSTTOOL    112
  2164. //
  2165. #define IDHC_FORMAT     121
  2166. #define IDHC_STYLE      122
  2167. #define IDHC_COLOR      124
  2168. #define IDHC_SCROLL     125
  2169. #define IDHC_CURSOR     126
  2170. #define IDHC_INTERFACE  127
  2171. #define IDHC_FILE       128
  2172. #define IDHC_EDIT       129
  2173. #define IDHC_SEARCH     130
  2174. #define IDHC_STRING     131
  2175. #define IDHC_MACRO      132
  2176. #define IDHC_WINDOW     133
  2177. #define IDHC_HELP       134
  2178.  
  2179. #define IDH_FILER       140
  2180.  
  2181. //##for メニューチェック
  2182. //2.99 970319 
  2183.  
  2184. // メニューが開かれたときに、メニューに登録されているマクロのat_cmdcheckが呼び出されます
  2185. // これに応じて返り値を返すことによって、メニューをチェックしたり使用不能にすることが
  2186. // できます。WZ2.99 970319 からです。
  2187.  
  2188. #ifndef MF_ENABLED
  2189.     #define MF_ENABLED        0x0000    // コマンド実行可能
  2190.     #define MF_GRAYED        0x0001    // コマンド実行不可能
  2191.     #define MF_UNCHECKED    0x0000    // コマンドは現在OFF
  2192.     #define MF_CHECKED        0x0008    // コマンドは現在ON
  2193. #endif
  2194.  
  2195. //##
  2196.  
  2197. //2.00C txCharConvert arg
  2198. // size = 4bytes fixed
  2199. //2.99C 970324 記号のうち、"、'、“”、‘’は変換しないようにした
  2200. typedef struct {
  2201.     WORD fJkataToKana:1;    // 全角カタカナ->半角カナ
  2202.     WORD fJkanaToKana:1;    // 全角ひらがな・カタカナ->半角カナ
  2203.     WORD fJankToAnk:1;        // 全角ANK->半角ANK
  2204.     WORD fJalphabetToAnk:1;    // 全角アルファベット->半角ANK
  2205.     WORD fJnumberToAnk:1;    // 全角数字->半角ANK
  2206.     WORD fJkigouToAnk:1;    // 全角記号->半角ANK
  2207.     WORD fJspaceToAnk:1;    // 全角空白->半角ANK
  2208.     WORD fKanaToJhira:1;    // 半角カナ->全角ひらがな
  2209.     WORD fKanaToJkata:1;    // 半角カナ->全角カタカナ
  2210.     WORD fAnkToJank:1;        // 半角ANK->全角ANK
  2211.     WORD fAlphabetToJank:1;    // 半角アルファベット->全角ANK
  2212.     WORD fNumberToJank:1;    // 半角数字->全角ANK
  2213.     WORD fKigouToJank:1;    // 半角記号->全角ANK
  2214.     WORD fSpaceToJank:1;    // 半角空白->全角ANK
  2215.     WORD fJhiraToKana:1;    //2.99C 970324 全角ひらがな->半角カナ
  2216.     WORD reserved:1;
  2217.     WORD fAc:1;                // オートコレクト
  2218.     WORD fJbraceToBrace:1;    //2.00B 「」を[]へ変換
  2219.     WORD reserved2:14;
  2220. } CHARCONVERT;
  2221.  
  2222. //1.99B for WM_TXGETPROPERY
  2223. typedef struct {
  2224.     WORD fTxWinApp:1;
  2225.     WORD freserved1:15;
  2226.     WORD freserved2:16;
  2227. } TXPROPERTY;
  2228.  
  2229. //1.99C 現在画面に表示中の行についての情報
  2230. typedef struct {
  2231.     BYTE fDirty:1;    // 表がアンダーライン表示で消された
  2232.     BYTE reserved:7;
  2233. } LINEINFO;
  2234.  
  2235. // 書式文字列
  2236. #define HEAD_N        6        // 見出し数
  2237. #define TITLE_N        6        //1.90 見出し数
  2238. // 見出し1-3文字列
  2239. // 正規表現を指定できるようにバッファを大きくとってある
  2240. #define SZTITLE_N    3            // タイトル文字列数
  2241. #define CCHTITLE    80
  2242. // 書式文字列
  2243. // 印刷スタイルに入れたほうが良い様な向きもあるが、テキストに固有な属性と考える。
  2244. // たとえば、Cソースプログラムとテキストファイルとでは、書式文字列は全く異なった
  2245. // ものになり、これを印刷スタイルに入れると共有できなくなってしまう。
  2246. #define CCHFORMAT    20    // CCHTITLEより短いこと!
  2247. // この定義を変更したら、_config.c tszformat[]も変更すること
  2248. // また、config.cなどが#defineの順番に依存している
  2249. // 文字装飾
  2250. #define SZFORMAT_BOLD_TOP        0        // 太字
  2251. #define SZFORMAT_BOLD_END        1
  2252. #define SZFORMAT_UNDERLINE_TOP    2        // 下線
  2253. #define SZFORMAT_UNDERLINE_END    3
  2254. #define SZFORMAT_ITALIC_TOP        4        // 斜体
  2255. #define SZFORMAT_ITALIC_END        5
  2256. // 見出し
  2257. #define SZFORMAT_TITLE4            6
  2258. #define SZFORMAT_TITLE5            7
  2259. #define SZFORMAT_TITLE6            8
  2260. // 箇条書き
  2261. #define SZFORMAT_ARTICLE        9        // 箇条書き
  2262. #define SZFORMAT_ARTICLENUM        10        // 番号付き箇条書き
  2263. #define SZFORMAT_ARTICLENOTICE    11        // 注釈箇条書き
  2264. // 段落書式
  2265. #define SZFORMAT_INDENT            12        // インデント
  2266. #define SZFORMAT_CENTER            13        // センタリング
  2267. #define SZFORMAT_RIGHT            14        // 右寄せ
  2268. #define SZFORMAT_FORMFEED        15        // 改ページ
  2269. #define SZFORMAT_TABLE            16        // 表(TABで項目を区切る)
  2270. #define SZFORMAT_TAB            17        // 桁揃えまたはフローインデント
  2271.                                         // (境界線の無い表。TABで項目を区切る)
  2272. // 特殊文字
  2273. #define SZFORMAT_BR                18        // 改行(改段ではない)
  2274. #define SZFORMAT_BITMAP            19        // 図
  2275. #define SZFORMAT_HR                20        // 水平線
  2276. //2.98 970305 SZFORMATが増えてWZ.CFGの互換性がなくなった
  2277. #define SZFORMAT_FOOTNOTE_TOP    21        // 脚注
  2278. #define SZFORMAT_FOOTNOTE_END    22        // 
  2279. #define SZFORMAT_RUBY_TOP        23        // ルビ
  2280. #define SZFORMAT_RUBY_END        24        // 
  2281. #define SZFORMAT_FONT_TOP        25        // 特殊文字
  2282. #define SZFORMAT_FONT_END        26        // 
  2283. #define SZFORMAT_PROOF_TOP        27        // 校正
  2284. #define SZFORMAT_PROOF_END        28        // 
  2285. #define SZFORMAT_LINK_TOP        29        // リンク
  2286. #define SZFORMAT_LINK_END        30        // 
  2287. #define SZFORMAT_SEPARATOR        31        // ルビ、フォント、校正の項目の区切り記号
  2288. #define SZFORMAT_BODY            32        // 本文の開始
  2289. #define FORMAT_N                33        // 書式文字列数
  2290. // タイトル文字列正規化
  2291. #define COLORTITLE_N    (SZTITLE_N + SZFORMAT_TAB - SZFORMAT_TITLE4 + 1)
  2292.  
  2293. //2.93 多重化コンテキスト
  2294. // sizeof(TX)に影響を与える
  2295. typedef struct {
  2296.     IFILE address;
  2297.     BYTE ly;
  2298.     SIGNED_WORD lyUnder;
  2299.     SIGNED_WORD xbase;
  2300.     BYTE lcywindow;
  2301.     IFILE cliptop;
  2302.     WORD fClip:1;
  2303.     WORD fClipSearch:1;
  2304.     WORD fClipMouse:1;
  2305.     WORD freserved:13;
  2306.     WORD reserved;
  2307. } MT_CONTEXT;
  2308.  
  2309. //2.93 UNDOPACKコンテキスト
  2310. // sizeof(TX)に影響を与える
  2311. typedef struct {
  2312.     SIGNED_BYTE fPacking;    // for クライアント動作チェック
  2313.     IFILE adrPackTop;        // pack開始時text->pundo
  2314.     WORD nPacked;            // packされたコマンド数
  2315.     WORD fPackParaatr:1;    //2.98 970307 UC_PARAATR_WRITEがpackされた?
  2316.     WORD fReserved:15;        //2.98 970307 
  2317. } UNDOPACK_CONTEXT;
  2318.  
  2319. //2.93 GENEコンテキスト
  2320. typedef DWORD IGENE;// 世代番号
  2321. typedef struct {
  2322.     IGENE igene;                // 世代
  2323.                                 // openテキストが0世代
  2324.     BOOL fBack;                    // 直前の世代移動は、遡り移動だった?
  2325.     DWORD nSave;                // UC_OPEN/SAVE/AUTOSAVE counter
  2326.     DWORD nOpen;                // UC_OPEN counter
  2327.     TIME time;                    // 世代
  2328.     mchar szComment[CCHWORD];    //1.97 コメント
  2329. } GENESTAT;
  2330.  
  2331. typedef struct {
  2332.     mchar szdocname[CCHPATHNAME];    // 作業用DOCファイル名
  2333.     #ifdef __OLECPP__
  2334.     LPSTORAGE pIStorageDoc;            // 作業用DOCファイルのストレージオブジェクト
  2335.     LPSTORAGE pIStorageWz;            // .WZのload/save中のストレージ
  2336.     LPSTREAM pIStreamWz;            // .WZの文書データストリーム
  2337.     LPSTORAGE pIStorageWzDoc;        // .WZのオブジェクトストレージ
  2338.     #else
  2339.     LPVOID pIStorageDoc;
  2340.     LPVOID pIStorageWz;
  2341.     LPVOID pIStreamWz;
  2342.     LPVOID pIStorageWzDoc;
  2343.     #endif
  2344. } OLECONTEXT;
  2345.  
  2346. //2.94 970120 
  2347. // コマンドライン解析結果
  2348. typedef struct {
  2349.     BOOL fNeedCreateInstance;    // このコマンドラインの実行には、
  2350.                                 // 新しいインスタンスを生成する必要がある
  2351. // 以下、コマンドライン解析結果
  2352.     BOOL fNoTextPathSearch;        // テキストファイルのパス検索をしない
  2353.     BOOL fBinedit;                // バイナリエディトモード
  2354.     BOOL fBinary;                // 全角文字を半角2文字として扱う
  2355.     BOOL fCompile;                // szForkのコンパイルを行う
  2356.     BOOL fDump;                    // szForkのダンプを行う
  2357.     BOOL fFork;                    // szForkを実行
  2358.     BOOL fExecTxm;                // szForkを.txmマクロとして実行
  2359.     BOOL fViewer;                // ビューモードで起動する
  2360.     BOOL fPrint;                // 印刷のみ行う
  2361.     mchar szlpstyle[CCHLPSTYLE];//2.99D 970330 印刷スタイル名
  2362.     BOOL fNoWndBase;            // text->hwndbaseを表示しない(作成はされる)
  2363.     BOOL fnewfile;                // 新規ファイルとしてオープンする(VZ)
  2364.                                 // 旧static fnewfileはtextに持つ
  2365.     BOOL fNoCheckDuplicate;        // 多重化でもなく、二重化でもなく、
  2366.                                 // ファイルを複数窓でオープンする
  2367.     BYTE modeTxc;                // macroCompile時のTX-Cのモード
  2368.                                 // 0:default,1:TX-C16,2:TX-C32
  2369.     HWND hwndParent;            // txOpenによるオープンの場合、
  2370.                                 // txOpenを実行したhwndbase
  2371.     HWND hwndOwner;                // text->hwndbaseのオーナウィンドウ
  2372.     BOOL fNoProfile;            // txOpenTextでプロファイルを参照しない
  2373.     BOOL fNoQuestion;            // 新規ファイルの問い合わせをしない
  2374.                                 // 旧fQの逆転フラグ
  2375.     BOOL fReadOnly;                // 修正はできるがセーブできない。
  2376.     BOOL fEditmodeOptionSeted;    // 起動時のeditmodeを指定
  2377.     BYTE editmodeOpen;            // 指定されたeditmode
  2378.     mchar szFork[CCHPATHNAME];    // 起動するマクロ名
  2379.     BYTE pagingmode;            // 起動時のページングモード
  2380.     BOOL fNoAddHist;            // 起動時にファイル名をヒストリに追加しない
  2381.     int nCmdShow;                // デフォルト値をセットしておくこと
  2382.     NPARA nparaJump;            // ジャンプ(0ならしない)
  2383.     int lxJump;                    // nparaJumpが真のとき段落先頭からlxバイトジャンプ
  2384.     mchar szFind[CCHWORD];        // 検索文字列の指定
  2385.     BOOL fAnchor;                // アンカーへジャンプ?
  2386.     BOOL fSingleFileName;        // コマンドラインに空白を含むファイル名をそのまま指定
  2387.                                 // このオプション指定は、ファイル名の指定の前に行なうこと
  2388.     BYTE fClip;                    // 範囲選択(0ならしない)
  2389.     IFILE cliptop;                // 範囲選択先頭
  2390.     IFILE clipend;                // 範囲選択末尾
  2391.     BOOL fOptTx;                // ".wz"としてオープン
  2392.     mchar szOpenExt[10];        // 拡張子の設定をロードして起動
  2393.     BOOL fDispstylemodeOptionSeted;// 表示スタイルを指定して起動
  2394.     BYTE dispstylemodeOpen;        // 指定された表示スタイル
  2395.     HWND ehHwnd;                // ウィンドウフック
  2396.     BYTE modeMail;                //2.98 970310 ehHwndのメーラ種類
  2397.     WORD fEhTextboxStart:1;        //2.99 970315 テキストキャプチャーで起動した?
  2398.     WORD fPrjOpen:1;            //2.99D 970330 プロジェクトのオープン?
  2399.     WORD fJumpAddress:1;        //3.00A 970428 adrJumpにジャンプ?
  2400.     WORD fPlaintext:1;            //3.00B1 970523 "ベタテキストファイル"の設定を読み込んでオープン?
  2401.     WORD fSpecialTemp:1;        //3.00B1 970523 fPlaintext/fBinedit指定は一時的なもので引き継がない?
  2402.     WORD fOpenPost:1;            //3.00B2 970614 
  2403.     WORD fReserved:10;
  2404.     IFILE adrJump;                //3.00A 970428 ジャンプ先アドレス
  2405.     BOOL fExecMacro;            // szexecmacroを起動後に実行
  2406.     mchar szexecmacro[CCHPATHNAME];    // 実行するマクロ名
  2407.     int fJumpLy;                // 't':lyを0に
  2408.                                 // 'c':lyを中央に
  2409.                                 // n:lyをn-1に
  2410.     BYTE fOpenQuit;                // 1:ファイルオープンダイアログを出して終了
  2411.                                 // 2:新規ファイル作成ダイアログを出して終了
  2412.     mchar szfilename[CCHPATHNAME];    // 編集ファイル名
  2413.                                 // 複数指定の場合は、先頭に指定されたファイル名
  2414.                                 // 後続のファイル名は無視される
  2415.     BOOL fMulti;                // ファイルが複数指定された?
  2416.     POINT pointopen;            // オープン位置
  2417.     SIZE sizeopen;                // オープンサイズ
  2418.     mchar sztemplate[CCHPATHNAME];    //2.97 970226 テンプレートファイル名
  2419. } CMDLINECONTEXT;
  2420.  
  2421. //2.94 970121 
  2422. typedef struct {    // 0で初期化してください
  2423.     TX* text;                // アウトラインを抽出するテキスト
  2424.     int iselFirst;            // 最初に選択する項目
  2425.     mchar *szhook;            // 標準ダイアログプロシジャーフック
  2426.     WORD fOutlineStd:1;        // 標準アウトライン機能用
  2427.     WORD fNoTitleHead:1;    // 見出し先頭に"・"を付けない
  2428.     WORD reservedBit:14;
  2429.     PMACROFUNC hook;        // 内部用
  2430.     //2.90 以下、内部用
  2431.     TX* textTree;            // text for tree
  2432.     HWND hwnd;                // dialog hwnd
  2433.     BYTE fUndisp;            // tlSetNow,tlFromHlしない
  2434.     WORD fDragging:1;        // 
  2435.     WORD fIniting:1;        // 
  2436.     WORD fLabelEditing:1;    // 
  2437.     WORD fLabelName:1;
  2438.     WORD modeWindow:2;        //2.99D 970330 
  2439.     WORD fReserved:10;        // 
  2440.     DWORD nEdit;            //2.99D 970331 再作成したときのtext->nEdit
  2441.     #ifdef __FLAT__
  2442.     HANDLE hDragItem;        // HTREEITEM
  2443.     BYTE reserved[21];        // sizeofを変化させないこと!
  2444.     #else
  2445.     BYTE reserved[27];        // sizeofを変化させないこと!
  2446.     #endif
  2447. } CHOOSEOUTLINE;
  2448.  
  2449. //2.94 970121 置換コンテキスト
  2450. //3.00A 970428 メンバ追加、sizeof変更
  2451. typedef struct {
  2452.     TX* text;
  2453.     mchar szReplace[CCHWORD];
  2454.     int lchReplace;
  2455.     int found;
  2456.     int count;
  2457.     int ly;
  2458.     int fClip;                //1.00E (UINT fClip:3)では足りない
  2459.     IFILE cliptop;
  2460.     WORD fClipMouse:1;
  2461.     WORD fSelectJump:1;
  2462.     WORD fSearchAllText:1;    //1.01A 
  2463.     WORD fReplacelist:1;    //2.92 置換リストで置換中?
  2464.     WORD fReplaceing:1;        //2.94 970121 置換中?
  2465.     WORD fGrepReplace:1;    //3.00A 970428 for Grep置換
  2466.     WORD fGrepReplaceTag:1;    //3.00A 970428 at fGrepReplace
  2467.                             // (SEARCH_RE タグ置換 | 置換リストからの置換文字列)かどうかセット
  2468.                             // TRUEなら置換文字列はrarg.szReplaceに入る
  2469.     WORD fReserved:9;        //3.00A 970428 
  2470.     HWND hwndReplace;        // 置換確認ダイアログ
  2471.     SEARCHMODE searchmode0;    //1.01A オリジナルsearchmode
  2472.     REPLACEARGEX rarg;        // Replace Argument
  2473. } REPLACECONTEXT;
  2474.  
  2475. #define MAX_NPARALETTERHEADER    200    //2.98 970308 レターヘッダの最大行数
  2476.  
  2477. //##TEXT構造体
  2478. //2.96 970205 lgcxClient,lgcyClient廃止
  2479. //2.97 970223 ft_itable,ft_npara廃止
  2480. struct tagtx {
  2481. // 以下、[変更可]まで、変更してはいけません。
  2482. // テキストが破壊されるおそれがあります。
  2483.     UINT sizeStruct;        // sizeof(struct tagtx) for dynamic arg check
  2484.     // textbuff
  2485.     mchar *buff;            // テキストバッファ
  2486.     mchar szfilename[CCHPATHNAME];
  2487.                             // ファイル名
  2488.                             // 新規のときは、szfilename[0] == 0
  2489.     IBUFF sizebuff;            // テキストバッファの現在のサイズ
  2490.     // textbuff pointer
  2491.     IBUFF cur;                // カーソル位置のテキストバッファオフセット
  2492.                             // text2の先頭
  2493.     IBUFF cur0;                // curの直前.cur0とcurの間にgapがある.
  2494.                             // gapの先頭
  2495.     IBUFF cury;                // カーソル表示行の先頭
  2496.                             // text1にある
  2497.     IBUFF curysize;            // 表示行のサイズ
  2498.     IBUFF curscreen;        // 画面先頭のテキストバッファオフセット
  2499.                             // text1にある
  2500.                             //1.00F IBUFF_ERRORのときは内容無効
  2501.     IBUFF cache;            // 前方参照に用いる
  2502.                             // 0のときはキャッシュ内容無効
  2503.     // view mode
  2504.     IBUFF FAR *ptbViewPage;    // 
  2505.     UINT iViewPage1;        // 
  2506.     UINT iViewPage2;        // 
  2507.     BBOOL fEditViewMode;    // 現在、view mode ?
  2508.                             // fSemiViewModeも見てください。
  2509.                             // あるいはtxGetViewmodeで調べるのが良いです。
  2510.     // textfile
  2511.     HFILE hf;                // ファイルハンドル
  2512.     IFILE sizefileReal;        // ファイルサイズ(txatrを含む実際のサイズ)
  2513.     IFILE sizefile;            // ファイルサイズ(テキストデータの分のみ)
  2514.     IFILE sizeload;            // ファイルから読み込んだバイト数
  2515.     BBOOL fOpen;            // Openされている?
  2516.     BBOOL fReadAll;            // ファイルを読み終えた
  2517.     BBOOL fAddEof;            // textbuffにEOFを追加した
  2518.     TIME timeFile;            // ファイルの日付
  2519.     TIME timeFile0;            //1.97 前回チェックしたときのファイルのタイムスタンプ
  2520.     BYTE crOpen;            // オープン時の改行コードの形式
  2521.         #define RETURNCODE_CRLF    0    //1.95 'D'から変更
  2522.         #define RETURNCODE_CR    1    //1.95 'M'から変更
  2523.         #define RETURNCODE_LF    2    //1.95 'U'から変更
  2524.     BYTE crSave;            // 保存するときの改行コード
  2525.     BYTE kcOpen;            //1.95 オープン時のファイルの文字コード
  2526.         #define KC_SJIS            0
  2527.         #define KC_JIS            1
  2528.         #define KC_EUC            2
  2529.         #define KC_UNICODE        3    // WZ32only
  2530.         // 内部コード
  2531.         #define KC_INTERNAL_TOP    100
  2532.         #define KC_EUC_SJIS        100    // EUC or SJIS
  2533.         #define KC_ASCII        101    // no kanji
  2534.     BYTE kcSave;            //1.95 保存するときの文字コード
  2535.     // temp
  2536.     mchar HUGE *hptemp[2];    // テンポラリメモリ
  2537.     mchar szTempName[2][CCHSPATHNAME];    // テンポラリファイル名
  2538.     HFILE htemp[2];            // テンポラリファイルハンドル
  2539.     BBOOL fCreatedTemp[2];    // _lcreatした?
  2540.     BBOOL fEditTempMem;        // 現在、テンポラリをメモリに作成中?
  2541.     IFILE sizetemp[2];        // テンポラリファイルのサイズ
  2542.                             // スワップアウトデータサイズの他に、
  2543.                             // ヘッダ情報などのサイズも含む
  2544.     IFILE temp1;            // テンポラリ1のサイズ
  2545.     IFILE temp2;            // テンポラリ2のサイズ
  2546.                             // スワップアウトデータサイズのみ。
  2547.                             // ヘッダ情報などのサイズは含まない
  2548.     // 行編集の取消
  2549.     mchar *pundopara;        // 行バッファ
  2550.     IBUFF sizeundopara;        // バッファサイズ
  2551.     IBUFF lchundopara;        // バッファ内の文字数
  2552.     BYTE fParaUndoing:2;    // 再入防止フラグ
  2553.     BYTE fNoParaUndoSet:2;    //2.98 970307 paraundoSetしない?
  2554.     // instance information
  2555.     HANDLE hInstance;        // インスタンスハンドル
  2556.     HANDLE hInstanceParent;    //2.90 親モジュールのインスタンスハンドル
  2557.     mchar* szCmdLine;        // コマンドライン
  2558.                             // text1の場合は、Windowsから渡されたコマンドライン
  2559.                             // txe起動の場合は、mallocedの場合もある
  2560.                             // TXWS_TEXTの場合は、malloced
  2561.     CMDLINECONTEXT* pcc;    //2.94 970120 コマンドラインコンテキスト
  2562.     // window
  2563.     HWND hwndbase;            // ベースウィンドウ(with menubar)のハンドル
  2564.     HWND hwndtext;            // テキストウィンドウのハンドル
  2565.     int cxClient;            // hwndTextのサイズ(ピクセル単位)
  2566.     int cyClient;            // hwndTextのサイズ(ピクセル単位)
  2567.     int cxBase;                // テキスト表示開始位置
  2568.     int cxCaret;            // キャレットの幅
  2569.     int cyCaret;            // キャレットの高さ
  2570.     int nOpenDC;
  2571.     // display/printer
  2572.     int cxLine;                //1.99C (内部用)GetLineSizeのcx計算結果
  2573.     int cxWidth;            //1.00F テキストの横幅(ディスプレイドット座標)
  2574.     int cxWidthWhole;        //2.96 970206 テキストの横幅(ディスプレイ座標)
  2575.                             // 1段組の場合はcxWidthと同じ。
  2576.                             // n段組の場合は、1段目の左端からn段目の右端までの幅
  2577.     LPRINT* lp;                //1.90 プリント設定
  2578.     int lpcxWidth;            //1.91A テキストの横幅(プリンタ座標)(一段分)
  2579.     int lpcyHeight;            //1.91A テキストのページ長(プリンタ座標)
  2580.     int lpcxChar;            //1.91A プリンタのフォント幅
  2581.     int lpcyChar;            //1.91A プリンタのフォント高さ
  2582.     int lpcxWidthWhole;        //2.96 970203 テキストの横幅(プリンタ座標)
  2583.                             // 1段組の場合はlpcxWidthと同じ。
  2584.                             // n段組の場合は、1段目の左端からn段目の右端までの幅
  2585.     //
  2586.     HDC hdc;
  2587.     HDC hdcMem;
  2588.     HDC hdcPrinter;            //1.90 プリンタのDC
  2589.                             // これが設定されている時は、プリンタに印刷中である
  2590.     //2.98 970306 ちらつかない表示
  2591.     HDC hdcText;            // オリジナルhdc
  2592.     HDC hdcVram;            // 仮想出力先hdc
  2593.     HBITMAP hdcBitmap0;        // 仮想出力先hdcのオリジナルhbitmapバックアップ
  2594.     // キー定義
  2595.     KEY* key;                // キー定義
  2596.     mchar *tszfkey;            // ファンクションキーの文字列
  2597.                             // size = FKEY_NKIND * FKEY_NKEY * FKEY_SIZE
  2598.         #define FKEY_SIZE        13    // 登録できる文字数+1
  2599.         #define FKEY_NKEY        12    // 最大キー数
  2600.         // シフトキーとの組み合わせ
  2601.         #define FKEY_NORMAL        0
  2602.         #define FKEY_SHIFT        1
  2603.         #define FKEY_CTRL        2
  2604.         #define FKEY_SHIFTCTRL    3
  2605.         #define FKEY_NKIND        4
  2606.     // ツールバー
  2607.     TXTOOLBAR *ttxtoolbar;    // ツールバーデータ
  2608.     int ntoolbar;            // ttxtoolbarの数
  2609.     HBITMAP hbitmapToolbar;    // ツールバービットマップ
  2610.     int cxToolbar;
  2611.     int cyToolbar;
  2612.     // for display
  2613.     HFONT hfont;            // フォントハンドル
  2614.     HFONT hfont2;            //1.00F フォント2ハンドル
  2615.     HBRUSH hbrushBack;        // WZのブラシ
  2616.     HBRUSH hbrushText;        // WZのブラシ
  2617.     HBRUSH hbrushBlock;        // 範囲選択時、反転表示用
  2618.     HBRUSH hpenUnderline;    // アンダーライン
  2619.     HPEN hpenNline;            // WZのペン
  2620.     HPEN hpenText;
  2621.     HPEN hpenBack;            //1.00F WZのペン
  2622.     HBITMAP hbitmapLf;        // WZのビットマップ
  2623.     HBITMAP hbitmapEof;
  2624.     HBITMAP hbitmapTab;
  2625.     HBITMAP hbitmapSpace;
  2626.     HBITMAP hbitmapFf;        //1.91A フォームフィードのビットマップ
  2627.     HPEN hpenBtnShadow;        // Windowsシステム色のペン
  2628.     HPEN hpenBtnShine;
  2629.     HPEN hpenWindowFrame;
  2630.     HPEN hpenBtnFace;
  2631.     HBRUSH hbrushBtnFace;    // Windowsシステム色のブラシ
  2632.     int lx;                    // カーソルX座標 (文字座標)
  2633.                             // lfProp時は、近似値(text->x / text->cxChar)
  2634.     int lx0;                // 縦移動時に使用
  2635.     int x;                    //1.00F カーソルX座標 (ドット座標)
  2636.     int x0;                    //1.00F 縦移動時に使用
  2637.     int xbase;                // basex
  2638.     int cxChar;                // 文字幅
  2639.     int cxCharMax;            //1.00F 1文字の最大幅
  2640.     int cxLetter;            //2.00E 字間をふくむ文字幅
  2641.     int ly;                    // カーソルy座標
  2642.     int lyUnder;            // アンダーラインy座標(非表示中は-1)
  2643.     int hideUnder;            //1.00F fListboxのフォーカス表示がHideされているか?
  2644.     int lcySmupper;            // 現在のスクロールマージンTopY
  2645.     int lcySmlower;            // 現在のスクロールマージンTailY
  2646.     int lcywindow;            // 表示行数(syTop,syTailの分も含む)
  2647.                             // editmode == 2のときは動的に変化します
  2648.                             // 0になることはない。必ず1以上になる
  2649.                             // 行の内容が全て表示できる分の値に設定されます。
  2650.                             // 但し、1に設定されている時は必ずしもこの通りではありません
  2651.                             // 必ずLINE_Nより5程度少なくなる
  2652.     int cyChar;                // 文字高さ
  2653.     int cyLine;                // 行高さ
  2654.     // display/edit flag
  2655.     HCURSOR hcursor;        // マウス砂時計表示時、元の形状
  2656.     int fNoCursor;            // マウス形状を変更しない
  2657.     int fUndisp;            // 非表示フラグ
  2658.     int fUndraw;            //2.00B 非描画フラグ
  2659.                             // fUndispだと描画しないだけでなく各種
  2660.                             // 計算なども行わないが、このフラグは単に
  2661.                             // 描画を行わない
  2662.     BBOOL fUndispCursor;    //1.00H3 txDispCursor/txDispLocateの処理をしない
  2663.                             // txDeletePara etc のちらつきをなくすため、
  2664.                             // 1.00Cで内部で実装したものを1.00H3で公開
  2665.     BBOOL fNomoveBase;        //1.00H3 画面の横スクロールをしない(text->basexを動かさない)
  2666.     int fHigh;                // Highspeed flag
  2667.                             // カーソル位置(cury,curysize)の計算をしない。
  2668.                             // npara/nlineなども計算しないのでズレます。
  2669.                             // editmodeが真ならnparaは計算します。
  2670.                             // 行の長さが長すぎる時の警告も出しません。
  2671.                             // <使用要注意>
  2672.                             // TXHIGHのAPIのみ使えます。
  2673.                             // それ以外のAPIは使えません。
  2674.                             // 使った場合の動作は保証しません。
  2675.                             // できるだけチェックをして回避していますが、
  2676.                             // テキストを破壊する恐れもあります。
  2677.                             // <使用後>
  2678.                             // txFlushCury()すること
  2679.                             // カーソルの位置が正しくありません。
  2680.                             // 位置を計算するにはtxJumpAddressを使ってください。
  2681.                             // ・txSetHigh/txResetHighを使えば、<使用後>の処理を自動で行います
  2682.     int lyHigh;                // txSetHigh()時、ly保存
  2683.     BBOOL fUndispSelect;    // 範囲選択を表示しない
  2684.     BBOOL fCtl3d;            // 1:ctl3dによる3D表示中
  2685.                             // 2:Windows95による3D表示中
  2686.     BBOOL fBreakOn;            // マクロ中断可?
  2687.     // clip
  2688.     int fClip;                        // 範囲選択モード
  2689.         #define CLIP_NONE        0    // 範囲選択されてない
  2690.         // 基本範囲選択
  2691.         #define CLIP_CHAR        10    // 文字単位
  2692.         #define CLIP_LINE        11    // 表示行単位
  2693.         #define CLIP_PARA        12    // 論理行単位
  2694.         #define CLIP_BOX        13    // 箱形
  2695.         #define CLIP_WORD        14    // 単語
  2696.         #define CLIP_SENTENCE    15    // 文
  2697.         // すべてを選択
  2698.         #define CLIP_ALL        20
  2699.         // txSelectGetMode,txSelectEx用
  2700.         #define CLIP_LINECUR    31
  2701.         #define CLIP_PARACUR    32
  2702.         // txSelectEx用
  2703.         #define CLIP_VZ            40
  2704.         #define CLIP_WZ            41
  2705.         #define CLIP_SEARCH        42    //2.99 970313 new
  2706.         #define CLIP_MOUSE        43    //2.99 970313 new
  2707.         // 内部用
  2708.         #define CLIP_PARA1        90    // 1論理行
  2709.         #define CLIP_DELSTRPREV    91    // BSによる文字列削除
  2710.         #define CLIP_DELSTRNEXT    92    // DELによる文字列削除
  2711.         // txClipCopyEx用
  2712.         #define CLIP_COPYPARA1    100    // カーソル論理行をコピー
  2713.     //2.95 970125 ビットフィールド化
  2714.     WORD fClipVz:1;            // VZ clip?
  2715.     WORD fClipWz:1;            // WZ clip?
  2716.                             // 最初に横に動かせば文字単位
  2717.                             // 下に動かせば論理行単位
  2718.     WORD fClipMouse:1;        // マウスによる範囲選択?
  2719.     WORD fClipCur:1;        //1.00F (WZ内部用)
  2720.                             // CLIP_PARA/CLIP_LINE時にカーソル位置も範囲に含めるか?
  2721.     WORD fClipSearch:1;        // 検索による範囲選択?
  2722.     WORD fClipPasteJump:1;    // 最後のtxPasteで、ペーストした分カーソルを移動した?
  2723.     WORD fDispUnderClip:1;    //1.00F 選択開始時fDispUnder
  2724.     WORD fKeyVkShift:2;        //2.96 970209 for キーボードマクロ時ms shiftキー範囲選択
  2725.                             // 0:実際のVK_SHIFTの押し下げ状態に従う
  2726.                             // 1:SHIFTは押されていないとみなす
  2727.                             // 2:SHIFTは押されているとみなす
  2728.     WORD fClipDrag:1;        //1.99I drag&drop-cut&paste
  2729.                             // 途中でtxSelectXXXが実行されたときはリセットする
  2730.     WORD fClipReserved:6;
  2731.     int lxClip;                // 範囲選択開始時lx
  2732.     int lyClip;                // 範囲選択開始時ly
  2733.     NPARA nparaClip;        // 範囲選択開始時npara
  2734.     NLINE nlineClip;        // 範囲選択開始時nline
  2735.     IFILE cliptop;            // 範囲選択開始位置
  2736.                             // 行単位の場合は行頭からになるので、
  2737.                             // clipcur0とは必ずしも一致しない
  2738.                             // Insert/Deleteでもズレないよう補正する
  2739.     IFILE clipcur0;            // 範囲選択開始時のカーソル位置のアドレス
  2740.                             // Insert/Deleteでズレるが問題ない
  2741.     IFILE cliptoppara;        // 範囲選択開始時の論理行頭のアドレス
  2742.                             // 必ずしも正確な値ではない
  2743.                             // Insert/Deleteでズレるが問題ない
  2744.     IFILE cliptopparatail;    //1.00F 範囲選択開始時の次の論理行頭のアドレス
  2745.                             // 必ずしも正確な値ではない
  2746.                             // Insert/Deleteでズレるが問題ない
  2747.     IBUFF clipend;            // ClipParaワーク
  2748.     BYTE modeFreeCursorClip;//1.00F 選択開始時modeFreeCursor
  2749.     IFILE cliptoptail;        //1.00F 範囲選択開始時の次の単語/文/行の先頭アドレス
  2750.     IFILE cliptopnow;        //1.00F 正確な選択開始アドレス(cliptopがベース)
  2751.     IFILE clipendnow;        //1.00F 正確な選択Tailアドレス(txGetAddressがベース)
  2752.     int xClip;                //1.00H6 範囲選択開始時x
  2753.     // scroll by scrollbar
  2754.     BBOOL fScrollSB;        // スクロールバーでスクロール中
  2755.     int lySB;                // カーソル位置(-1なら無効)
  2756.     // scrollbarによるスクロール開始時の情報
  2757.     NLINE nlineSB;            // npara/nline
  2758.     IFILE adrSB;            // カーソル位置
  2759.     int lxSB;                // lx
  2760.     int cxCaretSB;            // カーソルの幅
  2761.     int fClipSB;            //1.99F fClip
  2762.                             // 途中でtxSelectXXXが実行されたときはリセットする
  2763.                             // そうしないと、以前はtxFlushSelectNowで、
  2764.                             // fScrollSBならスクロール開始時の情報を範囲選択エリアとして
  2765.                             // 返していたが、選択モードを変更したときに、
  2766.                             // そのモードの情報が返されず、テキスト<->高速モード変換で
  2767.                             // テキストが破壊されることがあった。
  2768.                             // txSelectAllしてコピーし、テキストを全削除してペースト
  2769.                             // すると元に戻らなかった
  2770.     NPARA adrClipDrag;        //1.99I ドラッグを開始したときのnpara
  2771.     IFILE clippastetop;        //2.95 970125 最後にペーストした時のペースト開始アドレス
  2772.     IFILE clippasteend;        //2.95 970125 ペースト終了アドレス
  2773.     // 拡張ステータス
  2774.     // オフセットが変わらないようにトップダウンで拡張すること
  2775.                         // 以上、HSTRBLKなど、ポインタを置いてはいけない!
  2776. #ifdef __FLAT__
  2777.     BYTE reserved[19];        // 拡張用の余裕
  2778. #else
  2779.     BYTE reserved[21];        // 拡張用の余裕
  2780.                             //1.00F txwndhook,callbackbin,dialogをtext構造体から削除
  2781. #endif
  2782.     WORD sizeTxvar;            //3.00B2 970615 現在のtextローカル変数の確保数
  2783.     WORD nTxvar;            //3.00B2 970615 現在のtextローカル変数の数
  2784.     // 拡張ステータス
  2785.     // オフセットが変わらないようにボトムアップで拡張すること
  2786.     HBITMAP hbitmapBeamtab;    //3.00A 970427 
  2787.     BYTE fDispSilent;        //2.99E 970403 ちらつかない表示(現在の状態)
  2788.                             // WZ16では共通DCが足りなくなって16bitアプリの画面描画が
  2789.                             // できなくなることがあるので、
  2790.                             // ちらつかない表示はサポートしない
  2791.     LPRINT* lpWztext;        //2.99D 970401 WZ文書の文書に埋め込まれていたLPRINT
  2792.     BYTE fCopyingWinTs;        //2.99C 970325 HCLIP_WINとHCLIP_TS両方にコピー中?
  2793.     BYTE fDispFindEnable;    //2.99C 970323 検索文字列の色分けを実行?(設定から内部状態に変更)
  2794.     BBOOL fNoImeControl;    //2.90 IMEの制御をしない
  2795.                             //2.99 970320 BBOOLに拡大
  2796.     DWORD sizefileMax;        //2.99 970318 
  2797.                             // 0のときはファイルをすべて読み込む
  2798.                             // 1以上のときは、そのサイズまでしかファイルを読み込まない
  2799.                             // for preview
  2800.     DWORD txnMask;            //2.99 970317 WM_TXNOTIFYを送るかどうかを指定
  2801.                             // デフォルト値は0。なにも送らない
  2802.         #define TXNM_CHANGENPARA    0x0001
  2803.         #define TXNM_CHANGEX        0x0002
  2804.         #define TXNM_REQUESTRESIZE    0x0004
  2805.         #define TXNM_CONTROLTAB        0x0008
  2806.         #define TXNM_CONTROLF4        0x0010
  2807.     HBITMAP hdcBitmap;        //2.99 970317 仮想出力先hdcのhbitmap
  2808.     WORD articleNumber;        //2.99 970316 WordToEdit 現在の箇条書き番号
  2809.     DWORD wtmEhMoveWindow;    //2.99 970315 ehHwndを隠すため、MoveWindowを開始した時間
  2810.     BYTE fImeInputToWmChar;    //2.99 970314 IMEの入力をWM_CHARで処理?
  2811.     WZCMD wzcmdLastOp;        //2.99 970313 最後にユーザが実行したコマンド
  2812.     BYTE fNoFlushTable;        //2.98A 970311 tableFlushしない
  2813.     BYTE modeMail;            //2.98 970310 ehHwndのメーラ種類(0:テキストキャプチャー)
  2814.         #define MAIL_TEXTCAPTURE    0    //3.00A 970426
  2815.                                         // テキストキャプチャー
  2816.                                         // 従来も0はテキストキャプチャーの意味だが、
  2817.                                         // MAIL_TEXTCAPTUREというIDを定義した
  2818.         #define MAIL_TEXTBOX        1    //3.00A 970426 
  2819.                                         // 以下のメーラ以外のメーラ
  2820.         #define MAIL_MSMAIL            10    // Microsoft(R) Internet Mail(TM)
  2821.         #define MAIL_BECKY            11    // Becky!(TM)
  2822.         #define MAIL_ALMAIL            12    // AL-Mail(TM)
  2823.         #define MAIL_EUDORAPRO        13    // EUDORA Pro(TM)
  2824.         #define MAIL_VC4            14    // VC++4.2
  2825.         #define MAIL_NSMAIL            15    // Netscape Mail
  2826.         #define MAIL_NIM            16    // Nifty Manager
  2827.         #define MAIL_OUTLOOK        17    // Outlook
  2828.         #define MAIL_EXCHANGE        18    // Exchange
  2829.     WORD nparaLetterHeader;    //2.96 970206 レターヘッダの行数(0:なし)
  2830.     BYTE lyScreenEndResult;    //2.98 970307 Disp(DISP_GETCURSCREENEND)のly結果
  2831.     WORD fUndispLinenum:2;    //2.98 970306 行番号を表示しない
  2832.     WORD fNoScrollLinenum:2;//2.98 970306 行番号をスクロールしない
  2833.     WORD fReservedSilent:12;
  2834.     TYMALLOC* tymPlugatr;    //2.97 970217 PLUGATR
  2835.     SIGNED_WORD lpyLetterHeader;    //2.96 970206 レターヘッダの高さ(0:不明)
  2836.     TX* txParentDC;            //2.96 970203 親DC
  2837.     // テキストローカル変数
  2838.     #ifdef TXVAR_DEFINED
  2839.     TXVAR* tTxvar;            //2.95 970129 textローカル変数
  2840.     #else
  2841.     LPVOID tTxvar;
  2842.     #endif
  2843.     BYTE reservednTxvar;    //2.95 970129 現在のtextローカル変数の数
  2844.     //2.94 970121 outline
  2845.     TX* txOutline;            //2.94 970121 head
  2846.     CHOOSEOUTLINE* outlineContext;    //2.94 970121 
  2847.     HWND hwndOutline;
  2848.     WORD fDestorying:1;        //2.94 970121 textを破棄中?
  2849.     WORD fLastFocusOutline:1;//2.95 970129 最後にSETFOCUSされたので、hwndOutlineか?
  2850.     WORD fOutline:1;        //2.00E 現在アウトラインウィンドウ表示中?
  2851.     WORD fOutlineHV:1;        //2.99A 970321 浮動型アウトライン?
  2852.     WORD fOutlineReserved:12;
  2853.     WORD cxOutline;            //2.00E5 プロファイルにウィンドウサイズの保存をするとき、この分減らす
  2854.     BYTE fNoOutlineFlush;    //2.00E4 このフラグが立っているときはアウトラインの自動更新しない
  2855.         #define OUTLINEOP_OPEN    0    //2.99D 970330 開く
  2856.         #define OUTLINEOP_CLOSE    1    //2.99D 970330 閉じる
  2857.     // txSetEditmode option
  2858.     WORD fTxsemHtmlInside:1;//2.97 970221 HTMLの<BODY>内のタグとして変換
  2859.     WORD fTxsemHtmlTagConvert:1;//2.97 970221 HTMLのTAGを解釈して削除
  2860.     WORD fTxsemNoUI:1;        //2.97 970221 UIを出さない
  2861.     WORD fTxsemNoChangeReturn:1;//2.97 970222 改行コードをいじらない
  2862.     WORD fTxsemForceConvert:1;    //2.97A 970303 必ずコンバートする。バックアップ/リストアはしない。
  2863.     WORD fTxsemHtmlAtTemplate:1;//2.98 970305 テンプレート実行中(<WZ...>をタグとみなさない)
  2864.     WORD fTxsemProofProcess:1;//2.98 970305 次回のWordToEditで校正を処理する?
  2865.     WORD fTxsemToPlaintext:2;    //2.99 970316 プレーンテキストへ変換
  2866.     WORD fTxsemToFormtext:2;    //2.99 970316 整形テキストへ変換
  2867.                                 // fTxsemToPlaintextもTRUEにしてください。
  2868.     WORD fTxsemBreakAble:2;        //3.00B1 970612 {Esc}で中止可能?
  2869.     WORD fTxsemBreaked:1;        //3.00B1 970612 {Esc}で中止された?
  2870.     WORD fTxsemReserved:2;
  2871.     //
  2872.     OLECONTEXT* pOleContext;//2.94 970118 OLEコンテキスト
  2873.     DWORD FlushCuryResult;    //2.93 内部ワーク
  2874.     //2.93 undo
  2875.     //2.90 text1以外もundo対応
  2876.     BYTE uc;                // UC
  2877.     UNDOPACK_CONTEXT undopack[2];
  2878.     TX* ttextUndo;            //2.90 undoバッファ textUndo[0],textUndo[1]が有効
  2879.     BYTE adrTextUndoTop;    //2.90 undoバッファのヘッダ長
  2880.     WORD fEnableUndo:1;        //2.90 undoを行う?
  2881.     WORD fTextUndoInited:1;    //2.90 textUndo inited?
  2882.     WORD fUndoing:1;        //2.93 アンドゥとリドゥの区別
  2883.     WORD fUndoExec:1;        //2.93 undo()中かどうか
  2884.     WORD fUndoView:1;        //2.93 undoバッファのビューモード
  2885.     WORD fGeneMoving:5;        //2.93 世代移動中?
  2886.     WORD fGeneInvalid:1;    //2.94 970121 世代管理データを無効にした?
  2887.     WORD fNoUndoAtr:2;        //2.98 970306 charatr,paraatrの変更をundoに加えない?
  2888.     WORD fUndoAlloced:1;    //2.99E 970403 ttextUndoはallocされたもの?
  2889.     WORD fUndoReserved:2;
  2890.     BYTE fNoUndoAdd;        //1.90 0以外ならundoAddされない
  2891.     GENESTAT* genestat;        //2.93 
  2892.     LPBYTE pGeneComment;    //1.97 世代コメント(CCHWORD)
  2893.                             //2.99C 970324 高速オープン対応
  2894.     //2.93 新2重化、多重化
  2895.     HWND hwndtext2;            // 多重化
  2896.     TX* text2;                // 2重化、ファイラーダブルウィンドウ
  2897.                             // fMultiChildなら、親textへのリンク
  2898.     MT_CONTEXT mt_context[2];
  2899.     WORD modeMulti:8;
  2900.         #define MM_DUP        1
  2901.         #define MM_MULTI    2
  2902.         #define MM_FILER    3
  2903.         #define MM_GENE        4
  2904.     WORD fMultiChild:1;        // 子供側のウィンドウである
  2905.     WORD fFocus2:1;            // hwndtext2がtextの現在位置を表示している?
  2906.     WORD fLastFocus2:1;        // 最後にSETFOCUSされたのがhwndtext2かどうか?
  2907.     WORD freservedm:5;
  2908.     HWND hwndLastFocus;        //2.96A 970211 最後にSetFocusされたhwndtext
  2909.                             // text->fFrameウィンドウにのみ有効値がセットされる
  2910.     //
  2911.     SIGNED_WORD lfHeightIme;//3.00A3 970507 IMEにセットするフォント高さ WZ32 only
  2912.     PARAATR_TEXT_CONTEXT* paraatrtextcontext;    //3.00B1 970521 変更行の保持
  2913.     BYTE reservedFO[2];        //3.00A 970430 txNext,txPrev廃止
  2914.     // for 高速オープン
  2915.     WORD keyPre;            //2.90 2ストロークキーの1ストローク目
  2916.     mchar* tszColorTitle[COLORTITLE_N];    //2.93 タイトル文字列正規化
  2917.     BYTE tlchColorTitle[COLORTITLE_N];    //2.93 
  2918.     BBOOL fReTitle;            //1.93 tsztitleに正規表現が含まれている?
  2919.     WORD dlgcode;            //2.92 TXWS_TEXTのWM_GETDLGCODE処理コード
  2920.                             // default:DLGC_WANTALLKEYS
  2921.     BYTE nMldialog;            //2.92 オープン中のモードレスダイアログ数(text1のみセットされる)
  2922.     // paraform/eh
  2923.     DWORD wtmProfile;        //2.99 970314 for profile debug
  2924.     SIGNED_WORD ehHwndPosLeft;    //2.99 970315 ehHwndのオリジナル位置を保存
  2925.     SIGNED_WORD ehHwndPosTop;    //2.99 970315 ehHwndのオリジナル位置を保存
  2926.                                 //2.98 970310 txOverlap廃止
  2927.     TX* txparaatr2;            //2.90 PARAATR2
  2928.     WORD fParaforming:1;    //2.92 paraform中の対象text?
  2929.     WORD fParaformText:1;    //2.92 paraform用のinline text?
  2930.     WORD fEnableAutoParaform:1;//2.99 970314 自動インライン整形を行う?
  2931.     WORD fEhHwndUndisp:2;    //2.98 970310 ehHwndをUndisp中?
  2932.     WORD fEhTextboxStart:1;    //2.99 970315 テキストキャプチャーで起動した?
  2933.     WORD fParaformReserved:10;
  2934.     mchar* szStartParaform;    //2.90 IMEの文字入力でparaformを開始する場合
  2935.                             // 入力された文字列(malloced)
  2936.     TX* textParaform;        //2.90 fParaforming:  インラインtext
  2937.                             //     fParaformText: 編集text
  2938.                             // インライン整形中は!=NULL、インライン整形中は=NULLになる。
  2939.     WORD yTopParaform;        //2.92 paraform表示マスクyTop
  2940.     WORD yEndParaform;        //2.92 yEnd
  2941.     MAIL* mail;                //2.90 MAIL構造体
  2942.     HWND ehHwndBase;        //2.90 ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
  2943.                             // NULLの場合もある
  2944.     HWND ehHwnd;            //2.90 他アプリ エディトボックス ウィンドウフック
  2945.     //2.99E 970403 paraform op
  2946.     #define PARAFORMOP_AUTOMODE_ON            1    //2.99E 970403 自動インライン整形ON
  2947.     #define PARAFORMOP_AUTOMODE_OFF            2    //2.99E 970403 自動インライン整形OFF
  2948.     #define PARAFORMOP_NOTIFY_CURSORMOVE    3    //2.99E 970403 カーソル移動通知(arg = VK)
  2949.     // status
  2950.     WORD fModeress:1;
  2951.     WORD fReadMode:1;        //2.95 970129 閲覧モード
  2952.     WORD fDisenableForModal:1;//2.96A 970211 モーダルダイアログ用にdis enable中?
  2953.     WORD fEnableWindow0:1;    //2.96A 970211 fDisenableForModalする前の状態
  2954.     WORD fEnableWindowing:1;//2.96A 970212 WM_ENABLEを無視する?
  2955.     WORD fAllocedSzCmdLine:1;//2.96A 970213 szCmdLineはmallocされている?
  2956.     WORD flpPreview:1;        //2.96 970202 印刷プレビュー?|印刷実行中?
  2957.     WORD fBinedit:1;        //2.00E バイナリエディトモード
  2958.     WORD fEnvDev:1;            //2.00E 開発中?
  2959.     WORD flpCalc:1;            //2.00E6 印刷の計算実行
  2960.     WORD flpPreviewWorking:1;//3.00B1 970512 Preview準備中(旧ReservedfNoImeControl)
  2961.                             // これやる前はymikomeさんのFMVでプレビューがとても遅かった
  2962.                             // 18sec->5secに早くなった。
  2963.     WORD fNoFlushSelectNow:1;//2.90 txFlushSelectNowしない
  2964.     WORD fHkSendMailed:1;    //2.90 wzhookでSendMailした
  2965.     WORD fWzc:1;            //2.90 このWZはWZコントロール?
  2966.                             // text1のみセットされる。
  2967.     WORD fDispFindGrep:1;    //2.99C 970326 fDispFindEnableでgrep用の色分けをする?
  2968.     WORD fFrame:1;            //2.93 表テキスト?
  2969.                             // 裏テキスト、WZコントロールのtextの場合はFALSE
  2970.     // status
  2971.     WORD fTbsEdit:1;        //3.00A 970430 タイトルバーに(変更)を表示しているか?
  2972.                             //3.00A 970430 fFrameClosed廃止
  2973.     WORD fWordToEditing:1;    //2.94 970118 WordToEdit中?
  2974.     WORD fWzOleFiling:1;    //2.94 970119 .WZをOLEにload/save中?
  2975.     WORD fImeWasOn:1;        //2.94 970121 IMEがONだった
  2976.     WORD fRecruit:1;        //2.00D 
  2977.     WORD fNoFlushBaseDisp:2;//2.98A 970311 txFlushBaseでtxDispAllしない
  2978.     WORD fFlushBaseDisped:1;//2.98A 970311 fNoFlushBaseDisp中にtxDispAllがあった
  2979.     WORD fReopenInternaling:1;//2.99 970315 txReopenInternal中?
  2980.     WORD fTxAllocText:1;    //2.99 970316 txAllocTextされたtext?
  2981.     WORD fSaving:2;            //2.99 970317 保存中?
  2982.     WORD fUserOperating:2;    //2.99 970317 ユーザ操作中?
  2983.     WORD configDisuse:1;    //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
  2984.     WORD fClosedText1:1;    //2.99H 970405 これはすでに閉じられたtext1?
  2985.     // status
  2986.     WORD fWzbodyExist:1;    //2.97A 970227 <WZBODY>があった?
  2987.     WORD fEditToWording:1;    //2.98 970308 EditToWord中?
  2988.     WORD fWztext20:1;        //2.99D 970329 ファイルはWZ2.0のwztext?
  2989.     WORD fWztext20Error:1;    //2.99D 970329 WZ2.0のwztext読み込みで文書にサポートしてない機能が含まれていた?
  2990.     WORD fScrollbarProp:1;    //2.99D 970329 (未完成)プロポーショナルスクロールバーを使用? (copy from shcfg)
  2991.     WORD fSearchSetFont:1;    //2.99D 970330 検索ダイアログでSetFont中
  2992.     WORD fNoUndoParaatr:2;    //2.99J 970406 PARAATRのundoAddを実行しない?
  2993.     WORD fDispSilentUndisp:1;    //3.00A2 970506 
  2994.     WORD fDispLineEdit:1;    //3.00B1 970521 変更行表示
  2995.                             // 表テキストのみtxOpenTextでsh->config.fDispLineEditがセットされる
  2996.                             // 裏テキストではFALSEがセットされる
  2997.     WORD fNullTitle:1;        //3.00B1 970523 タイトル文字列がなしかどうか?
  2998.     WORD fUndispWmpaint:1;    //3.00B1 970610 WM_PAINTで描画しない?
  2999.     WORD fReplaceSetFont:1;    //3.00B1 970613 
  3000.     WORD fReservedFt:3;
  3001.     UNDISPCONTEXT tUndispContext[UNDISPCONTEXT_N];//1.97 
  3002.     // file kind
  3003.     BYTE modeText;            //2.95 970125 テキストのモード
  3004.         #define TEXT_PLAIN        0    // プレーンテキスト
  3005.         #define TEXT_TEXT        1    // 装飾・体裁付きテキスト文書
  3006.         #define TEXT_MAIL        2    // メール文書
  3007.         #define TEXT_WZ            3    // WZ文書
  3008.         #define TEXT_HTML        4    // HTML文書
  3009.         #define TEXT_C            5    // Cプログラム
  3010.         #define TEXT_PASCAL        6    // pascalプログラム
  3011.         #define TEXT_FORTRAN    7    // fortranプログラム
  3012.         #define TEXT_SCRIPT        8    // スクリプトプログラム
  3013.         #define TEXT_ASM        9    // アセンブラプログラム
  3014.         #define TEXT_BASIC        10    // BASICプログラム
  3015.     WORD fWztext:1;            //1.95 ファイルはwztext?
  3016.     WORD fWztextArc:1;        //1.97 fWztextで、なおかつ圧縮されてる
  3017.     WORD fWzconfig:1;        //1.95 !fWztextの時に、埋め込み設定あり?
  3018.                             // テキストへの設定の書き出しは、設定変更時に行う。
  3019.                             // editmode != 0の時は、保存時に書き出す
  3020.     WORD fForm:1;            //1.96 書式文字列の処理を行うかどうか
  3021.                             // FALSEなら詳細モードに移ってもテキストは絶対変化せず、
  3022.                             // 高速/詳細モードで見出しフォントハンドルも生成されない。
  3023.                             // for Cプログラム etc
  3024.     WORD fC:1;                //2.00B Cプログラム?
  3025.     WORD fOptTx:1;            //2.00B "--Ttx" option ?
  3026.     WORD fNoForm:1;            //2.00C3 HTML生タグ印刷用
  3027.     WORD fMail:1;            //2.90 メール文書
  3028.     WORD fParaatr2:1;        //2.90 PARAATR2使用?
  3029.     WORD fWztextOle:1;        //2.97A 970303 OLE入りの.WZの可能性あり。
  3030.     WORD fDirectoryAtr:2;    //2.99 970313 DIRECTORYATR内のファイル?
  3031.                             // 0:NO,1-3:index+1
  3032.     WORD fPlaintext:1;        //3.00B1 970523 ベタテキスト編集モード?
  3033.     WORD fReservedT:3;
  3034.     BYTE fHTML;                //1.90 HTMLテキスト?
  3035.     // memory
  3036.     LPBYTE pTxAtr;            //1.97 txcharatr等のTEXT構造体をアロケートしたメモリ
  3037.     LPBYTE pBitmapBuff;        //1.97 改行マークなどのビットマップデータバッファ
  3038.     LPBYTE pMemberMemory;    //1.97 ポインタメンバのためにアロケートメモリ
  3039.     // mark
  3040.     IFILE mark[MAXMARK];    // マーク
  3041. #if 1//3.00A3 970508 
  3042.     mchar* tszlpstyle;        //3.00A3 970508 印刷スタイル名 プロファイルに表示スタイル毎に覚えるようにした
  3043. #else
  3044.     mchar* tszmark;            //1.93 マーク地点の文字列([MAXMARK][CCHMARK])
  3045. #endif
  3046.     BYTE fNoMarkCur;        //2.95 970130 txMarkCurしない? (++,--)を使う
  3047.     // binary handle
  3048.     UINT cbRecord;            //1.93 レコード長(for バイナリアクセス at txRead/txWrite)
  3049.     UINT cbHeader;            //1.93 ヘッダ長(for バイナリアクセス at txRead/txWrite)
  3050.                             // 0ならヘッダなし
  3051.     //
  3052.     int fReport;            //1.93 論理行数の増減、文字挿入、削除をレポート?
  3053.                             // fHighが真の時は高速化のためレポートはされません。
  3054.     WORD fInitTcyLine:1;    //1.92 tcyLine初期化済み?
  3055.     WORD fWindowOpening:1;    //1.97 裏テキストウィンドウオープン中?
  3056.     WORD fTXWS_TEXT:1;        //1.97 TXWS_TEXTのtext?
  3057.     WORD fKcAuto:1;            //1.97 漢字コード自動変換する?
  3058.                             // text1は設定によりセットされます。
  3059.                             // それ以外のtextはtxOpenTextの前に明示的にセット
  3060.                             // してください。defaultはFALSEです。
  3061.     WORD fEnableHwndtext:1;    //1.99B text->hwndtext有効
  3062.                             // (text == text1 ? !text1->fNoWndText : text->hwndtext)
  3063.     WORD fEnableHwndbase:1;    //1.99B text->hwndbase有効
  3064.                             // (!text1->fNoWndBase)
  3065.     WORD fNoPrinterFont:1;    //1.99C EDITMODE_PRINT時にプリンタフォント作らない
  3066.     WORD fNoLoadCurAtr:1;    //1.99D LoadCurAtrしない
  3067.                             // charatrInsert等でdefaultのデータセットしない
  3068.     WORD fSilent:1;            //1.99D 1行が長すぎるなどの警告を出さない
  3069.     WORD fBinary:1;            //1.99D 全角文字を半角2文字として扱う
  3070.     WORD fHtmlErr:2;        //1.99E HTMLファイルのタグ解析でエラーが起きた
  3071.                             // 1:起きたばかり,2:状態を保持
  3072.     WORD fNoFilename:1;        //2.00B 一時的にファイル名の無い状態にする
  3073.     WORD fCurWestern:1;        //2.96 970208 
  3074.                             // 現在のカーソル行が欧文フォントかどうか示す。
  3075.                             // txDispCursorでフラッシュされるので、いつも必ずしも
  3076.                             // 正しいとは限らない。
  3077.                             //2.99 970320 fWestern -> fCurWestern
  3078.     // 以下、インデックスが[lcywindow + 5]までなら、
  3079.     // インデックスチェックが配列のサイズを超えていないかチェックしなくていい
  3080.     #define LINE_N    200        // 一画面中の最大表示行数
  3081.     LINEINFO *tLineinfo;    //1.99C 行情報[LINE_N]
  3082.     int *tcxAlign;            //1.92 アライン[LINE_N]
  3083.     int *tcyLine;            //1.92 行高さ[LINE_N]
  3084.     int *tcySpace;            //1.93 行間[LINE_N]
  3085.                             // LINEINT_2LINE/LINEINT_LINEENDなどで
  3086.                             // お尻に行間がある場合のその高さ
  3087.     // charatr/paraatr
  3088.     BBOOL editmode;            //1.00F3
  3089.         #define EDITMODE_TEXT    0
  3090.                 // とにかく高速!!
  3091.         #define EDITMODE_FORM    1
  3092.                 // editor with charatr/paraatr
  3093.                 // 機能を犠牲にしても速く!
  3094.         #define EDITMODE_PRINT    2
  3095.                 // WYSIWYG editor with charatr/paraatr
  3096.                 // 速度は遅くていいから印刷結果を見ながら編集
  3097.         #define EDITMODE_NULL    99
  3098.                 // for undo
  3099.         #define EDITMODE_WORD    1
  3100.                 // 内部用。EDITMODE_FORMまたはEDITMODE_PRINTの意味
  3101.     CHARATR charatr;        //1.90 
  3102.                             // これから入力される文字の文字装飾
  3103.                             // 必ずしもカーソル位置の文字の文字装飾とは限らない
  3104.     BYTE gapCharatr[CHARATR_GAP];
  3105.     PARAATR paraatr;        //1.90 カーソル行の段落書式
  3106.     BYTE gapParaatr[PARAATR_GAP];
  3107.     TX* txcharatr;            //1.00F3 charatr
  3108.     TX* txparaatr;            //1.00F3 paraatr
  3109.     BYTE fNoInsertCharatr;    //1.90 0以外ならcharatrInsertしない
  3110.     BYTE fNoInsertParaatr;    //1.90 0以外ならparaatrInsertしない
  3111.     BYTE fPlainParaatr;        //1.93 paraatrInsert/Deleteでの特殊処理しない?
  3112.     // page
  3113.     PAGEATR* tpageatr;        //1.91A ページアトリビュート
  3114.     NPAGE npage;            //1.91A (WYSIWYG)カーソル行のページ番号
  3115.                             // このページ番号は、紙一枚単位のページ番号ではなく、
  3116.                             // 段組一段単位のページ番号です。
  3117.     int nlineByPage;        //1.91A (WYSIWYG)カーソル行のページ先頭からの行数
  3118.     int lpy;                //1.91A (WYSIWYG)カーソル行のページ先頭からの高さ
  3119.                             // カーソル行の高さは含まない
  3120.                             // カーソル行の高さも含めると、カーソル行の高さが変わった時に大変。
  3121.     BYTE fNoCountPage;        //1.99C ページカウントをしない
  3122.     // 検索、置換
  3123.     REPLACECONTEXT* rc;        //2.94 970121 置換コンテキスト
  3124.     SEARCHMODE searchmode;    //1.01A 現在の検索オプション
  3125.     // font
  3126.     FONTTX *tfonttx;        //1.90 フォント指定
  3127.     BBOOL lfEditProp;        //1.00F プロポーショナルで編集中
  3128.                             // 半角フォントを指定している場合、
  3129.                             // 体裁、詳細モードの場合は必ず1になる
  3130.     // error
  3131.     BBOOL fTempError;        //1.00F テンポラリファイルエラー?
  3132.     int lasterror;            // エラー発生時のエラーコード
  3133.         #define TXERROR_SAVECANCELED    1    // 保存がキャンセルされた
  3134.     // IME
  3135. #ifdef __FLAT__
  3136.     #ifdef __IME_H
  3137.     LPIMESTRUCT lpIme;        //1.00H3 IMESTRUCT
  3138.     #else
  3139.     LPVOID lpIme;
  3140.     #endif
  3141. #endif
  3142.     // コモンダイアログ
  3143.     #ifdef __COMMDLG_H            // <commdlg.h>が#includeされている
  3144.     OPENFILENAME FAR *ofn;    // ofn
  3145.     #else
  3146.     LPBYTE ofn;
  3147.     #endif
  3148.     // 全インスタンスで共通
  3149.     struct tagSHARE FAR *share;    // 共有データ
  3150.     // key
  3151.     mchar key2;                    // 2ストロークキー入力用.1ストローク目のキーコード
  3152.     BBOOL fKeyD;                // VK_TAB etc work
  3153.     // WZ内部ワーク(multi threadの為。single threadならstaticデータにしても良い)
  3154.     BBOOL swapnear;
  3155.     IBUFF sizeSwapin;
  3156.     IBUFF sizeSwapout;
  3157.     // edit status
  3158.     TXPROPERTY txprop;        //1.99B 
  3159.     WORD fMessageWindow:1;    // printf/compile message etc 表示用インスタンス?
  3160.     WORD fmessageloop:1;    // メッセージループ中?
  3161.     WORD fmessageprocessing:1;
  3162.                             // メッセージ処理中? 制御を持っている?
  3163.     WORD fcompilesilent:1;    // コンパイルをサイレントで実行
  3164.     WORD fReadOnly:1;        // 修正はできるがセーブできない。
  3165.     WORD fNewFile:2;        // 新規ファイル?(1か2なら真なので注意)
  3166.     WORD fAutosaveMessage:2;//1.94 
  3167.     WORD fNotIdle:1;        //1.99B メッセージループ前の初期化中(text1のみ)
  3168.     WORD nMt:1;                //2.93 廃止したが、参照しているマクロのために残す
  3169.                             // 必ず0が代入されている
  3170.     WORD fIdleFirstDoing:1;    //2.97B 970303 idleFirst中
  3171.     WORD fDebug:4;            //1.99C デバッグ用
  3172.     BBOOL fTXE;                // this is TXE?
  3173.     BBOOL fGene;            // 世代表示のために立ち上げたテキスト?
  3174.     DWORD wtmLastOp;        // 最後にコマンドが実行されたWindows時間
  3175.     int nCmdShow;            // 現在のtext->hwndbaseのShowWindowモード
  3176.     mchar szexedir[CCHSPATHNAME];
  3177.                             // WZ.EXEの存在するパスが入っています。
  3178.                             // "a:\wz\"や"b:\"のように入っています。
  3179.                             // 次の様にして、WZ.EXEと同じディレクトリにあるファイルの
  3180.                             // フルパスを得ることができます
  3181.                             //         text->szexedir + "myfile"
  3182.     int nAutoSaveCmdNow;    // 前回のオートセーブから現在までに実行された編集コマンド数
  3183.     BBOOL fAutoSaving;        // autosave中
  3184.     BBOOL fdialogopen;        // dialogOpen中
  3185.     BBOOL fQuit;            // ウィンドウを開かず、終了
  3186.     //2.93 多重化実装変更に伴い、
  3187.     // fSwMt,hwndMt,idMt,fMtDoing,fMtEdit,fMtCursorMove,
  3188.     // fNoMt,fMtreserved,adrMtCur,lyMtCur
  3189.     // は廃止。
  3190.     WORD fTXH:1;            // TXH閲覧用
  3191.     WORD fSemiViewMode:1;   // セミViewMode
  3192.     WORD fHaveCaret:1;      // キャレットを持っている?
  3193.     WORD fHaveFocusLine:1;  //1.00F2 フォーカスラインを持っている?
  3194.     WORD fReplaceCanceled:1;//1.01A 直前のReplaceがキャンセルされた?
  3195.     WORD fReservedSOT:1;    //2.96 970201 fSearchOtherText廃止
  3196.     WORD fOpenLockedFile:1;    //2.00B 排他制御がかかっているファイルを開いた
  3197.     WORD fDispEofed:1;        //2.00B 最後に表示を行ったときにEOFを表示した?
  3198.     WORD fENQ:1;            //2.00C とりあえず
  3199.     WORD ftxuiSaveNamed:1;    //2.00E txuiSaveで名前を付けたときにONになり、txuiSaveを抜けるとOFFになる
  3200.     WORD fReservedInfo:6;
  3201. // 以下、[変更可]
  3202. // テキストを破壊することは多分ないと思います
  3203.     mchar pagingmode;    // ページングモード('S','C','P',' ')
  3204.     BBOOL fOverWrite;    // 上書きモード?
  3205.     BBOOL fEdit;        // 編集された?
  3206.     BBOOL fEditable;    // 修正できる?
  3207.                         // txOpenTextでデフォルト値設定
  3208.                         // fEditViewModeならFALSE、そうでなければTRUE
  3209.     DWORD nEdit;        //1.00F2 編集が行われた回数をカウントしています
  3210.                         // editmode切り替え時はカウントしません
  3211.     BYTE fNoCountNedit;    //1.97 nEditをカウントアップしない?
  3212.                         //3.00B1 970521 fDispLineEditの処理もしません
  3213.     WORD fNoWndBase:1;    // text1->hwndbaseを表示しない(作成はされる)
  3214.                         // 表示はマクロ側でWS_OVERLAPPEDWINDOWを作成して行う
  3215.                         // text1->hwndtextも作成されるが表示はされない
  3216.                         // デフォルトのtxOpenTextを実行しない
  3217.                         // 裏テキストではhwndbaseは作成されず、
  3218.                         // text->hwndbase = text1->hwndbaseとなる
  3219.     WORD fNoWndText:1;    // text1->hwndtextを表示しない(作成はされる)
  3220.                         // 表示はマクロ側で行う
  3221.                         // text1->hwndbaseは表示される
  3222.                         // 裏テキストではhwndtextは作成されず、NULLになる
  3223.     WORD fNoOpenText:1;    // デフォルトのtxOpenTextを実行しない
  3224.     WORD fNoProfile:1;    // txOpenTextでプロファイルを参照しない
  3225.     WORD fNoConfig:1;    // txSetFileNameで設定データをロードしない
  3226.                         //参考:txInitTextで、"標準"の設定がロードされます
  3227.     WORD fNoTextPathSearch:1;
  3228.                         // テキストファイルのパス検索をしない
  3229.     WORD fMenuOpenMouse:1;    // menuOpenで、マウスカーソル位置にメニューをオープン
  3230.     WORD fTxbackInitTxForm:1;//2.98 970304 この裏テキストで<TX>や埋め込み設定の解釈をする?
  3231.     WORD reservedff:8;
  3232.     BBOOL fListbox;        // リストボックスモード?
  3233.         #define TXLB_SIZEATR        2    // 行アトリビュートバイト数(1.00C)
  3234.         // リストボックスモード時の行アトリビュート1バイト目
  3235.             #define TXLB_NORMAL        ' '    // ノーマル
  3236.             #define TXLB_SELECT        '*'    // 選択されたファイル
  3237.         // リストボックスモード時の行アトリビュート2バイト目(1.00C)
  3238.             //    色コードを指定する
  3239.             //    '1'-'5'を指定するとrgbComment-rgbPreprocessor色で表示
  3240.             //    それ以外はテキスト色で表示
  3241.     //1.92 TXE動作指定用(wzmodeは廃止されました)
  3242.     // デフォルト値は全て0です。
  3243.     // __txenewで変更できます
  3244.     WORD fTxeNoExec:1;        // 起動せずにインスタンスを終了する
  3245.     WORD fTxeStdKeyCustmize:1;
  3246.                             //2.94 970121 WZ Editorのキー定義を読み込んでカスタマイズする
  3247.                             // ことを指定
  3248.     WORD fTxeOpenHigh:1;    //2.94 970122 TXEだがこのプロセスで高速オープン可能
  3249.     WORD fTxeSetFileName:1;    // txSetFileName(text,text->szfilename)する
  3250.     WORD fTxeNoWindowPos:1;    //2.96A 970212 起動時のhwndbaseウィンドウ位置セット処理をしない
  3251.     WORD reservedTxe:11;
  3252. //2.96A 970212 fTxeStdKey,fTxeStdMenu,fTxeStdToolbar廃止
  3253. // TXEでは、szKey,szMenu,szToolbarのキー,メニュー,ツールバーが読み込まれます
  3254.     WORD fNoCaret:1;        //2.00B キャレットを表示しない
  3255.     WORD fNoFlushKey:1;        //2.00E 設定ダイアログでキー定義をフラッシュしない
  3256.     WORD fConfigstdTextdata:1;//2.00E2 設定が存在しないとき"標準"の代わりに"テキストデータファイル"の設定を読む
  3257.     WORD fConfigsavePrim:1;    //2.00E2 設定をプログラムで変更したので
  3258.                             // 設定の保存はグループ名は使わず基礎設定名で行う
  3259.     WORD fKeywordNoSenseCase:1;    //2.94 キーワードの大小文字区別をしない
  3260.     WORD fResultTxeCloseMuiti:1;//2.94 970121 オープン結果:__txeclosemultiして終了した
  3261.     WORD fSpeakOn:1;        //2.94 970123 WZ音声化高速オープン対応 現在、音声ON ?
  3262.     WORD fMouseJumpx:2;        //3.00A 970427 txJumpXで文字の中心を基準とする
  3263.     WORD reservedD:7;
  3264.     NLINE npara;        // text->curの論理行番号
  3265.                         // nparaは高速/詳細モードでは大変重要な役割
  3266.                         // (段落書式indexとなる)を果たすので、
  3267.                         // 必ず正確な値にしておかないといけない。
  3268.     NLINE nline;        // 表示-行番号(fLineDが真の時しか数えない)
  3269.                         // fLineDが偽の時は、不定
  3270.                         //2.93 fCountNlineが真なら、常に数える
  3271.     BYTE fCountNline;    //2.93 !fLineDでもnlineのカウントをする
  3272.     BYTE fCountNpara;    //2.96A 970213 fHighでeditmode=0でもnparaのカウントをする
  3273.                         // カウントがされないときもあります。
  3274.     int lcxmask;        // 左からlcxmask文字は表示しない
  3275.                         // lcxmaskに満たない行は、マスクしない
  3276.     TX* txKeyword;            //2.94 キーワードテキスト 旧hkeywordは廃止
  3277.     // ステータスバー
  3278.     BBOOL fDispInfoEditor;    // HSL_INFOにEditorの現在状態を表示?
  3279.     signed char fDispSL1;    // クライアント描画エリア1
  3280.                             // 0なら無し、1以上なら幅、-幅ならセンタリング表示
  3281.     signed char fDispSL2;    // クライアント描画エリア2
  3282.     signed char fDispSL3;    // クライアント描画エリア3
  3283.     mchar *szprekey;
  3284.     // ステータスバーハンドル
  3285.     #define HSL_INFO        1
  3286.     #define HSL_1            2
  3287.     #define HSL_2            3
  3288.     #define HSL_3            4
  3289.     #define HSL_LOCATE        5
  3290.     #define HSL_EDIT        6
  3291.     #define HSL_PAGE        7
  3292.     #define HSL_BLOCK        8
  3293.     #define HSL_OVERWRITE    9
  3294.     #define HSL_CHARATR        10    //1.99E 
  3295.     #define HSL_PARAATR        11    //1.99E 
  3296.     #define HSL_EDITMODE    12    //1.99F 
  3297.     #define HSL_PREKEY        13
  3298.     #define HSL_RSPACE        14
  3299.     #define HSL_INLINEFORM    15    //2.91 
  3300.     #define HSL_N            16    // ハンドルの個数(NULLの分も含む)
  3301.     #define HSL_INFOBASE    100    //1.00F HSL_INFOが空白の時に
  3302.                                 // 表示する文字列をセットするのに使う
  3303.     #define HSL_SIMPLE        255    // シンプルモードのときに表示されるHSLペーン番号
  3304. // 表示
  3305.     BBOOL fDispControlSpace;    // 制御コードを半角空白で表示(折り返しは未対応) 
  3306.     BYTE dispstylemode;            // 現在の書式モード(0,1,2)
  3307.     #define DISPSTYLEMODE_N    4    //2.98A 970311 3->4に拡大
  3308.     int lfHeight;                // 0以外なら一時的にFONTTX_TEXTのポイント数を設定
  3309. // 編集
  3310.     BBOOL fViewMode;            // view mode(TRUEなら、fEditableはFALSEになる)
  3311.                                 // 今現在このモードかどうかfEditViewModeで見てください。
  3312.                                 // このフラグでは不明です。
  3313. // インターフェース
  3314.     mchar szKey[CCHNAME];        // キー(configに含まれないことに注意)
  3315. //#ポインタによるconfig
  3316.     FONTSTYLE* tFontstyle;        // スタイル(ファイル毎)
  3317. //#config
  3318. //2.99B 970322 configを増やしたらtxInitTxwsTextで初期値を設定すること!
  3319. BYTE configTop;        // configの先頭であることを表す
  3320.                     // 以下、HSTRBLKなど、ポインタを置いてはいけない!
  3321.     //一時的な設定
  3322.     //書式モード別に設定できる項目の、今現在の設定内容など。
  3323.     int width;                    // テキストの横幅
  3324.     int height;                    // 1ページの行数
  3325.     int modeWs;                    // ウィンドウサイズモード
  3326.     int lcxWindowDefault;        // ウィンドウの幅
  3327.     int lcyWindowDefault;        // 高さ
  3328.     int cySpace;                //1.99A 行間
  3329.     BBOOL fVertical;            // 縦書き?
  3330.     BBOOL fPageTurn;            // ページめくりモード?
  3331.     BBOOL fLineD;                // 表示行モード(1)/論理行モード(0)
  3332.     BYTE nSpaceTop;                // 上端を空けるドット数
  3333.     BYTE cxSpace;                //2.00E 字間
  3334.     BYTE nClm;                    //2.93 段数
  3335.     BBOOL lfProp;                // プロポーショナルフォントで表示&編集
  3336.     BBOOL lfWestern;            //2.96 970208 欧文表示を行うかどうか
  3337.                                 // 0:行わない
  3338.                                 // 1:行う(欧文がメイン)
  3339.                                 // 2:行う(日本語がメイン)
  3340.     BBOOL fSetWidthByLp;        //2.99A 970321 体裁モードで折り返し幅を印刷スタイルに合わせる?
  3341.     BYTE reservedTemp[27];
  3342. BYTE configFileTop;
  3343.                     // テキストファイル埋め込み設定
  3344.                     // configExtEndまでは、.wzにバイナリで埋め込まれるので、
  3345.                     // __BINCOMPATIBLE__とする
  3346. // 書式
  3347.     // 表示書式
  3348.     SIGNED_WORD twidth[DISPSTYLEMODE_N];//1.99C テキストの横幅
  3349.     SIGNED_WORD theight[DISPSTYLEMODE_N];//1.99C 1ページの行数
  3350.     SIGNED_WORD tcyint[DISPSTYLEMODE_N];//1.99C 行間
  3351.     BBOOL tfPageTurn[DISPSTYLEMODE_N];    //1.99C ページめくりモード
  3352.     BBOOL tfVertical[DISPSTYLEMODE_N];    //1.99D 縦書き
  3353.     // タブ
  3354.     SIGNED_WORD tabsize;        // タブカラム数
  3355.     // 印刷書式
  3356.     mchar szlpstyle[CCHLPSTYLE];// 印刷スタイル名
  3357.     BBOOL ReservedlflpProp;        //2.99 970320 廃止(プロポーショナルフォントで印刷)
  3358. // 画面
  3359.     // フォントオプション
  3360.     BBOOL tlfProp[DISPSTYLEMODE_N];        //2.99 970320 画面表示スタイルにプロポーショナル追加
  3361.     BBOOL tlfWestern[DISPSTYLEMODE_N];    //2.99 970320 画面表示スタイルに欧文追加
  3362.     BBOOL fWordlap;                // 英字禁則
  3363. // 書式文字列
  3364.     // 見出し1-3文字列
  3365.     mchar tsztitle[SZTITLE_N][CCHTITLE];// タイトル文字列
  3366.     // 書式文字列
  3367.     // 印刷スタイルに入れたほうが良い様な向きもあるが、テキストに固有な属性と考える。
  3368.     // たとえば、Cソースプログラムとテキストファイルとでは、書式文字列は全く異なった
  3369.     // ものになり、これを印刷スタイルに入れると共有できなくなってしまう。
  3370.     mchar tszformat[FORMAT_N][CCHFORMAT];    // 書式文字列
  3371. // 拡張用の余裕
  3372.     BYTE ReservedDateGarbage;    //2.97 970216 廃止
  3373.     WORD fAfArticleDisc:1;        //2.98 970309 「・」で箇条書きを指定
  3374.     WORD fAfTitle:1;            //2.98 970309 「.」で見出しを指定
  3375.     WORD fAfReserved:14;        //2.98 970309 オートフォーマットリザーブ
  3376.     CHARCONVERT charconvert;    //2.00C オートコレクト
  3377.     SIGNED_WORD tcxint[DISPSTYLEMODE_N];//2.00E 字間
  3378.     BYTE tnClm[DISPSTYLEMODE_N];//2.93 段組表示
  3379.     BYTE reservedFile[16];
  3380. BYTE configFileEnd;    // テキストファイル埋め込み設定end
  3381. BYTE configExtTop;    // 拡張子毎、拡張子のないファイル毎,.wzファイル毎の設定
  3382. // 書式
  3383.     // 表示書式
  3384.     BBOOL fSetWidthByWindow;    // ウィンドウの幅に合わせて、表示カラム数を自動設定する
  3385.     BBOOL tmodeWidth[DISPSTYLEMODE_N];
  3386.                                 //2.99A 970321 tfSetWidthByWindow意味変更してtmodeWidthに名称変更
  3387.                                 //2.99B 970322 modeWidthの定義値変更(WZ2.0と上位互換にした)
  3388.         #define MODEWIDTH_DESIGNATE    0// 文字数と行数を指定する
  3389.                                     //        テキスト,体裁:指定文字数 , 詳細:印刷幅
  3390.         #define MODEWIDTH_AUTO    1    // 標準
  3391.                                     //    テキスト,体裁:fSetWidthByWindow , 詳細:印刷幅
  3392.         #define MODEWIDTH_LPRINT 2    // 印刷スタイル文字数を使う。
  3393.                                     //    テキスト,体裁,詳細:印刷幅
  3394.     BYTE nlineHeader;            // ページ数計算に入れないヘッダ行数
  3395.     BBOOL fDispLine;            // 行番号表示
  3396.     BBOOL fDispUnder;            // アンダーライン表示
  3397.     BBOOL fDispRightMargin;        // 右マージンの表示
  3398.     BBOOL fMyFont;                //1.99E FALSE:標準の設定を使う
  3399.     // タブ
  3400.     BBOOL fTabToSpace;            // [TAB]でスペースコードを入力
  3401.     // オートインデント
  3402.     BBOOL modeAutoIndent;        //1.96 オートインデント
  3403.         #define AUTOINDENT_NONE        0    // しない
  3404.         #define AUTOINDENT_EXEC        1    // する
  3405.         #define AUTOINDENT_JSPACE    2    // 全角スペースもする
  3406.     // 禁則
  3407.     BBOOL fJkinsoku;            // 禁則
  3408.         //2.93 禁則を改良
  3409.         #define KINSOKU_OUT_HANG    1    // 追い出し、句読点ぶら下げ
  3410.         #define KINSOKU_OUT            2    // 追い出し、句読点追い出し
  3411.         #define KINSOKU_IN_HANG        3    // 追い込み、句読点も追い込み
  3412.     // 行番号モード
  3413.     BBOOL fConfigLineD;            // 表示行モード(1)/論理行モード(0)
  3414.     // 書式モード
  3415.     BYTE editmodeOpen;            // オープン時のeditmode
  3416.     BYTE dispstylemodeOpen;        // オープン時のdispstylemode
  3417.     BBOOL fConfigOutline;        // アウトライン付き?
  3418.                                 //2.00E fOutlineから名称変更。現在未使用
  3419.     BYTE reservedJ;
  3420. // 画面
  3421.     // フォント
  3422.     BBOOL lfBold;                // ボールド
  3423.     BBOOL lfBackslash;            //2.99 970320 バックスラッシュの表示
  3424.                                 // 0:標準
  3425.                                 // 1:英語フォントは'\'で表示
  3426. // 色分け
  3427.     // 色
  3428. BBOOL fMyColor;                    //1.99E FALSE:標準の設定を使う
  3429.     COLORREF rgbText;            // 通常のテキスト    (0)
  3430.     COLORREF rgbBack;            // 背景
  3431.     COLORREF rgbBlockText;        // ブロック内の文字色
  3432.     COLORREF rgbBlock;            // ブロック
  3433.     COLORREF rgbNline;            // 行番号
  3434.     COLORREF rgbUnderline;        // アンダーライン
  3435.     COLORREF rgbControl;        // 制御文字の色
  3436.     COLORREF rgbURL;            // URLの色    //2.99C 970326 fMyColor内に移動
  3437. BYTE MyColorEnd;                //1.99E ここまで
  3438.     // 制御文字
  3439.     BBOOL fDispTab;                // TABの表示
  3440.     BBOOL fDispJspace;            // 全角スペースの表示
  3441.     BBOOL fDispLf;                // CR の表示
  3442.     BBOOL fDispEof;                // EOFの表示
  3443.     // キーワード
  3444.     BBOOL fDispKeyword;            // 色分け
  3445.                                 //2.94 Bold:0x01,Under:0x02,Color:0x04 bit
  3446.         #define COLORING_NONE                0
  3447.         #define COLORING_BOLD                1
  3448.         #define COLORING_UNDER                2
  3449.         #define COLORING_BOLDUNDER            3
  3450.         #define COLORING_COLOR                4
  3451.         #define COLORING_COLOR_BOLD            5
  3452.         #define COLORING_COLOR_UNDER        6
  3453.         #define COLORING_COLOR_BOLDUNDER    7
  3454.     BBOOL reservedfDispKeyword;    //2.95 970127 fDispKeywordBold廃止
  3455.     mchar szkeywordfile[CCHNAME];// キーワードファイル名
  3456.     COLORREF rgbKeyword;        // キーワードの色
  3457.     // 見出し
  3458.     BBOOL fDispTitle;            // 色分け
  3459.     BBOOL fDispFindAtSearch;    //2.99C 970323 検索時に検索文字列の色分けを行う?
  3460.                                 //2.99C 970323 旧fDispFindEnable
  3461.                                 //2.95 970131 検索文字列の色分けを実行?
  3462.                                 //2.95 970127 fDispTitleBold廃止
  3463.     COLORREF rgbTitle;            // タイトルの色
  3464.     // 字句
  3465.     // ()内はリストボックスモード時の色分け
  3466.     BBOOL fDispParse;            // 字句の表示
  3467.     COLORREF rgbString;            // 文字列        (2)
  3468.     COLORREF rgbConst;            // 定数            (3)
  3469.     COLORREF rgbComment;        // コメント            (1)
  3470.     COLORREF rgbPreprocessor;    // プリプロセッサ    (5)
  3471.     COLORREF rgbErrorChar;        // エラー文字        (4)
  3472. // カーソル
  3473.     // カーソルモード
  3474.     BBOOL modeFreeCursor;        // フリーカーソル OFF(0),ON(1),VZ(2)
  3475. // インターフェース
  3476.     // IME
  3477.     SIGNED_WORD modeImeSetFocus;    // オープン時(1.00B以前はSETFOCUS時)のIME制御
  3478.         #define ISF_NONE    0
  3479.         #define ISF_OFF        1
  3480.         #define ISF_ON        2
  3481.         #define ISF_ONKANA    3
  3482.     mchar szToolbar[CCHNAME];    // ツールバーの名前(ビットマップキャッシュファイルのファイル名にも用いる)
  3483.     mchar szMenu[CCHNAME];        // メニューバー
  3484.     mchar szMenuMouseR[CCHNAME];// マウス右クリックメニュー
  3485.     mchar szMenuMouseRClip[CCHNAME];
  3486.                                 // 選択時のマウス右クリックメニュー
  3487. // 編集
  3488.     // 保存時の変換
  3489.     BYTE modeConvertSpaceAtSave;    // 保存時にタブをスペースに変換
  3490.                         // 0:変換しない
  3491.                         // 1:tab->spc
  3492.                         // 2:spc->tab
  3493.     BYTE modeConvertKanaAtSave;        //1.99E 保存時のカタカナの変換
  3494.                         // 0:変換しない
  3495.                         // 1:半角->全角
  3496.                         // 2:全角->半角
  3497.     BBOOL fDeleteTailSpaceAtSave;    // 保存時に行末の空白を除去
  3498.     // 詳細
  3499.     BBOOL fAppendEof;            // EOF コードの付加
  3500.                         // 0:そのまま
  3501.                         // 1:付加する
  3502.                         // 2:EOFを取り除く //2.00Eで追加
  3503.     BBOOL fddeServer;            // DDEのサーバとして登録
  3504. // 検索
  3505.     SEARCHMODE searchmodeInit;    // 検索オプション
  3506. // ウィンドウ
  3507.     // サイズ
  3508.     SIGNED_WORD tmodeWs[DISPSTYLEMODE_N];//1.99C サイズモード
  3509.         #define WS_DESTEXT        0    // 中身を指定
  3510.         #define WS_MAX            1    // 最大化
  3511.         #define WS_PAGE            2    //1.90 ページサイズで指定
  3512.         #define WS_DEFAULT        3    // default
  3513.         #define WS_DESIGNATE    4    // 外身で指定
  3514.                                     //1.90 2 -> 4に定義を変更
  3515.         #define WS_NONE            98    //1.90 何もしない
  3516.         #define WS_NOW            99    //1.01A 現在のウィンドウサイズを保持
  3517.                                     //画面分割等されているときは、分割前のサイズに戻す
  3518.     SIGNED_WORD tlcxWindowDefault[DISPSTYLEMODE_N];//1.99C ウィンドウの幅
  3519.     SIGNED_WORD tlcyWindowDefault[DISPSTYLEMODE_N];//1.99C 高さ
  3520.     // スクロールバー
  3521.     BBOOL fScrollBarH;            // 横スクロールバー
  3522.         #define SCROLLBAR_OFF    0
  3523.         #define SCROLLBAR_ON    1
  3524.         #define SCROLLBAR_AUTO    2    //2.99D 970329 2:自動を追加
  3525.     BBOOL fScrollBarV;            // 縦スクロールバー
  3526.     // バーの表示
  3527.     BBOOL fDispToolbar;            // ツールバー表示        実効値はtxGetDispToolbar()
  3528.     BBOOL fDispRuler;            // ルーラー表示            実効値はtxGetDispRuler()
  3529.     BBOOL fDispFunctionKey;        // ファンクションキーの表示    実効値はtxGetDispFuntionkey()
  3530.     BBOOL fDispStatusbar;        // ステータスバーを表示    実効値はtxGetDispStatusbar()
  3531.     // ルーラー
  3532.     BYTE nGageRuler;            // ゲージ単位(10 か 8)
  3533. // ヘルプ
  3534.     // 外部ヘルプ
  3535.     #define HELP_N    2
  3536.     mchar tszhelp[HELP_N][CCHWORD];
  3537.     // 編集
  3538.     BBOOL fConfigBinedit;        //2.00E バイナリエディト
  3539.     BBOOL fConfigInlineform;    //2.90 インライン整形モード
  3540.     BYTE widthInlineform;        //2.90 インライン整形標準折り返し幅
  3541.     BYTE indentsize;            //2.91 インデント増減単位文字数
  3542.     // 検索
  3543.     BYTE modeTagJump;            //2.92 タグジャンプオプション
  3544.         #define TAGJUMP_STD    0    // 標準
  3545.         #define TAGJUMP_VZ    1    // VZのタグジャンプも認識
  3546.     // 編集
  3547.     //2.93 世代管理を行うかどうかを拡張子ごとに設定できるようにした
  3548.     BBOOL fSaveUndoBuff;        // アンドゥバッファをファイルに保存する
  3549.     BBOOL fDispTag;                //2.97 970221 体裁/詳細モードでタグを表示する?
  3550.     //2.93 色分けの改良
  3551.     BBOOL fDispFind;            // 最後に検索した文字列を色分け?
  3552.     COLORREF rgbFind;            // その色
  3553.     mchar szKeyword[30];        // 即席キーワード指定
  3554.     BYTE filekind;                //2.95 970128 ファイルの種類
  3555.                                 // TEXT_PLAIN:標準
  3556.                                 // TEXT_WZ,TEXT_HTML,TEXT_C,
  3557.                                 // TEXT_PASCAL,TEXT_FORTRAN
  3558.                                 // TEXT_SCRIPT
  3559.                                 // の、いずれか。
  3560.     BYTE fDispFull;                //2.95 970128 
  3561.                                 // タイトルバーとメニューバーを画面外へ移動して画面を広くする
  3562.     BBOOL fHeadFontAuto;        //2.96 970208 見出しフォントの自動設定?
  3563.     BYTE modeDispProof;            //2.98 970305 校正の表示方法
  3564.         #define DISPPROOF_TARGET        0
  3565.         #define DISPPROOF_PROOF            1
  3566.         #define DISPPROOF_TARGET_PROOF    2
  3567.         #define DISPPROOF_DETAIL        3
  3568.     WORD fInlineformScenario:1;    //2.98 970309 インライン整形シナリオモード?
  3569.     WORD fInlineformIndentSpace:1;//2.99 970319 インライン整形 行頭空白入力でインデント開始?
  3570.     WORD modeInlineformZenhanSpace:2;//3.00A2 970507 インライン整形 全角と半角の間に空白空ける/詰める
  3571.                                 // 0:なにもしない
  3572.                                 // 1:空白を空ける
  3573.                                 // 2:空白を詰める
  3574.     WORD modeInlineformWordlap:2;    //3.00A2 970507 インライン整形 英字禁則
  3575.                                 // 0:文書の設定|英字禁則に従う
  3576.                                 // 1:英字禁則しない
  3577.                                 // 2:英字禁則する
  3578.     WORD lcxInlineformIndentTogaki:5;//3.00A2 970507 ト書きのインデント数(0..31) (0..15)では足りない
  3579.                                 // 0:デフォルト値(6)
  3580.     WORD lcxInlineformIndentSerifu:5;//3.00A2 970507 せりふの2行目のインデント数(0.31)
  3581.                                 // 0:デフォルト値(2)
  3582.     BBOOL fDispTitlebar;        //2.98 970310 タイトルバーを表示?
  3583.     BBOOL fColoringURL;            //2.99 970313 URLを色分け?
  3584. // 拡張用の余裕
  3585.     COLORREF rgbHottext;        //2.99G 970405 ホットテキストの色
  3586.     BYTE reservedExt[16];
  3587. BYTE configExtEnd;    // 拡張子毎、拡張子のないファイル毎の設定
  3588. BYTE configBaseTop;    // 共通の設定
  3589.                     // バイナリ出力されるので、
  3590.                     // __BINCOMPATIBLE__とする
  3591. // スクロール
  3592.     // 加速
  3593.     BYTE nKeyScrollAccStart;    // 加速開始行数
  3594.     BYTE nKeyScrollAcc;            // 加速中の一度にスクロールする行数
  3595.     // 横スクロール
  3596.     BYTE nCursorScrollH;        // 左右のスクロールを何文字毎に行うか
  3597.     // 自動スクロール
  3598.     SIGNED_WORD iScrollSpeed;    // スムーススクロール速度 (0..4)
  3599.     BBOOL fScrollSpeedDouble;    // 倍速
  3600.     BBOOL fVzEs;                // txJumpScreenTop,txJumpScreenEnd 2回でスムーススクロール
  3601.     // 詳細
  3602.     BBOOL fCursorMoveBySB;        // スクロールバーでカーソル移動?
  3603.     BBOOL fHalfPage;            // 全(0)/半(1)画面ページング
  3604. // カーソル
  3605.     // 形状
  3606.     SIGNED_WORD nCursorFaceInsert;    // カーソル形状 (挿入) (0..4)
  3607.     SIGNED_WORD nCursorFaceWrite;    // カーソル形状 (上書) (0..4)
  3608.         #define CURSORFACE_WINDOWS    0    // Windows標準
  3609.         #define CURSORFACE_FULL        1    // フル
  3610.         #define CURSORFACE_HALF        2    // 縦半分
  3611.         #define CURSORFACE_HALFHALF    3    // 縦1/4
  3612.         #define CURSORFACE_UNDERBAR    4    // アンダーバー
  3613.     // 詳細
  3614.     BBOOL fJumpCursorCenter;    // ジャンプ後カーソルを画面の中央へ
  3615.     BBOOL fCursorNoLf;            // カーソル横移動で行をまたがらない
  3616.     BBOOL fJumpTxPasteEnd;        // ブロックペースト後カーソル位置更新
  3617.     BBOOL reservedfCursorNoBlink;//2.98 970304 廃止
  3618.     BYTE fFlushNpageSometime;    //1.99H 詳細モードのとき時々ページ番号をフラッシュする
  3619.                                 // 0:フラッシュしない、1:既定値
  3620.                                 // 2..255:sec
  3621. // インターフェース
  3622.     // マウス
  3623.     BBOOL fSetLocateByMouseFocus;//マウスでSETFOCUSされたときにカーソル位置を移動
  3624.     BBOOL fMouseArrow;            // 1:arrow,0:Ibeam
  3625.     SIGNED_WORD iMouseScrollSpeed;    // マウスドラッグスクロール速度 (0..4)
  3626.     // IME
  3627.     BBOOL fImeOffKillFocus;        // フォーカスを失ったときにIMEをオフ?
  3628.     BBOOL fImeCursor;            // カーソル位置で漢字変換
  3629.     // 範囲選択の方式
  3630.     SIGNED_WORD modeMouseClip;    // 0:CUA,1:WZ,2:VZ
  3631.     SIGNED_WORD modeKeyClip;    // 0:CUA,1:WZ,2:VZ
  3632.                                 // SHIFT+矢印での選択モード
  3633.         #define MC_CUA    0        // 
  3634.         #define MC_WZ    1        // 
  3635.         #define MC_VZ    2        // 
  3636.     // 警告
  3637.     BBOOL fbeep;                // beep音を出す?
  3638.     BBOOL fWarnTextStackFull;    // テキストスタックfull時の警告
  3639.     // VZ
  3640.     BBOOL fUseMenuKey;            // @<英字キー>,@[特殊キー] 入力可
  3641.     BBOOL fVzTextBoxHist;        // テキストボックスヒストリ
  3642.                                 // VZと同じ感覚で方向キーを使って頭文字列検索できる
  3643.                                 // ヒストリつきのテキストボックスのコンボボックス表示はしない
  3644.                                 // コンボボックスだと、方向キーを奪い取るのができない?
  3645. // ファイル
  3646.     // ヒストリ
  3647.     SIGNED_WORD nDispFileHist;    // 最大数(0..70)
  3648.     BYTE modeDispFileHist;        // ヒストリ表示モード(0:フルパス,1:ファイル名優先)
  3649.     // ワイルドカード
  3650.     mchar szFilter[CCHWORD];    // GetOpenFileName szFilter
  3651.                                 // 例:"*.c;*.h,*.txt"
  3652.     // オープン時の確認
  3653.     BBOOL fConfirmNewFile;        // 新規ファイルの確認
  3654.     BBOOL fConfirmForeignFile;    // UNIX/MACファイルの確認
  3655.     // オープンダイアログ
  3656.     BBOOL modeOfn;                // ファイルオープンダイアログのモード
  3657.                                 // 0:旧型 1:Windows95型
  3658. // 編集
  3659.     // オートセーブ
  3660.     BBOOL fAutoSave;            // オートセーブを行う?
  3661.     WORD autosaveDevice:2;
  3662.         #define AUTOSAVE_ALLDEVICE        0
  3663.         #define AUTOSAVE_NOTFD            1
  3664.     WORD autosaveMode:2;
  3665.         #define AUTOSAVE_OVERWRITE        0
  3666.         #define AUTOSAVE_BACKUP            1
  3667.     WORD autosaveAtQuit:2;
  3668.         #define AUTOSAVE_QUIT_NONE        0
  3669.         #define AUTOSAVE_QUIT_DELETE    1
  3670.         #define AUTOSAVE_QUIT_BACKUP    2
  3671.     WORD autosaveAtOpen:2;
  3672.         #define AUTOSAVE_OPEN_MESSAGE    0
  3673.         #define AUTOSAVE_OPEN_ATTENTION    1
  3674.         #define AUTOSAVE_OPEN_BACKUP    2
  3675.     WORD autosaveReserved:7;
  3676.     WORD fInlineformQueryQuit:1;//3.00A2 970507 インライン整形 {Esc}で抜ける時確認?
  3677.     WORD nAutoSaveCmd;            // 編集コマンド数
  3678.     WORD secAutoSaveWait;        // 待ち時間
  3679.     // バックアップ
  3680.     BBOOL fBackup;                // バックアップファイルの作成
  3681.     mchar szBackup[CCHWORD];
  3682.                                 // バックアップ作成ディレクトリ
  3683.     // アンドゥ・世代管理
  3684.     BBOOL fUnlimitUndoBuff;        // アンドゥバッファサイズを制限しない
  3685.     WORD kbUndoBuffMax;            // アンドゥバッファの最大サイズ(KB)
  3686.     BBOOL fUndoContinue;        // 連続アンドゥ
  3687.                                 // カーソルを移動しないで行った
  3688.                                 // 挿入・削除・BSを一回の操作で一括アンドゥ
  3689.     #if 1//2.93 
  3690.     BYTE reservedBaseEdit;
  3691.     #else
  3692.     BBOOL fSaveUndoBuff;        // アンドゥバッファをファイルに保存する
  3693.     #endif
  3694.     // 詳細
  3695.     BBOOL fSaveEditContext;        // カーソル位置・マークをセーブ
  3696.     BBOOL fTempMem;                // テンポラリをメモリに作成
  3697.                                 // 今現在このモードかどうかは、このフラグでは不明
  3698.     BBOOL fMtFlushImmediately;    // 多重化:直ちに全ウィンドウに修正内容を反映
  3699.                                 //2.93 廃止:reserved
  3700. // 検索
  3701.     BYTE modeSearchDialog;        // 検索ダイアログモード
  3702.     BBOOL fVwxwExRexp;            // VWXWの拡張正規表現を使用
  3703.     BBOOL fDispSearch;            // 見つけた文字列を選択
  3704.     BBOOL fNoReplaceSelSearch;    // 選択文字列は置き換えない
  3705.     BBOOL fSearchTitle;            // VZ - タイトルサーチモード有効
  3706.     BBOOL fMiTakeSearchText;    // MIFES - [^\][^^]での検索文字列取得有効?
  3707. // マクロ
  3708.     // イベントマクロ
  3709.     mchar szmacroopen[30];            // オープン直後
  3710.     mchar szmacrosave[30];            // セーブ直前
  3711.     mchar szmacrosavepost[30];        // セーブ成功直後
  3712.     mchar szmacroclose[30];            // クローズ直前
  3713.     mchar szmacroview[30];            // ビューモードのオープン直後
  3714. // ウィンドウ
  3715.     // サイズ
  3716.     BYTE nSpaceTopH;            // 上端を空けるドット数
  3717.     BBOOL fSpaceLeft;            // 左端を空ける
  3718.     BBOOL fWsWideAtSplit;        // 分割表示を広く
  3719.     // 位置
  3720.     BBOOL fWsInsideDesk;        // オープン時、はみでない
  3721.     BBOOL fSaveWindowPos;        // ウィンドウ位置をセーブ
  3722.     // タイトルバー
  3723.     BBOOL fDispPathLc;            // ファイル名の小文字表示
  3724.     BBOOL fDispPathFull;        // ファイル名のフルパス表示
  3725.     // ファンクションバー
  3726.     SIGNED_WORD nFunctionKey;            // ファンクションキーの数
  3727.     // ステータスバー
  3728.     BBOOL fDispPrekey;            // 2ストロークプレフィックスキー
  3729.     BBOOL fDispPrekeyLeft;        // 2ストロークプレフィックスキー左側に表示
  3730.     BBOOL fDispLocate;            // カーソル位置
  3731.     BBOOL fDispSelecting;        // 選択中?
  3732.     BBOOL fDispEdit;            // "変更"表示?
  3733.     BBOOL fDispPagingMode;        // ページングモード
  3734.     BBOOL fDispSL_RSPACE;        // 右端に空白を表示
  3735.     BBOOL fDispOverwrite;        // 挿入/上書き
  3736.     BBOOL fDispParaCharatr;        //1.97 段落書式/文字装飾
  3737.     BBOOL fDispEditmode;        //1.99F editmode
  3738.     BYTE nSpaceTopV;            // 縦書き時、右端と左端を空けるドット数
  3739. // 拡張用の余裕
  3740.     // マウス
  3741.     BBOOL fMouseNoHide;            //2.00B マウス:マウスカーソルを消さない
  3742.         //3.00A2 970505 
  3743.         #define MOUSEHIDE_CHAR    0    // 文字入力で消す
  3744.         #define MOUSEHIDE_NONE    1    // 消さない
  3745.         #define MOUSEHIDE_KEY    2    // キー入力で消す
  3746.     BBOOL fMouseNoClipDD;        //2.00B マウス:ドラッグアンドドロップしない
  3747.     // カーソル
  3748.     BBOOL fTxkeyVertical;        //2.00E 縦書き時にtxkeyUp,Down,Left,Rightの縦横を入替
  3749.     // 編集
  3750.     BYTE modeClipboard;            //2.00E クリップボードのモード
  3751.         #define CLIPBOARD_WIN_TS    0    // Windowsクリップボードとテキストスタック併用
  3752.         #define CLIPBOARD_WIN        1    // Windowsクリップボードのみ使用
  3753.         #define CLIPBOARD_TS        2    // テキストスタックのみ使用
  3754.     BBOOL fClipboardWinBased;    //2.00E クリップボードの動作をWindows準拠にする
  3755.         //2.95 970125 コピーや貼り付け時の動作を詳細に指定できるようにした
  3756.         #define CLIPMODE_WZ            0    // WZ標準
  3757.         #define CLIPMODE_WIN        1    // Windows準拠
  3758.         #define CLIPMODE_WINWZ        2    // WZ拡張
  3759.     // 音声化
  3760.     BBOOL fSpeak;                //2.00E 音声化
  3761.     // インターフェース
  3762.     BYTE modeEditor;            //2.90 
  3763.         #define ME_WIN    0
  3764.         #define ME_VZ    1
  3765.         #define ME_MI    2
  3766.     BBOOL fDispInlineform;        //2.91 インライン整形モード
  3767.     // 編集
  3768.     BBOOL fClipboardNoSelect;    //2.98 970307 選択されてないときもコピー、カットする?
  3769.     BBOOL fConfigDispSilent;    //2.99 970314 ちらつかない表示
  3770.                                 // 従来の安定した表示ルーチンも選択できる様オプション化
  3771.                                 //2.99E 970403 内部状態と分離、「状況に応じてON」を追加
  3772.         #define DISPSILENT_OFF            0
  3773.         #define DISPSILENT_ON            1
  3774.         #define DISPSILENT_CONDITION    2
  3775.     BYTE reservedBase[52];
  3776. BYTE configBaseEnd;    // 共通の設定
  3777. BYTE configEnd;                // configの末尾であることを示す
  3778. };
  3779.  
  3780. //2.93 hwndbase context
  3781. typedef struct {    // statusbar pane
  3782.     BYTE fCenter:1;
  3783.     BYTE fFrame:1;//1.00G
  3784.     BYTE lx;
  3785.     BYTE lcx;
  3786.     LPBYTE sztext;
  3787.     BYTE cbtextbuff;
  3788. } SB_PANE;
  3789.  
  3790. typedef struct {
  3791.     BYTE ipane;    //1.00F
  3792. } SLITEM;
  3793.  
  3794. typedef struct {
  3795.     HWND hwndtext;
  3796.     HWND hwndRuler;                // ルーラー
  3797.     int ruler_x0;                // 初期値:-1
  3798.     int ruler_xbase;            //
  3799.     HWND hwndFunctionbar;        // PFキーバー
  3800.     int fkey;                    // 現在表示中のファンクションキー
  3801.     int iFkey;                    // 初期値:-1
  3802.     int iFkey0;                    // 初期値:-1
  3803.     HWND hwndToolbar;            // WZオリジナルツールバー
  3804.     HWND hwndcomToolbar;        // コモンコントロールツールバー
  3805.     HWND hwndStatusbar;            // ステータスバー
  3806.     mchar sb_szinfo[CCHWORD];    // 再描画用にtxDispInfoされた内容を保持
  3807.     SB_PANE sb_tpane[HSL_N];    // ペイン
  3808.     SLITEM sb_tsl[HSL_N];        // 
  3809.     int sb_npane;
  3810.     BBOOL sb_fSimple;            // シンプルモード?
  3811.     SB_PANE sb_paneSimple;        // シンプルペイン
  3812.     HWND hwndPartition;            // パーティションバー
  3813.     HWND hwndtextA;                // パーティションの上/左側
  3814.     HWND hwndtextB;                // パーティションの下/右側
  3815. #if 0//3.00A 970502 廃止
  3816.     RECT rectOriginal;            //2.94 for wndtxGetOriginalRect
  3817.     SIZE sizeOriginal;            //2.94 for wndtxGetOriginalSize
  3818. #endif
  3819. } TXBASE_CONTEXT;
  3820.  
  3821. // ソート引数
  3822. // EOF行を含むソートはできません。
  3823. typedef struct {
  3824.     UINT sizeStruct;    // sizeof(SORTARG) for version check
  3825.     NPARA lineTop;        // ソート開始論理行(origin:1)
  3826.     NPARA lineEnd;        // ソート終了論理行(origin:1)
  3827.         // txSortではHIGHモードを使います
  3828.         // HIGHモードでは行番号の計算がなされないので、
  3829.         // lineEndがEOF行以上の場合、異常動作します。
  3830.         // 注意してください
  3831.     IBUFF lchLine;        // 行長が固定の場合:1行のバイト数(改行コードの分も含む)
  3832.                         // 最大CCHLINE-1まで
  3833.                         // 2.96A 970212 可変の場合:0 をサポート
  3834.                         // ただし、0にするとかなりソート速度が落ちます。
  3835.     BOOL fCsv;            // CSV形式のソート(未完成)
  3836.     IBUFF lchItem;        // 比較項目の最大長(CCHLINE)
  3837.                         //2.96A 970212 0なら行末まで比較 をサポート
  3838.     IBUFF iItem;        // 比較項目位置:行先頭からのオフセット
  3839.                         // fCsv:行先頭項目を0とした、比較項目NO.
  3840.     BOOL fBack;            // 逆順ソート?
  3841.     PMACROFUNC *pfuncCmpKey;
  3842.                         //1.00F ソート時のキーの比較を行うコールバック関数
  3843.                         // NULLならデフォルト(strncmp)を使います
  3844.     LPARAM lCust;        //1.00F コールバック関数に渡す任意の32bit値を指定します
  3845.     WORD fNoSenseCase:1;//2.00E4 半角英大小文字を区別しない
  3846.     WORD fReserved:15;
  3847.     BYTE reserved[10];    //1.92 
  3848. } SORTARG;    //1.92 sortarg->SORTARGに改名
  3849.  
  3850. //1.00H2 
  3851. typedef struct {
  3852.     mchar* szappname;
  3853.     mchar* szversion;
  3854.     mchar* szcopyright;
  3855.     mchar* szcopyright2;
  3856.     mchar* szlicense;
  3857.     mchar* szicon;
  3858.     BYTE reserved[28];    // 余裕
  3859. } ABOUTINFO;
  3860.  
  3861. //2.96 970204 
  3862. #define lpGetClm(lp)    (lp->fUseTextLxLyClm ? lp->text->nClm : lp->nClm)
  3863.  
  3864. //2.96 970202 
  3865. // 段組一段単位のページ番号を、
  3866. // 紙一枚単位のページ番号に変換する。
  3867. #define txNpageFromNpageclm(text,npageclm) (lpGetClm(text->lp) ? (((npageclm - 1) / lpGetClm(text->lp)) + 1) : npageclm)
  3868.  
  3869. //2.96 970209 
  3870. #define keySetShift(d)    (text->fKeyVkShift = d)
  3871.  
  3872. //2.96 970209 
  3873. #define txGetUsePrintFontstyle(text)    (text->lfWestern ? FALSE : text->lp->fUsePrintFontstyle)
  3874.  
  3875. //1.99J
  3876. // ページめくりモード?
  3877. #define txGetPageTurn(text)    (text->fPageTurn && text->editmode != 2)
  3878.  
  3879. //2.93 段組数
  3880. #define txGetMultiClm(text)    (text->editmode == 2 ? FALSE : (text->nClm >= 2))
  3881.  
  3882. //1.99K
  3883. // 現在ビューモードか?
  3884. #define txGetViewmode(text)    (text->fSemiViewMode || text->fEditViewMode)
  3885.  
  3886. //2.99 970320 文字装飾、段落体裁使用可能か?
  3887. //2.99D 970331 インライン整形の場合はFALSEにするようにした for インライン整形でtabがおかしかった
  3888. #define txIsWP(text)    (text->editmode && text->fForm && !text->textParaform)
  3889.  
  3890. //2.99 970320 旧wzkeyXXX APIサポート #define
  3891. #define wzkeyFromSzkey(szkey)        txWzkeyFromSzkey(text,szkey)
  3892. #define wzkeyToSzkey(wzkey,szkey)    txWzkeyToSzkey(text,wzkey,szkey)
  3893. #define wzkeySearch(wzkey0,wzcmd)    txKeySearch(text,wzkey0,wzcmd)
  3894. #define wzkeySetWzcmd(wzkey,wzcmd)    txKeySetWzcmd(text,wzkey,wzcmd)
  3895. #define wzkeyGetWzcmd(wzkey)        txKeyGetWzcmd(text,wzkey)
  3896. #define wzkeyRegister(szkey,szcmd)    txKeyRegister(text,szkey,szcmd)
  3897. #define wzkeyIsEdited()                txKeyIsEdited(text)
  3898. #define wzkeyLoad()                    txKeyLoad(text)
  3899. #define toolbarFlush(text)            txFlushToolbar(text)
  3900.  
  3901. // マクロAPI定義
  3902.  
  3903. #define txCopyConfig(textdst,textsrc)    \
  3904.     {\
  3905.         memcpy(&((textdst)->configTop),&((textsrc)->configTop),&text->configEnd - &text->configTop);\
  3906.     }
  3907.  
  3908. //2.99D 970328 new
  3909. #define txCopyConfigFont(textdst,textsrc)    \
  3910.     {\
  3911.         memcpy((textdst)->tFontstyle,(textsrc)->tFontstyle,SIZE_TFONTSTYLE);\
  3912.         (textdst)->lfProp = (textsrc)->lfProp;\
  3913.         (textdst)->lfWestern = (textsrc)->lfWestern;\
  3914.     }
  3915.  
  3916. #if 0
  3917. ●TX-API 定義
  3918.  引数が1つ"text"だけのAPIは、キーボードマクロからも使えます。
  3919.  TX-MACROでは、"tx"プレフィックスと、第一引数(text)はセットで省略可能です。
  3920. また、関数名は大小文字を区別しないので(構造体メンバも予定)、API呼び出しや
  3921. (text構造体メンバアクセスも予定)を全て小文字で記述できます。
  3922.  "txui"プレフィックスが付いたAPIはユーザインターフェース付きです。
  3923. ダイアログボックスなどを表示します。
  3924. #endif
  3925.  
  3926. #if 0
  3927.  関数名の末尾に数字は使えない for TX-MACRO multi text。
  3928.  txプレフィックスは第1引数が"tx *text"の関数だけに付ける for 混乱防止
  3929.  返り値は、sizeofが2/4bytesのみ。負の値は返さないこと for txfuncCall
  3930.  sizeof=4を返す関数は、tFunctableでFM_DWORDを指定すること
  3931.  32bit版ではFM_DWORDでもFM_WORDでもない関数の返り値は32bitとすること
  3932. #endif
  3933.  
  3934. //{#API}
  3935.  
  3936. //{###カーソル移動}
  3937. //文字単位や単語単位、行単位やページ単位のカーソル移動などを行います。
  3938.  
  3939. int TXAPI TXCMDBASE TXMODAL txkeyLeft(tx *text);
  3940.     // 1つ前の文字へ
  3941.     // ユーザインターフェースがWindows準拠でShift+Leftキーに割り当てると、
  3942.     // 文字列を選択してカーソルを1つ前の文字へ動かします。
  3943.     // text->modeFreeCursorが1のときはフリーカーソル動作を行う
  3944.     //{#MS} {Left} +{Left}
  3945.     //{#VZ} {Left} ^S
  3946.     //{#MI} {Left} ^S
  3947.     //{#EMACS} {Left} +{Left} ^B
  3948. int TXAPI TXCMDBASE TXMODAL txkeyRight(tx *text);
  3949.     // 1つ後ろの文字へ
  3950.     // ユーザインターフェースがWindows準拠でShift+Rightキーに割り当てると、
  3951.     // 文字列を選択してカーソルを1つ後ろの文字へ動かします。
  3952.     // text->modeFreeCursorが1のときはフリーカーソル動作を行う
  3953.     //{#MS} {Right} +{Right}
  3954.     //{#VZ} {Right} ^D
  3955.     //{#MI} {Right} ^D
  3956.     //{#EMACS} {Right} +{Right} ^F
  3957. int TXAPI TXCMDBASE TXMODAL txkeyUp(tx *text,int n);
  3958.     // 1行上へ
  3959.     // ユーザインターフェースがWindows準拠でShift+Upキーに割り当てると、
  3960.     // 文字列を選択してカーソルを1行上へ動かします。
  3961.     // フリーカーソル、加速スクロールに対応したキーボード用
  3962.     //{#MS} {Up} +{Up}
  3963.     //{#VZ} {Up} ^E
  3964.     //{#MI} {Up} ^E
  3965.     //{#EMACS} {Up} +{Up} ^P
  3966. int TXAPI TXCMDBASE TXMODAL txkeyDown(tx *text,int n);
  3967.     // 1行下へ
  3968.     // ユーザインターフェースがWindows準拠でShift+Downキーに割り当てると、
  3969.     // 文字列を選択してカーソルを1行下へ動かします。
  3970.     // フリーカーソル、加速スクロールに対応したキーボード用
  3971.     //{#MS} {Down} +{Down}
  3972.     //{#VZ} {Down} ^X
  3973.     //{#MI} {Down} ^X
  3974.     //{#EMACS} {Down} +{Down} ^N
  3975. int TXAPIBASE TXCMD txUp(tx *text);
  3976.     // 1行上へ
  3977.     //{#RET}移動行数を返す
  3978. int TXAPIBASE txUpN(tx *text,int n);
  3979.     // n行上へ
  3980.     //{#RET}移動行数を返す
  3981. int TXAPIBASE TXCMD txDown(tx *text);
  3982.     // 1行下へ
  3983.     //{#RET}移動行数を返す
  3984. int TXAPIBASE txDownN(tx *text,int n);
  3985.     // n行下へ
  3986.     //{#RET}移動行数を返す
  3987. int TXAPIBASE TXCMD TXHIGH txLeft(tx *text);
  3988.     // 1つ前の文字へ
  3989.     // フリーカーソル動作は行わない
  3990.     //{#RET}移動できたか返す
  3991. int TXAPI TXCMD TXMODAL txLeftFree(tx *text);
  3992.     // 1つ前の文字へ
  3993.     // フリーカーソル動作も行う
  3994.     //{#RET}移動できたか返す
  3995. int TXAPI TXCMD txLeftWord(tx *text);
  3996.     // 1つ前の単語へ
  3997.     //{#RET}移動できたか返す
  3998. int TXAPIBASE TXCMD txLeftWordMi(tx *text);
  3999.     // 1つ前の単語へ(MIFESライク)。
  4000.     //{#RET}移動できたか返す
  4001. int TXAPI TXHIGH txLeftBytes(tx *text,IMEM len);
  4002.     // lenバイト手前へ
  4003.     // 漢字の2バイト目にもジャンプできる仕様です
  4004.     //{#RET}移動できたか返す
  4005. int TXAPIBASE TXHIGH TXCMD txRight(tx *text);
  4006.     // 1つ後の文字へ
  4007.     // フリーカーソル動作は行わない
  4008.     //{#RET}移動できたか返す
  4009. int TXAPI TXHIGH TXCMD TXMODAL txRightFree(tx *text);
  4010.     // 1つ後の文字へ
  4011.     //{#RET}移動できたか返す
  4012.     // フリーカーソル動作も行う
  4013. int TXAPI TXCMD txRightWord(tx *text);
  4014.     // 1つ後の単語へ
  4015.     //{#RET}移動できたか返す
  4016. int TXAPIBASE TXCMD txRightWordMi(tx *text);
  4017.     // 1つ後の単語へ(MIFESライク)
  4018.     //{#RET}移動できたか返す
  4019. int TXAPI TXHIGH txRightBytes(tx *text,IMEM len);
  4020.     // lenバイト後へ
  4021.     // 漢字の2バイト目にもジャンプできる仕様です
  4022.     //{#RET}移動できたか返す
  4023. int TXAPI TXCMDBASE txPrevRoll(tx *text);
  4024.     // 1行ロールアップ
  4025.     //{#VZ} ^W \{PageUp}
  4026.     //{#MI} ^W
  4027.     //{#EMACS} +{PageUp}
  4028. int TXAPI txPrevRollN(tx *text,int n);
  4029.     // n行ロールアップ
  4030. int TXAPI TXCMD txPrevPage(tx *text);
  4031.     // ページアップ
  4032. void TXAPI TXCMD TXMODAL txPrevPageVz(tx *text);
  4033.     // ページアップ(VZライク)
  4034.     // ページングモード、ページング単位有効
  4035. void TXAPI TXCMD txPrevPageMi(tx *text);
  4036.     // 高速スクロールアップ
  4037. int TXAPI TXCMD txPrevHalfPage(tx *text);
  4038.     // ハーフページアップ
  4039. BOOL TXAPIBASE TXHIGH TXCMDBASE txPrevPara(tx *text);
  4040.     // 1つ前の論理行の先頭へジャンプ
  4041.     //{#RET}ジャンプできたかどうか返す
  4042.     //{#MS} ^{Up}
  4043.     //{#MI} ^{Up}
  4044. int TXAPI TXCMDBASE txNextRoll(tx *text);
  4045.     // 1行ロールダウン
  4046.     //{#MS} 
  4047.     //{#VZ} ^Z \{PageDown}
  4048.     //{#MI} ^Z
  4049.     //{#EMACS} +{PageDown}
  4050. int TXAPI txNextRollN(tx *text,int n);
  4051.     // n行ロールダウン
  4052. int TXAPI TXCMD txNextPage(tx *text);
  4053.     // ページダウン
  4054. void TXAPI TXCMD TXMODAL txNextPageVz(tx *text);
  4055.     // ページダウン(VZライク)
  4056.     // ページングモード、ページング単位有効
  4057. void TXAPI TXCMD txNextPageMi(tx *text);
  4058.     // 高速スクロールダウン
  4059. int TXAPI TXCMD txNextHalfPage(tx *text);
  4060.     // ハーフページダウン
  4061. BOOL TXAPIBASE TXHIGH TXCMDBASE txNextPara(tx *text);
  4062.     // 1つ後ろの論理行の先頭へジャンプ
  4063.     //{#RET}ジャンプできたかどうか返す
  4064.     //{#MS} ^{Down}
  4065.     //{#MI} ^{Down}
  4066. int TXAPIBASE TXCMD txJumpLineTop(tx *text);
  4067.     // 表示行の先頭へジャンプ
  4068. int TXAPIBASE TXCMDBASE txJumpLineEnd(tx *text);
  4069.     // 表示行の末尾の文字へジャンプ
  4070. int TXAPI TXCMDBASE txJumpLineTail(tx *text);
  4071.     // 表示行の末尾文字の後ろへジャンプ
  4072. int TXAPIBASE TXCMDBASE TXHIGH txJumpParaTop(tx *text);
  4073.     // 論理行の先頭へジャンプ
  4074. int TXAPIBASE TXCMDBASE txJumpParaEnd(tx *text);
  4075.     // 論理行の末尾へジャンプ
  4076. int TXAPI TXCMD txJumpWordTop(tx *text);
  4077.     // 語の先頭へジャンプ
  4078. int TXAPIBASE TXCMD txJumpWordTopMi(tx *text);
  4079.     // 語の先頭へジャンプ(MIFESライク)
  4080. int TXAPI TXCMD txJumpWordEnd(tx *text);
  4081.     // 語の末尾へジャンプ
  4082.     // 1.00Cで仕様変更。単語の末尾の次の文字にカーソルを動かす
  4083. int TXAPIBASE TXCMD txJumpWordEndMi(tx *text);
  4084.     // 語の末尾へジャンプ(MIFESライク)
  4085.     // 1.00Cで仕様変更。単語の末尾の次の文字にカーソルを動かす
  4086. void TXAPI TXCMDBASE txJumpScreenTop(tx *text);
  4087.     // 画面の上端へジャンプ
  4088.     //{#EMACS} ^{Up}
  4089. void TXAPI TXCMDBASE txJumpScreenEnd(tx *text);
  4090.     // 画面の下端へジャンプ
  4091.     //{#EMACS} ^{Down} ^{End}
  4092. int TXAPI txJumpLx(tx *text,int cx);
  4093.     // カーソルXをcxにジャンプ
  4094.     // cxは表示行先頭を0としたバイト数で指定
  4095. BOOL TXAPI TXHIGH txJumpParaIch(tx* text,IFILE lch);
  4096.     // 段落の先頭からlch文字目にジャンプする
  4097.     // 段落の終わりを超えることはできません
  4098.     // 正常に実行できたかどうかを返します。
  4099.     // 漢字も1文字として数えます。
  4100.     //1.97で追加
  4101. int TXAPI txJumpX(tx *text,int x);
  4102.     // カーソルXをxにジャンプ
  4103.     // xにはx座標をピクセル単位で指定
  4104.     //1.00Fで追加
  4105. int TXAPI txJumpLy(tx *text,int y);
  4106.     // カーソルYをyに設定
  4107.     // 編集位置も変わる
  4108. void TXAPIBASE txSetLy(tx *text,int y);
  4109.     // カーソルYをyに設定
  4110.     // 編集位置は変わらない
  4111. void TXAPIBASE TXCMD txSetLyCenter(tx *text);
  4112.     // カーソルYを画面中央に設定
  4113.     // 編集位置は変わらない
  4114. void TXAPI txMoveLcy(tx *text,int lcy);
  4115.     // lcyだけカーソルYを移動する
  4116.     // lcyが負ならカーソルを戻す。
  4117.     // 編集位置は変わらない
  4118.  
  4119. //{###ジャンプ}
  4120. //テキスト先頭や末尾、行頭や行末、単語頭や末尾、指定行へのジャンプ、
  4121. //カーソルの座標の設定などを行います。
  4122.  
  4123. int TXAPI txJumpPara(tx *text,NPARA line);
  4124.     // テキストのline段落にジャンプ
  4125.     // テキストの先頭行は1行として指定
  4126.     // 段落の先頭文字へジャンプするとは限りません。
  4127.     // この場合は、txJumpNparaを使います。
  4128. int TXAPI txJumpLine(tx *text,NLINE line);
  4129.     // テキストのline表示行にジャンプ
  4130.     // テキストの先頭行は1行として指定
  4131.     //{#RET}text->fLineDが真のときしか動作しない。偽なら0を返す
  4132. BOOL TXAPI txJumpPage(tx *text,NPAGE npage);
  4133.     // テキストのnpageページの先頭行にジャンプ
  4134.     // テキストの先頭行は1ページになります。
  4135.     // ジャンプできたかどうか返します。
  4136.     // 詳細モードでは指定ページへ、それ以外のモードでは、
  4137.     // text-fLineDが真でtext->heightが1以上なら、
  4138.     // return txJumpLine(text,text->height * (npage - 1) + 1);します。
  4139.     // そうでなければジャンプせず、FALSEを返します。
  4140.     //1.91A で追加
  4141. BOOL TXAPI txJumpLink(tx* text);
  4142.     // カーソル位置にハイパーリンクが設定されていればリンク先にジャンプします。
  4143.     // ジャンプしたかどうかを返します。
  4144.     //1.99C で追加
  4145. int TXAPI TXMODAL txJumpModal(tx *text,NLINE line);
  4146.     // テキストのline行にジャンプ
  4147.     // テキストの先頭行は1行として指定
  4148.     // text->fLineDが真なら表示行lineへ、偽なら論理行lineへジャンプ
  4149. BOOL TXAPI TXCMDBASE txJumpFileTopLine(tx *text);
  4150.     // テキストの先頭表示行へジャンプ
  4151.     // カーソルX座標は保持
  4152.     //{#VZ} ^QR ^{PageUp}
  4153.     //{#MI} ^QR
  4154.     //{#EMACS} ^{PageUp}
  4155. BOOL TXAPI TXCMDBASE txJumpFileEndLine(tx *text);
  4156.     // テキストの末尾表示行へジャンプ
  4157.     // カーソルX座標は保持
  4158.     //{#VZ} ^QC ^{PageDown}
  4159.     //{#MI} ^QC
  4160.     //{#EMACS} ^{PageDown}
  4161. BOOL TXAPIBASE TXCMDBASE TXHIGH txJumpFileTop(tx *text);
  4162.     // テキストの先頭へジャンプ
  4163. BOOL TXAPIBASE TXCMDBASE TXHIGH txJumpFileEnd(tx *text);
  4164.     // テキストの末尾へジャンプ
  4165. int TXAPI TXCMDBASE txJumpBrace(tx *text);
  4166.     // 対応する括弧へジャンプ
  4167.     //{#MS} ^] ^[
  4168.     //{#VZ98} ^QK +{CLR}
  4169.     //{#VZIBM} ^QK
  4170.     //{#MI} {Esc}[ {Esc}]
  4171. BOOL TXAPIBASE TXHIGH txJumpAddress(tx *text,IFILE _address);
  4172.     // テキストのアドレスへジャンプ
  4173.     // アドレスは、テキスト先頭からのバイト数で指定
  4174.     // ジャンプ先が漢字の2バイト目の場合は、その漢字の1バイト目にジャンプします
  4175. BOOL TXAPI txMarkN(tx *text,int n);
  4176.     // カーソル位置をマークn(0-4)にマークする
  4177. BOOL TXAPI TXCMDBASE txMark1(tx *text);
  4178.     // カーソル位置をマーク1にマークする
  4179.     // キー割り当て用です。呼び出して使うことはできません
  4180.     //{#VZ} ^K1
  4181. BOOL TXAPI TXCMDBASE txMark2(tx *text);
  4182.     // カーソル位置をマーク2にマークする
  4183.     // キー割り当て用です。呼び出して使うことはできません
  4184.     //{#VZ} ^K2
  4185. BOOL TXAPI TXCMDBASE txMark3(tx *text);
  4186.     // カーソル位置をマーク3にマークする
  4187.     // キー割り当て用です。呼び出して使うことはできません
  4188.     //{#VZ} ^K3
  4189. BOOL TXAPI TXCMDBASE txMark4(tx *text);
  4190.     // カーソル位置をマーク4にマークする
  4191.     // キー割り当て用です。呼び出して使うことはできません
  4192.     //{#VZ} ^K4
  4193. BOOL TXAPI txJumpMarkN(tx *text,int n);
  4194.     // マークn(0-4)へジャンプ
  4195. BOOL TXAPI TXCMDBASE txJumpMark1(tx *text);
  4196.     // マーク1へジャンプ
  4197.     // キー割り当て用です。呼び出して使うことはできません
  4198.     //{#VZ} ^Q1
  4199. BOOL TXAPI TXCMDBASE txJumpMark2(tx *text);
  4200.     // マーク2へジャンプ
  4201.     // キー割り当て用です。呼び出して使うことはできません
  4202.     //{#VZ} ^Q2
  4203. BOOL TXAPI TXCMDBASE txJumpMark3(tx *text);
  4204.     // マーク3へジャンプ
  4205.     // キー割り当て用です。呼び出して使うことはできません
  4206.     //{#VZ} ^Q3
  4207. BOOL TXAPI TXCMDBASE txJumpMark4(tx *text);
  4208.     // マーク4へジャンプ
  4209.     // キー割り当て用です。呼び出して使うことはできません
  4210.     //{#VZ} ^Q4
  4211. void TXAPIBASE TXCMDBASE txMarkCur(tx *text);
  4212.     // カーソル位置をマーク
  4213.     // 他のジャンプコマンドを実行すると、直前位置がマーク0に代入
  4214.     // されます。カーソル位置をマーク0に代入するコマンドです。
  4215.     // マーク0は、テキストが挿入/削除されても位置はずれません。
  4216.     //{#VZ} ^QM ^K0
  4217. void TXAPIBASE TXCMDBASE txJumpMarkCur(tx *text);
  4218.     // ジャンプ前の位置へ
  4219.     // マーク0へのジャンプ
  4220.     //{#MS} +{F5} ^%Z
  4221.     //{#VZ} ^QP ^Q0
  4222.     //{#MI} ^QJ
  4223. BOOL TXAPI TXCMDBASE txSelectJump(tx *text);
  4224.     // 範囲の先頭/末尾へジャンプ
  4225. BOOL TXAPI txJumpAnchor(tx* text,mchar* szanchor);
  4226.     // HTMLファイルにおいてszanchorのアンカーにジャンプします
  4227.     //1.90 で新設
  4228.  
  4229. //{###検索・置換}
  4230. //テキストの検索や置換を行います。
  4231.  
  4232. int TXAPIBASE TXHIGH txSearchEx(tx *text,mchar* szfind,DWORD searchmode);
  4233.     // 引数で条件を指定して検索します。
  4234.     // 検索ヒストリ、text->searchmodeは変更しません。
  4235.     //{#RET}見つかればカーソルを移動し0以外の値、
  4236.     // 見つからなければ0を返す
  4237.     // searchmodeには次のフラグを"|"で組み合わせて指定します。
  4238.     // SEARCH_FORWARD        テキスト末尾方向へ検索(デフォルト)
  4239.     // SEARCH_PREV            テキスト先頭方向へ検索
  4240.     // SEARCH_AREA            範囲内のみ検索する
  4241.     // SEARCH_NOESC            検索文字列中の'\'の特別な意味を消して検索
  4242.     // SEARCH_CUR            カーソル位置の文字から検索
  4243.     // SEARCH_SELECT        見つけた文字列を選択する
  4244.     // SEARCH_PARATOP        論理行頭のみ検索
  4245.     // SEARCH_NOSENSECASE    大文字・小文字を区別しない
  4246.     // SEARCH_NOSENSEZENHAN    全角/半角文字を区別しない
  4247.     // SEARCH_WORD            ワードサーチ
  4248.     // SEARCH_RE            正規表現による検索
  4249.     //※SEARCH_NOSENSEZENHANとSEARCH_WORDを同時に指定してはいけません
  4250.     //1.00H2 で新設
  4251. BOOL TXAPI TXCMD txSearchContinue(tx *text);
  4252.     // 前回検索した文字列を、カーソル位置の次から検索
  4253.     // 前回検索文字列はヒストリから得る
  4254.     //2.96 970201 検索オプションは、前回検索した文字列のオプションに従います
  4255.     //(旧1.00H2 検索オプションはtext->searchmodeを参照します)
  4256.     //{#RET}見つかったかどうか返す
  4257. BOOL TXAPI TXCMD txSearchContinuePrev(tx *text);
  4258.     // 前回検索した文字列を、カーソル位置からテキスト先頭まで検索
  4259.     // 前回検索文字列はヒストリから得る
  4260.     //2.96 970201 検索オプションは、前回検索した文字列のオプションに従います
  4261.     //(旧1.00H2 検索オプションはtext->searchmodeを参照します)
  4262.     //{#RET}見つかったかどうか返す
  4263. BOOL TXAPI TXCMDBASE txSearchTitle(tx *text);
  4264.     // カーソル位置の次行から、タイトル文字列を検索
  4265.     // 検索ヒストリ、text->searchmodeは変更しません。
  4266.     //{#RET}見つかったかどうか返す
  4267.     //{#MS} %{PageDown}
  4268. BOOL TXAPI TXCMDBASE txSearchTitlePrev(tx *text);
  4269.     // カーソル位置からテキスト先頭まで、タイトル文字列を検索
  4270.     // 検索ヒストリ、text->searchmodeは変更しません。
  4271.     //{#RET}見つかったかどうか返す
  4272.     //{#MS} %{PageUp}
  4273. HWND TXAPIBASE txSearchText(tx *text,mchar *szfilename);
  4274.     // szfilenameがTXでオープンされていたら、そのウィンドウハンドルを返す
  4275.     // ウィンドウハンドルは、text->hwndbaseに相当
  4276.     // szfilenameにはドライブ名も含めたフルパスを指定してください。
  4277. int TXAPIBASE txReplaceEx(tx *text,mchar* szfind,mchar* szreplace,DWORD searchmode);
  4278.     // szfindをszreplaceに置換
  4279.     // 検索ヒストリ、text->searchmodeは変更しません。
  4280.     // txReplaceContinueには影響しません。
  4281.     // searchmodeにREPLACE_CONFIRMを指定すると、
  4282.     // モードレスダイアログを出したり、カーソル位置を移動することがあります。
  4283.     // 置換個数を返します。
  4284.     // 1.01Aより、置換が、置換確認ダイアログでキャンセルされた場合は、
  4285.     // text->fReplaceCanceledフラグをセットします。
  4286.     // キャンセルされなかった場合は、このフラグはリセットされます。
  4287.     // searchmodeには次のフラグを"|"で組み合わせて指定します。
  4288.     // SEARCH_FORWARD        テキスト末尾方向へ検索(デフォルト)
  4289.     // SEARCH_PREV            テキスト先頭方向へ検索
  4290.     // SEARCH_AREA            範囲内のみ検索する
  4291.     // SEARCH_NOESC            検索文字列中の'\'の特別な意味を消して検索
  4292.     // SEARCH_ALL            テキスト全体で検索
  4293.     // SEARCH_PARATOP        論理行頭のみ検索
  4294.     // SEARCH_NOSENSECASE    大文字・小文字を区別しない
  4295.     // SEARCH_NOSENSEZENHAN    全角/半角文字を区別しない
  4296.     // SEARCH_WORD            ワードサーチ
  4297.     // SEARCH_RE            正規表現による検索
  4298.     // REPLACE_CONFIRM        置換確認を行う
  4299.     // REPLACE_ONCE            最初の1つだけ置換
  4300.     //※SEARCH_NOSENSEZENHANとSEARCH_WORDを同時に指定してはいけません
  4301.     //1.00H2 で新設
  4302. int TXAPI TXCMDBASE txReplaceContinue(tx *text);
  4303.     // [検索]メニューの[置換]コマンドで前回置換した内容を再実行
  4304.     //1.00Bから、置換個数を返します。確認付き置換の時は0を返します。
  4305.     //{#VZ} ^QO
  4306.  
  4307. //{###編集}
  4308. //文字列の挿入・削除、各種変換などの編集操作を行います。
  4309.  
  4310. int TXAPIBASE TXHIGH txInsert(tx *text,mchar *str);
  4311.     // 文字列strを挿入し、カーソルを進める。
  4312.     // 改行は"\n"で指定。
  4313.     //{#RET}挿入したバイト数を返す
  4314.     //{#EX}txInsert(text,"this is para\n");
  4315. int TXAPIBASE TXHIGH txInsertChar(tx *text,TXCHAR code);
  4316.     // 文字codeを挿入し、カーソルを進める。
  4317.     // 改行は'\n'、漢字は'あ'のように指定
  4318.     //{#RET}挿入できたか返す
  4319. int TXAPI TXHIGH txCurInsertChar(TX* text,WORD code);
  4320.     // 文字codeを挿入し、カーソルはそのまま
  4321.     // 改行は'\n'、漢字は'あ'のように指定
  4322.     //2.97 970219 new
  4323.     //{#RET}挿入できたか返す
  4324. BOOL TXAPI TXCMDBASE txInsertKeymacro(tx *text);
  4325.     // キーボードマクロを挿入する。
  4326.     //{#RET}挿入できたか返す。
  4327.     //{#VZ} ^K_
  4328. int TXAPI TXHIGH txInsertBuff(tx *text,mchar *str,IMEM len);
  4329.     // バッファ(ポインタ:str,長さ:lenバイト)を挿入し、カーソルを進める。
  4330.     //{#RET}挿入できたか返す
  4331. void TXAPI TXCMDBASE txInsertFind(tx *text);
  4332.     // 検索文字列挿入
  4333.     //{#VZ} ^QI +{F5}
  4334.     //{#EMACS} +{F5}
  4335. int TXAPI TXHIGH txCurInsertBuff(tx *text,mchar *str,IMEM len);
  4336.     // 文字列バッファ(ポインタ:str,長さ:lenバイト)の内容を挿入。カーソルは進めない。
  4337.     //{#RET}挿入できたか返す
  4338. int TXAPIBASE txOverWriteChar(tx *text,TXCHAR code);
  4339.     // 文字codeを上書き
  4340.     //{#RET}上書きできたか返す
  4341. int TXAPIBASE txOverWrite(tx *text,mchar *szstr);
  4342.     // 文字列を上書き
  4343. int TXAPIBASE TXHIGH TXCMD txDeleteChar(tx *text);
  4344.     // 1文字削除
  4345.     //{#RET}削除できたか返す
  4346. int TXAPI TXHIGH txDeleteBytes(tx *text,DWORD len);
  4347.     // lenバイト削除
  4348.     //{#RET}削除できたか返す
  4349. int TXAPI TXCMD txDeleteWord(tx *text);
  4350.     // 単語削除
  4351.     //{#RET}削除できたか返す
  4352.     //{#VZ} +{Delete} ^T
  4353.     //{#EMACS} +{Delete}
  4354. int TXAPIBASE TXCMD txDeleteWordMi(tx *text);
  4355.     // 単語削除(MIFESライク)
  4356.     //{#RET}削除できたか返す
  4357.     //{#MI} ^T
  4358. int TXAPIBASE TXCMD txDeletePrev(tx *text);
  4359.     // 1文字前方削除(バックスペース)
  4360.     //{#RET}削除できたか返す
  4361. int TXAPI TXCMDBASE txDeletePrevWord(tx *text);
  4362.     // 単語前方削除
  4363.     //{#RET}削除できたか返す
  4364.     //{#VZ} +{Backspace} ^QH
  4365.     //{#EMACS} +{Backspace}
  4366. int TXAPIBASE TXCMD txDeleteLine(tx *text);
  4367.     // 表示行削除
  4368.     //{#RET}削除できたか返す
  4369. int TXAPIBASE TXCMD txDeletePara(tx *text);
  4370.     // 論理行削除
  4371.     //{#RET}削除できたか返す
  4372. int TXAPI TXCMDBASE txDeleteParaTop(tx *text);
  4373.     // 論理行の先頭まで削除
  4374.     //{#RET}削除できたか返す
  4375.     //{#VZ} ^{Backspace} ^QT
  4376.     //{#MI} ^U
  4377.     //{#EMACS} ^{Backspace}
  4378. int TXAPI TXCMDBASE txDeleteParaEnd(tx *text);
  4379.     // 論理行の末尾まで削除
  4380.     //{#RET}削除できたか返す
  4381.     //{#VZ} ^{Delete} ^QY
  4382.     //{#MI} ^K
  4383.     //{#EMACS} ^{Delete}
  4384. void TXAPIBASE TXCMD txDeleteText(tx *text);
  4385.     // テキスト全体を削除。
  4386. BOOL TXAPI TXCMDBASE txUndelete(tx *text);
  4387.     // 削除文字列復活
  4388.     // 1文削除、1語削除、行頭・末まで削除などの削除文字を現在のカーソル
  4389.     // 位置に復活する。簡易カット&ペーストとして使用可能。
  4390.     //{#RET}復活したか返す
  4391.     //{#MS} %{Insert}
  4392.     //{#VZ} ^U ^{Insert}
  4393.     //{#MI} ^QU
  4394.     //{#EMACS} ^{Insert}
  4395. void TXAPI TXCMD txJankToAnk(tx *text);
  4396.     // 範囲内、全角ANK->半角ANK変換
  4397. void TXAPI TXCMD txJkanaToKana(tx *text);
  4398.     // 範囲内、全角ひらがな・カタカナ->半角カナ 変換
  4399. void TXAPI TXCMD txJkataToKana(tx *text);
  4400.     // 範囲内、全角カタカナ->半角カナ 変換
  4401. void TXAPI TXCMD txKanaToJhira(tx *text);
  4402.     // 範囲内、半角カナ->全角ひらがな 変換
  4403. void TXAPI TXCMD txKanaToJkata(tx *text);
  4404.     // 範囲内、半角カナ->全角カタカナ 変換
  4405. void TXAPI TXCMD txAnkToJank(tx *text);
  4406.     // 範囲内、半角ANK->全角ANK 変換
  4407. int TXAPI TXMODAL txCharConvert(TX* text,CHARCONVERT* cc);
  4408.     // 範囲内、文字変換
  4409.     // 範囲が選択されていなければ全体を文字変換
  4410.     //2.00Cで追加
  4411. void TXAPI TXCMDBASE txIndentInc(tx *text);
  4412.     // 範囲内インデント
  4413.     //{#VZ} ^KH
  4414. void TXAPI TXCMDBASE txIndentDec(tx *text);
  4415.     // 範囲内逆インデント
  4416. int TXAPI TXCMDBASE TXMODAL txInsertPara(tx *text);
  4417.     // 1行挿入
  4418.     // text->modeAutoIndentが真のときは、オートインデント処理を行います
  4419.     //{#RET}挿入できたか返す
  4420.     //{#VZ} ^N
  4421.     //{#MI} ^N
  4422.     //{#EMACS} ^O
  4423.     //2.97 970224 各キーの+{Enter}割り当て外す。
  4424. int TXAPI TXMODAL txWriteChar(tx *text,TXCHAR code);
  4425.     // 文字codeを挿入または上書き。
  4426.     // text->fOverWriteが真なら上書き、偽なら挿入。
  4427.     // text->modeAutoIndentが真のときは、オートインデント処理を行います
  4428.     // text->modeFreeCursorが真のときはフリーカーソル処理を行います
  4429.     //{#RET}実行できたか返す
  4430. int TXAPI TXCMD TXMODAL txWriteTab(tx *text);
  4431.     // タブを挿入または上書き。
  4432.     // 範囲選択中なら、タブを書く代わりにtxIndentInc(text)を実行。
  4433.     // 上書きモードのときは、カーソルを次のタブ位置へ進めます。
  4434.     // 挿入モードのときは、タブを挿入します。
  4435.     //{#RET}実行できたか返す
  4436. int TXAPI TXCMD TXMODAL txWriteReturn(tx *text);
  4437.     // 改行を挿入または上書き。
  4438.     //{#RET}実行できたか返す
  4439. int TXAPIBASE txInsertReturn(tx* text);
  4440.     // 改段(改行コード)を挿入。
  4441.     //{#RET}実行できたか返す
  4442.     //1.90で追加
  4443. void TXAPI TXCMDBASE txTabToSpace(tx *text);
  4444.     // タブを空白に変換
  4445.     // 全てのタブを変換します。""内のタブも変換します。
  4446. void TXAPI TXCMDBASE txSpaceToTab(tx *text);
  4447.     // 空白をタブに変換
  4448.     // 行頭の空白のみタブに変換します。
  4449. void TXAPI TXCMD txDeleteTailSpace(tx *text);
  4450.     // 行末の空白を削除
  4451.  
  4452. //{###範囲選択}
  4453. //範囲選択の開始・終了、範囲内のウォーク、範囲の先頭・末尾へのジャンプ
  4454. //などを行います。
  4455.  
  4456. int TXAPIBASE txSelectGetMode(tx *text);
  4457.     // 現在の範囲選択モードを返します。
  4458.     //{#RET}範囲選択されてなければ0(CLIP_NONE)を返します。
  4459.     // 範囲選択されていれば以下の0以外の値を返します。
  4460.     //        CLIP_CHAR        文字単位
  4461.     //        CLIP_LINE        表示行単位
  4462.     //        CLIP_PARA        論理行単位
  4463.     //        CLIP_BOX        箱
  4464.     //        CLIP_ALL        すべて
  4465.     //        CLIP_PARA1        WZ内部用
  4466.     // 以下は1.01Aで追加
  4467.     //        CLIP_LINECUR    カーソル行も含む表示行単位
  4468.     //        CLIP_PARACUR    カーソル行も含む論理行単位
  4469. BOOL TXAPIBASE txSelectEx(tx *text,int fClip);
  4470.     // fClipのモードで範囲選択を開始します
  4471.     // 範囲選択中なら、範囲選択を中止して、fClipのモードで範囲選択を開始します
  4472.     // 範囲選択を開始したかどうかを返します
  4473.     // fClipには次を指定できます。
  4474.     // CLIP_CHAR,CLIP_LINE,CLIP_PARA,CLIP_BOX
  4475.     // CLIP_WORD,CLIP_SENTENCE,CLIP_ALL,CLIP_PARACUR
  4476.     // CLIP_LINECUR,CLIP_VZ,CLIP_WZ
  4477.     //1.01Aで追加。
  4478. BOOL TXAPI TXCMDBASE txSelect(tx *text);
  4479.     // 文字単位の範囲選択開始
  4480.     // 範囲選択中なら、範囲選択を中止
  4481.     //1.00Dから、範囲選択を開始したかどうか返します。
  4482.     //{#MI} +{F6}
  4483. BOOL TXAPI TXCMDBASE txSelectLine(tx *text);
  4484.     // 表示行単位の範囲選択開始
  4485.     // 範囲選択中なら、範囲選択を中止
  4486.     //1.00Dから、範囲選択を開始したかどうか返します。
  4487.     //{#MI} {F6}
  4488. BOOL TXAPI TXCMD txSelectPara(tx *text);
  4489.     // 論理行単位の範囲選択開始
  4490.     // 範囲選択中なら、範囲選択を中止
  4491.     //1.00Dから、範囲選択を開始したかどうか返します。
  4492. BOOL TXAPI txSelectParaCur(tx *text);
  4493.     // カーソル論理行も含める論理行単位の範囲選択開始
  4494.     // 範囲選択中なら、範囲選択を中止
  4495.     // 範囲選択を開始したかどうか返します。
  4496.     //1.00Fで追加
  4497. BOOL TXAPI TXCMD txSelectWord(tx *text);
  4498.     // 単語単位の範囲選択開始
  4499.     // 範囲選択中なら、範囲選択を中止
  4500.     // 範囲選択を開始したかどうか返します。
  4501.     //1.00Fで追加
  4502. BOOL TXAPI TXCMD txSelectSentence(tx *text);
  4503.     // 文単位の範囲選択開始
  4504.     // 範囲選択中なら、範囲選択を中止
  4505.     // 範囲選択を開始したかどうか返します。
  4506.     //1.00Fで追加
  4507. BOOL TXAPI TXCMD txSelectVz(tx *text);
  4508.     // VZの範囲選択開始
  4509.     // 範囲選択中なら、範囲選択を中止
  4510.     // カーソルを縦に動かすと論理行単位、横に動かすと文字単位の選択に
  4511.     // 切り替わります。
  4512.     //1.00Dから、範囲選択を開始したかどうか返します。
  4513.     //{#VZ} {F10} ^B
  4514.     //{#EMACS} {F10}
  4515. BOOL TXAPI TXCMD txSelectWz(tx *text);
  4516.     // WZの範囲選択開始
  4517.     // 範囲選択中なら、範囲選択を中止
  4518.     // 最初に、カーソルを縦に動かすと論理行単位、横に動かすと文字単位の
  4519.     // 選択を開始。
  4520.     //1.00Dから、範囲選択を開始したかどうか返します。
  4521. BOOL TXAPI TXCMDBASE txSelectBox(tx *text);
  4522.     // 箱の範囲選択開始
  4523.     // カット&ペースト専用の範囲選択。範囲選択中なら、範囲選択を中止
  4524.     //1.00Dから、範囲選択を開始したかどうか返します。
  4525.     //{#MS} %{F8}
  4526.     //{#VZ} ^KB
  4527.     //{#MI} ^{F6}
  4528. BOOL TXAPIBASE TXCMDBASE txSelectAll(tx *text);
  4529.     // テキスト全体を範囲選択
  4530.     // カット&ペースト専用の範囲選択
  4531.     //1.00Dから、範囲選択を開始したかどうか返します。
  4532.     //{#MS} ^A {MouseL4}
  4533.     //{#VZ} {MouseL4}
  4534.     //{#MI} {MouseL4}
  4535.     //{#EMACS} {MouseL4}
  4536. BOOL TXAPIBASE TXCMD txSelectQuit(tx *text);
  4537.     // 範囲選択中止
  4538.     //1.00Dから、範囲選択を中止したかどうか返します。
  4539. BOOL TXAPI txSelectToChar(tx* text);
  4540.     // 現在任意のモードで選択されている部分を、文字単位で選択
  4541.     // cliptopnowが範囲選択開始アドレス、clipendnowがカーソル位置になります。
  4542. BOOL TXAPI txFlushSelectNow(tx *text);
  4543.     // 範囲のアドレスをtext->cliptopnow,text->clipendnowにセット
  4544.     // cliptopnowは範囲選択を開始したときのアドレスを元にセットされます
  4545.     // clipendnowは現在のカーソル位置のアドレスを元にセットされます
  4546. DWORD TXAPI txEditOp(TX* text,int op,LPVOID arg);
  4547.     // 各種編集操作を行う
  4548.     //2.00E6で追加
  4549.     #define TXEDITOP_TOLOWER    10    // 範囲内の半角英字を小文字へ
  4550.                                     // 範囲が指定されてないときは先頭文字を見て
  4551.                                     // 単語を大/小文字へ
  4552.     #define TXEDITOP_TOUPPER    11    // 範囲内の半角英字を大文字へ
  4553.                                     // 範囲が指定されてないときは先頭文字を見て
  4554.                                     // 単語を大/小文字へ
  4555.  
  4556. //{###カット&ペースト}
  4557. //クリップボードやテキストスタックを使って、
  4558. //範囲内のカットやコピー、ペーストなどを行います。
  4559.  
  4560. BOOL TXAPIBASE TXCMD txSelectCopy(tx *text);
  4561.     // 範囲内をクリップボードへコピー
  4562. void TXAPI TXCMD txSelectCopyDelete(tx *text);
  4563.     // 範囲内をクリップボードへコピーし、削除し、範囲選択中止
  4564.     //{#MI} {F7}
  4565. void TXAPI TXCMD txSelectCopyQuit(tx *text);
  4566.     // 範囲内をクリップボードへコピーし、範囲選択中止
  4567.     //{#MI} {F8}
  4568. BOOL TXAPI TXCMD txSelectTsPush(tx *text);
  4569.     // 範囲内をテキストスタックへプッシュ
  4570. void TXAPI TXCMD txSelectTsPushDelete(tx *text);
  4571.     // 範囲内をテキストスタックへプッシュし、削除し、範囲選択中止
  4572.     //{#MI} ^Y
  4573. void TXAPI TXCMD txSelectTsPushQuit(tx *text);
  4574.     // 範囲内をテキストスタックへプッシュし、範囲選択中止
  4575. BOOL TXAPIBASE TXCMDBASE txSelectDelete(tx *text);
  4576.     // 範囲内を削除
  4577. BOOL TXAPIBASE TXCMD txPaste(tx *text);
  4578.     // クリップボードからペースト
  4579.     // カーソルを、ペーストしたバイト数、移動します。
  4580.     //{#MI} {F9}
  4581. BOOL TXAPI TXCMD txPasteChar(tx *text);
  4582.     // クリップボードから文字単位でペースト
  4583.     // カーソルを、ペーストしたバイト数、移動します。
  4584.     //{#MI} +{F9}
  4585. BOOL TXAPI TXCMD txTsPaste(tx *text);
  4586.     // テキストスタックからペースト
  4587.     // カーソルを、ペーストしたバイト数、移動します。
  4588.     //{#MI} ^L
  4589. BOOL TXAPI TXCMD txTsPop(tx *text);
  4590.     // テキストスタックからポップ
  4591.     // カーソルは移動しません
  4592.     //{#MI} +{Insert}
  4593. void TXAPI TXCMD txTsClear(tx *text);
  4594.     // テキストスタックをクリア
  4595.     //{#VZ} ^KY
  4596. BOOL TXAPI TXCMD TXMODAL txTsPasteModal(tx *text);
  4597.     // テキストスタックからペースト
  4598.     // text->fJumpTxPasteEndが真ならカーソルを移動します
  4599. BOOL TXAPI TXCMD TXMODAL txTsPopModal(tx *text);
  4600.     // テキストスタックからポップ
  4601.     // text->fJumpTxPasteEndが真ならカーソルを移動します
  4602.  
  4603. //{###編集}
  4604.  
  4605. BOOL TXAPI TXHIGH txClipSelectCopy(tx *text,HCLIP hclip);
  4606.     // 選択範囲内をhclipのクリップボードにコピー
  4607.     // txClipSelectCopy(text,HCLIP_WIN)はtxSelectCopy(text)と同じ。
  4608.     // txClipSelectCopy(text,HCLIP_TS)はtxSelectTsPush(text)と同じ。
  4609.     //2.00Eで追加
  4610. BOOL TXAPI TXHIGH txClipCopy(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind);
  4611.     // ユーザクリップボードにコピー
  4612.     // textのcliptopからclipendの内容を、
  4613.     // hclip([クリップボードハンドル]参照)で指定された
  4614.     // クリップボードに入れます
  4615.     // _clipkind:    0以外なら、指定されたclipkind(CLIP_CHAR etc)でペースト
  4616.     //                    CLIP_ALLはCLIP_CHARとして指定
  4617.     //                0なら、fClipで指定されたモード
  4618.     //                    fClipがCLIP_NONEなら、文字単位
  4619.     //                    CLIP_ALLはCLIP_CHARとなる
  4620.     // 文字装飾や段落書式はコピーしません
  4621. BOOL TXAPI TXHIGH txClipCopyEx(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind,NPARA nparaTop,NPARA nparaEnd);
  4622.     //1.99C 
  4623.     // 文字装飾や段落書式もコピーします。
  4624.     // nparaTop,nparaEndには、cliptop,clipendの論理行番号を渡してください。
  4625. BOOL TXAPI TXHIGH txClipPaste(tx *text,HCLIP hclip,BOOL fJump,int _clipkind);
  4626.     // ユーザクリップボードからペースト
  4627.     // hclipで指定されたクリップボードの内容を
  4628.     // カーソル位置にペーストします。
  4629.     // fJump:        真なら、カーソルを+ペーストサイズ移動する
  4630.     //                hclip == HCLIP_DELSTRの時はfJumpの指定は無効
  4631.     // _clipkind:    0以外なら、指定されたclipkindでペースト
  4632.     //                0なら、クリップボードのclipkindでペースト
  4633.     // 他に、clipDeleteTop/clipClearがあります(_share.h参照)
  4634.     // 文字装飾や段落書式もペーストします
  4635. BOOL TXAPI TXHIGH txClipPasteEx(tx *text,HCLIP hclip,int istack,DWORD cbPasteMax,BOOL fJump,int _fClip);
  4636.     //1.99C 
  4637.     // テキストスタックのトップ以外からもペーストすることができます。
  4638.     // cbPasteMaxは予約されています。0を指定してください。
  4639. BOOL TXAPI TXHIGH memClipCopy(LPVOID pmem,DWORD cbsize,HCLIP hclip,int fClip);
  4640.     // pmemのcbsizeのメモリブロックの内容を、
  4641.     // hclip([クリップボードハンドル]参照)で指定された
  4642.     // クリップボードに入れます
  4643.     // fClip:CLIP_CHAR等を指定してください
  4644.     //1.94で追加
  4645. DWORD TXAPI TXHIGH memClipPaste(LPVOID pmem,HCLIP hclip);
  4646.     // pmemにhclipで指定されたクリップボードの内容をコピーします。
  4647.     // pmemにNULLを指定すると、コピーするデータのサイズを返します。
  4648.     //1.94で追加
  4649. void TXAPI TXCMD TXUI txuiInsertControl(tx *text);
  4650.     // 制御文字の挿入
  4651.     // DOSアプリケーションであるVZのままの仕様です。
  4652.     // キー入力を待ち、英字が入力されたらコントロール+英字の制御文字を挿入します。
  4653.     // キー入力待ちの時にマウスを操作してはいけません。
  4654. BOOL TXAPI TXCMDBASE txUndo(tx *text);
  4655.     // やり直し
  4656.     // 全ての編集操作をやり直しします。
  4657.     // 表テキストにのみ作用します。
  4658.     //{#MS} ^Z %{Backspace}
  4659.     //{#VZ} %{Backspace} ^KU
  4660.     //{#MI} %{Backspace}
  4661.     //{#EMACS} %{Backspace}
  4662. BOOL TXAPI TXCMDBASE txRedo(tx *text);
  4663.     // 再実行
  4664.     // やり直しをキャンセルして再実行します。
  4665.     // 表テキストにのみ作用します。
  4666.     //2.99A 970321 {#MS} ^Y new
  4667.     //{#MS} ^Y +^Z +%{Backspace}
  4668.     //{#VZ} +%{Backspace}
  4669.     //{#MI} +%{Backspace}
  4670.     //{#EMACS} +%{Backspace}
  4671. BOOL TXAPI TXCMDBASE txUndoPara(tx *text);
  4672.     // 行編集の取消
  4673.     // カーソルがその論理行の編集を開始したときの状態に戻します。
  4674.     //{#VZ} ^QL
  4675.  
  4676. //{###ファイル}
  4677. //テキストの保存、テキストのオープン・再オープン、多重化、
  4678. //テキストの比較などを行います。
  4679.  
  4680. //2.94 970123 
  4681. typedef struct {
  4682.     HWND hwnd;                //  fAlrearyOpen : 既にオープンされていたテキストのhwndbase
  4683.                             // !fAlrearyOpen : オープンしたテキストのhwndbase
  4684.     TX* text;                // オープンしたtext(同一プロセスWZの場合)
  4685.                             // fAlrearyOpenで、同一プロセスWZなら、
  4686.                             // 既にオープンされているtext
  4687.     WORD fAlrearyOpen:1;    // 既にオープンされていた
  4688.     WORD fWzexec:1;            // WZを起動した
  4689.     WORD fReserved:14;
  4690.     BYTE reserved[32];
  4691. } TXFORKRESULT;
  4692.  
  4693. BOOL TXAPI forkex(mchar* szfilename,mchar* sw,UINT mode,TXFORKRESULT* pResult);
  4694.     // szfilenameのファイルをオープンします。
  4695.     // szfilenameにスイッチ指定を含むことはできません
  4696.     // 空白を含むファイル名もszfilenameにそのまま指定できます
  4697.     // szfilenameは""で括ってあっても構いません
  4698.     // szswに、起動オプションを指定できます。
  4699.     // オープンできたらTRUE
  4700.     // 既にオープンされていたらその窓をアクティブにしてFALSE、
  4701.     // オープンできなかったらFALSEを返します。
  4702.     // modeにはTXFORK_XXXを指定します。_text.hを参照してください。
  4703.     //2.94 970123 新規API
  4704.     #define TXFORK_NODISP            0x0001    // ウィンドウを表示しない
  4705.     #define TXFORK_CLOSE_NULL        0x0002    // 現在のtextが無題ファイルで内容が空なら閉じる
  4706.     #define TXFORK_CLOSE_TEXT        0x0004    // 現在のtextを強制的に閉じる
  4707.     #define TXFORK_FORKWZ_ENABLE    0x0008    // 高速オープンができなければ、
  4708.                                             // 別WZを起動することも検討する
  4709.     #define TXFORK_FORKWZ            0x0010    // 別WZを起動してオープンする
  4710.     #define TXFORK_SYNC                0x0020    // 返り値は、szfilenameの窓のhwndbase。
  4711.                                             // オープンできなかったらNULL
  4712.                                             // 別WZを起動してオープンした場合は、
  4713.                                             // オープン処理が終わるまで待つ。
  4714.     #define TXFORK_OLDARG            0x0040    // szfilenameにスイッチ指定も可能にする
  4715.                                             // a:\wz\readme.txt /J100
  4716.                                             // 空白を含むファイルは、次のように""で括ってください。
  4717.                                             // "a:\wz editor\readme.txt" /J100
  4718.     #define TXFORK_ENABLE_MULTI        0x0080    // szfilenameが既にオープンされていても
  4719.                                             // 構わずオープンする。
  4720. void TXAPI TXCMD txOpenNew(tx *text);
  4721.     // 新しく新規テキストウィンドウを開く
  4722. void TXAPI txOpenFile(TX* text,mchar* szfilenamesw);
  4723.     // カレントテキストを破棄して、szfilenameをオープン
  4724.     // 表テキストでtext->fNoProfileが偽ならプロファイルを参照する
  4725.     // szfilenameには、txOpenForkと同じようにファイル名やスイッチを指定できます。
  4726.     //        a:\wz\readme.txt /J100
  4727.     // 空白を含むファイルは、次のように""で括ってください。
  4728.     //        "a:\wz editor\readme.txt" /J100
  4729.     // 自分自身のウィンドウを破棄して新しくウィンドウを開きます。
  4730.     // 実行中のマクロも終わってしまいます。
  4731. BOOL TXAPI TXCMD txReopen(tx *text);
  4732.     // 編集内容を破棄し、編集を最初からやり直す
  4733.     //{#RET}実行できたか返す。
  4734.     // 組み込まれていたマクロを全て解放。
  4735.     // いったん、インスタンスを終了し、再起動します。
  4736. BOOL TXAPI txReopenEx(tx *text,mchar* sw);
  4737.     // 編集内容を破棄し、編集を最初からやり直す
  4738.     // txReopenと同じですが、起動スイッチを指定できます
  4739. BOOL TXAPI TXCMD txReopenInternal(tx *text);
  4740.     // 編集内容を破棄し、編集を最初からやり直す
  4741.     // txReopenと違って、マクロは解放しません。
  4742.     // インスタンスの終了も行いません
  4743. BOOL TXAPIBASE txInsertFile(tx *text,mchar *szfilename);
  4744.     // szfilenameの内容を挿入。
  4745.     // szfilenameは""で括ってあってはいけません。
  4746.     //{#RET}実行できたか返す。
  4747.     //2.99 970317 仕様変更 複数ファイルの指定、""で括った指定はできなくなりました
  4748.     // txInsertFileMultiを使って下さい。
  4749. BOOL TXAPI txInsertFileMulti(tx *text,mchar *szfilename);
  4750.     // szfilenameの内容を挿入。
  4751.     // szfilenameには空白で区切って複数のファイルを指定できます。
  4752.     // 空白を含むファイル名は""で括ってください。
  4753.     //{#RET}実行できたか返す。
  4754.     //2.99 970317 new 旧txInsertFile
  4755. BOOL TXAPIBASE TXHIGH txSave(tx *text);
  4756.     // 上書き保存
  4757.     //{#RET}セーブできたか返す。
  4758. BOOL TXAPIBASE txSaveTo(tx *text,mchar *szfilename);
  4759.     // ファイル名szfilenameにセーブ
  4760.     //{#RET}セーブできたか返す。
  4761.     // 編集中のファイルには影響しない。
  4762. BOOL TXAPI txSaveAs(TX* text,mchar* szfilename,int returncode,int kanjicode,TXATRATR txatratr);
  4763.     //1.99C で追加
  4764. void TXAPI TXCMD txQuit(tx *text);
  4765.     // テキストウィンドウを破棄し、終了
  4766. void TXAPI txInitText(tx *text);
  4767.     // textの全メンバを、0や無効状態にリセット
  4768.     // 裏textを使用する前には必ず実行してください。
  4769.     // 表textはリセット禁止!
  4770. BOOL TXAPI txSetFileName(tx *text,mchar *szfilename);
  4771.     // 編集ファイル名を設定
  4772.     // "autoexec.__txopen"を呼び出し、「折り返し幅」等の設定データをロード
  4773.     // txOpenText後は実行できない。txCloseしてから実行してください。
  4774. BOOL TXAPI txOpenText(tx *text);
  4775.     // テキストバッファを初期化し、編集ファイルをバッファに読み込む。
  4776.     // ウィンドウにテキスト内容を表示し、編集開始。
  4777.     // 表テキストでtext->fNoProfileが偽ならプロファイルを参照する
  4778. BOOL TXAPI txInitPmem(TX* text);
  4779.     // txCloseした後、txOpenTextするにはこれを実行してからでないとできない
  4780.     //1.97で新設
  4781. BOOL TXAPI txClose(tx *text);
  4782.     // テキストの編集を終了。テキストバッファを破棄。編集内容も破棄。
  4783.     // txClose後、txSetFileName,txOpenTextして再びtextをオープンできます(2.00B)
  4784.     // 2.00/2.00AではtxSetFileNameの前にtxInitTextしないといけません。
  4785. BOOL TXAPI TXCMDBASE txuiOpen(tx *text);
  4786.     // ファイルを開く
  4787.     //{#MS} ^O ^{F12} %{F12}
  4788.     //{#MI} {Esc}N
  4789. BOOL TXAPI TXCMD TXUI txuiOpenRead(tx *text);
  4790.     // リードオンリーファイルオープン
  4791. BOOL TXAPI TXCMD TXUI txuiInsertFile(tx *text);
  4792.     // ファイルの挿入
  4793. BOOL TXAPI TXCMDBASE TXUI txuiReopen(tx *text);
  4794.     // 再読み込み
  4795.     // マクロも再読み込み
  4796. BOOL TXAPI TXCMDBASE TXUI txuiReopenInternal(tx *text);
  4797.     // 再読み込み
  4798.     // マクロの再読み込みはせず、ウィンドウも閉じない
  4799.     //{#VZ} {Esc}U
  4800.     //1.00H4 で追加
  4801. BOOL TXAPI TXCMDBASE TXUI txuiSave(tx *text);
  4802.     // 上書き保存
  4803.     // 「(無題)」のウィンドウを保存するとファイル名の
  4804.     // 入力ダイアログが出る。
  4805.     //{#MS} ^S
  4806. BOOL TXAPI TXCMDBASE TXUI txuiSaveAs(tx *text);
  4807.     // 名前を付けて保存
  4808.     // 別ファイルに保存後、編集ウィンドウのファイル名も変更。
  4809.     //{#MS} {F12}
  4810. BOOL TXAPI TXCMD TXUI txuiSaveTo(tx *text);
  4811.     // 別ファイルへ保存
  4812.     // 編集ウィンドウのファイル名には影響与えません。
  4813.     // 変更フラグも立ったままです。
  4814. BOOL TXAPI TXCMDBASE TXUI txuiSaveClose(tx *text);
  4815.     // 保存して閉じる
  4816.     //{#MI} {Esc}E
  4817. BOOL TXAPI TXCMDBASE TXUI txuiClose(tx *text);
  4818.     // ファイルを閉じる
  4819.     //{#MS} ^W
  4820.     //{#VZ} {Esc}C %C ^%C
  4821.     //{#EMACS} %C
  4822. void TXAPI TXCMDBASE txuiCloseOpen(tx *text);
  4823.     // 閉じて別ファイルを開く
  4824. BOOL TXAPI TXCMDBASE TXUI txuiQuit(tx *text);
  4825.     // 問い合わせ付き破棄終了
  4826.     // 「修正内容を放棄しますか?」と尋ね、終了
  4827.     //{#MI} {Esc}Q
  4828. BOOL TXAPI TXCMD TXUI txuiCloseAll(tx *text);
  4829.     // 問い合わせ付き保存終了
  4830.     // 「修正テキストを出力しますか?」と尋ね、全終了
  4831. BOOL TXAPI TXCMDBASE TXUI txuiCloseAllEvery(tx *text);
  4832.     // 全てのWZ Editorを閉じる
  4833.     // テキスト毎に「出力しますか?」を尋ね、全終了
  4834.     //{#VZ} {Esc}X
  4835. BOOL TXAPI TXCMD TXUI txuiCloseAllForce(tx *text);
  4836.     // 全テキストを保存してエディタの終了
  4837.     // 修正テキストは全保存し、全終了
  4838. BOOL TXAPI TXCMDBASE TXUI txuiQuitAll(tx *text);
  4839.     // 全テキストを破棄してエディタの終了
  4840.     // 「修正テキストを放棄しますか?」を出し、全終了
  4841.     //{#VZ} %X ^%X
  4842.     //{#EMACS} %X
  4843. BOOL TXAPI TXCMDBASE txCmp(tx *text);
  4844.     // テキストの比較
  4845.     // 2つのウィンドウのカーソル位置から文字単位で比較を行い、
  4846.     // 次に差異のある部分までジャンプします。
  4847.     //2.95 970129 {#MS} ^{F4}は廃止。Ctrl+F4はサブウィンドウのクローズに使用する
  4848.     //{#MS} +^P
  4849.     //{#VZ} ^KX +{F3}
  4850.     //{#EMACS} +{F3}
  4851. BOOL TXAPI TXCMDBASE txDup(tx *text);
  4852.     // 編集前ファイルの参照
  4853.     // 編集中ファイルをディスクからビューモードで呼び出します。
  4854.     // 参照中のときは、参照を解除します。
  4855.     //{#VZ} {Esc}D
  4856. BOOL TXAPI alltextSave(void);
  4857.     // オープン中の全テキストについて編集されているものをセーブする
  4858.     // エラーの場合はFALSEを返す。正常終了ならTRUEを返す
  4859. void TXAPI alltextQuit(void);
  4860.     // すべてのテキストを終了し、エディタを終了する
  4861. BOOL TXAPI txSendMail(TX* text);
  4862.     // テキストをメールとして送信する
  4863.     //WZ32のみ使用可
  4864.     //2.00Eで追加
  4865.  
  4866. //2.94 970123 txMultiEx廃止
  4867.  
  4868. //{###検索・置換}
  4869.  
  4870. BOOL TXAPI TXCMDBASE TXUI txuiSearch(tx *text);
  4871.     // カーソル以降がデフォルトの検索
  4872.     //1.00Cより、検索文字列が見つかったか返す
  4873.     //{#MI} ^^ ^QF
  4874. BOOL TXAPI TXCMDBASE TXUI txuiSearchPrev(tx *text);
  4875.     // カーソル以前がデフォルトの検索
  4876.     //1.00Cより、検索文字列が見つかったか返す
  4877.     //{#MI} ^\ ^QB
  4878. BOOL TXAPI TXCMDBASE TXUI txuiSearchSet(tx *text);
  4879.     // 検索文字列の設定(VZ)
  4880.     // txSearchContinue/Prevで検索実行できる。
  4881.     //1.00Cより、検索文字列が入力されたかどうか返す
  4882.     //{#VZ} ^QF {F6}
  4883.     //{#EMACS} {F6}
  4884. void TXAPI TXCMDBASE TXUI txuiSearchGet(tx *text);
  4885.     // 検索文字列をテキストから取得(VZ)
  4886.     // 連続して実行すると取得範囲が広がります。
  4887.     // txSearchContinue/Prevで検索実行できる。
  4888.     // キー割付専用です。API呼び出しでは使えません。
  4889.     //{#MS} ^L
  4890.     //{#VZ} ^L {F5}
  4891.     //{#EMACS} {F5}
  4892. int TXAPI TXCMDBASE TXUI txuiReplace(tx *text);
  4893.     // 「確認しない」がデフォルトの置換
  4894.     //1.00Cより、置換個数を返す
  4895. int TXAPI TXCMDBASE TXUI txuiReplaceQuery(tx *text);
  4896.     // 「確認」がデフォルトの置換
  4897.     //1.00Cより、置換個数を返す
  4898.     //{#MS} ^E
  4899.     //{#VZ} ^QA [F7] 
  4900.     //{#MI} ^QA
  4901.     //{#EMACS} {F7}
  4902.  
  4903. //{###ジャンプ}
  4904.  
  4905. void TXAPI TXCMDBASE TXUI txuiJump(tx *text);
  4906.     // 指定行ジャンプ
  4907.     //2.99A 970321 {#MS} {F5}廃止
  4908.     //{#VZ} ^QJ
  4909.     //{#MI} {Esc}0 {Esc}1 {Esc}2 {Esc}3 {Esc}4 {Esc}5 {Esc}6 {Esc}7 {Esc}8 {Esc}9 
  4910.  
  4911. //{###カーソル移動}
  4912.  
  4913. void TXAPI TXCMDBASE TXUI txuiPrevSmooth(tx *text);
  4914.     // 自動スクロールアップ
  4915.     //{#VZ98} {PageUp} ^QW
  4916.     //{#VZIBM} +{Up} ^QW
  4917. void TXAPI TXCMDBASE TXUI txuiNextSmooth(tx *text);
  4918.     // 自動スクロールダウン
  4919.     //{#VZ98} {PageDown} ^QZ
  4920.     //{#VZIBM} +{Down} ^QZ
  4921.  
  4922. //{###マクロ}
  4923. //キーボードマクロやマクロの実行呼び出しなどを行います。
  4924. //APIには、マクロの様々な情報を返すもの、getch,sleepなどがあります。
  4925.  
  4926. BOOL TXAPI TXCMDBASE txuiMacroExec(tx *text);
  4927.     // マクロ-実行
  4928.     //{#VZ} {Esc}^
  4929. BOOL TXAPI TXCMDBASE txuiMacroExecRelease(tx *text);
  4930.     // マクロ-再読み込みして実行
  4931. void TXAPI TXCMDBASE txkeyMacro(tx *text);
  4932.     // キーボードマクロ割り当て予約
  4933.     // このコマンドを割り当てたキーはキーボードマクロ割り当て
  4934.     // 専用キーになる。
  4935.     //{#VZ} ^\        
  4936.     //{#MI} ^_
  4937.     //{#EMACS} ^]
  4938. BOOL TXAPI TXCMDBASE txKeymacroRecord(tx *text);
  4939.     // キーボードマクロ記録開始・終了
  4940.     //{#VZ} ^_
  4941.     //{#MI} ^@
  4942.     //{#VZ} +^M
  4943.     //{#MI} +^M
  4944.     //{#MS} +^M
  4945.     //1.99H キーに割り当て
  4946. BOOL TXAPI TXCMDBASE txKeymacroPlay(tx *text);
  4947.     // 最後に記録したキーボードマクロを再生
  4948.     //{#VZ} +^L
  4949.     //{#MI} +^L
  4950.     //{#MS} +^L
  4951.     //1.99H キーに割り当て
  4952. BOOL TXAPI txKeymacroPlayN(tx *text,int n);
  4953.     // n番のキーボードマクロを再生
  4954. BOOL TXAPI macroFork(mchar *filename);
  4955.     // 新しくテキストウィンドウを開き、filenameのマクロを実行する
  4956.     // filenameに空白に続けてWZのスイッチを指定できます。
  4957.  
  4958. //{###情報取得}
  4959. //カーソル位置の文字コードを取得したりします。
  4960.  
  4961. BOOL TXAPIBASE TXHIGH txIsCurReturn(tx *text);
  4962.     // カーソル位置の文字コードが改行か返す
  4963.     //{#RET}CR+LF・LF・EOFなら真、そうでなければ偽を返す
  4964. BOOL TXAPIBASE txIsCurEof(tx *text);
  4965.     // カーソル位置がEOFか返す
  4966.     // EOFコードで判定するのではなく、
  4967.     // 本当にカーソル位置がファイル末尾にあるかどうか調べます。
  4968. BOOL TXAPIBASE txIsCurTof(tx *text);
  4969.     // カーソル位置がファイル先頭か返す
  4970. BOOL TXAPIBASE txIsLineReturn(tx *text);
  4971.     // カーソル位置の表示行が改行で終わっているかどうか返す
  4972.     //{#RET}CR+LF・LF・EOFなら真、そうでなければ偽を返します
  4973. BOOL TXAPIBASE txIsLineEof(tx *text);
  4974.     // カーソル位置の表示行がEOF行かどうか返す
  4975.     //1.93で追加
  4976. TXCHAR TXAPIBASE TXHIGH txGetChar(tx *text);
  4977.     // カーソル位置の文字コードを返す
  4978.     // if (getchar == 'あ')も可
  4979.     // カーソル位置が改行かどうか調べるにはtxIsCurReturnを使ってください。
  4980.     // if (getchar == '\n')だと、CR+LFのときしか「真」になりません。
  4981. TXCHAR TXAPIBASE txReadChar(tx *text);
  4982.     // カーソル位置の文字コードを返し、カーソルを1文字進める
  4983. int TXAPIBASE txGetWord(tx *text,txstr str);
  4984.     // 単語をstrに取得する
  4985.     // 1行内の範囲選択中なら、範囲内の文字をstrに取得
  4986.     //{#RET}取得したバイト数を返す
  4987.     //2.99D 970401 txGetWordで検索によって選択された文字列がとれないのは不便なので取れるようにした。
  4988. int TXAPIBASE TXHIGH txGetLine(tx *text,txstr str);
  4989.     // カレント表示行の内容をstrに取得
  4990.     // 表示行が、改行・EOFで終わる場合、その手前までの文字列を取得
  4991.     //{#RET}取得したバイト数を返す
  4992. int TXAPIBASE TXHIGH txGetPara(tx *text,txstr str);
  4993.     // カレント論理行の内容をstrに取得
  4994.     // 論理行が、改行・EOFで終わる場合、その手前までの文字列を取得
  4995.     //{#RET}取得したバイト数を返す
  4996.     //1.93で追加
  4997. int TXAPIBASE TXHIGH txGetLineRear(tx *text,txstr str);
  4998.     // カーソル位置から表示行末までの内容をstrに取得
  4999.     // 表示行が、改行・EOFで終わる場合、その手前までの文字列を取得
  5000.     //{#RET}取得したバイト数を返す
  5001. int TXAPI TXHIGH txGetBuff(TX* text,WORD lch,mchar* buff,WORD sizebuff);
  5002.     // カーソル位置からlchバイト数の内容をbuffにコピーする。
  5003.     // 最大sizebuff-1バイト取得する
  5004.     // 取得したバイト数を返す。
  5005.     // curがtemp2直前の場合は、temp2の前までの内容しかとれない。
  5006.     //3.00A 970428 new
  5007. int TXAPI txGetLxLineEnd(tx *text);
  5008.     // カレント表示行の右端の文字の桁数を返す
  5009. int TXAPI txGetLxLineTail(tx *text);
  5010.     // カレント表示行の右端の文字の直後の桁数を返す
  5011. int TXAPI txGetXLineTail(tx *text);
  5012.     // カレント表示行の右端の文字の直後のx座標を返す
  5013.     //1.00H6 で追加
  5014. int TXAPI txGetWordBuff(TX* text,mchar *szbuff,IMEM cchbuff);
  5015.     // 単語をszbuffに最大cchbuff-1文字取得する。
  5016. int TXAPI txGetWordBuffMi(TX* text,mchar *szbuff,IMEM cchbuff);
  5017.     // txGetWordBuff(MIFESライク)
  5018. int TXAPI txGetWordBuffPrim(TX* text,mchar *lpBuff,IMEM cchBuff,int off,BOOL fMifes);
  5019.     // txGetWordBuff/txGetWordBuffMi プリミティブ
  5020.     // text->cur + offから始まる語をlpBuffにコピーする
  5021.     // コピーした語のバイト数を返す
  5022.     // cchBuff: lpBuffのsizeofを指定する
  5023.     // fMifes:  TRUE=MIFESライク
  5024. BOOL TXAPIBASE txGetEdit(tx *text);
  5025.     // 編集されたか返す
  5026. IFILE TXAPIBASE txGetAddress(tx *text);
  5027.     // カーソル位置のテキストアドレスを返す
  5028. IFILE TXAPIBASE TXHIGH txGetParaTop(tx *text);
  5029.     // カーソル位置の段落の先頭アドレスを返す
  5030. IFILE TXAPIBASE TXHIGH txGetParaEnd(tx *text);
  5031.     // カーソル位置の段落の末尾アドレスを返す
  5032.     // 0x0Aのアドレスが返される
  5033.     // 0x0Aが見つからないときは、テキストバッファの末尾の文字のアドレスを返す
  5034. IFILE TXAPIBASE TXHIGH txGetParaTail(tx *text);
  5035.     // 次の段落の先頭アドレスを返す
  5036.     // 次の段落が見つからないときは、テキストバッファの末尾の文字のアドレスを返す
  5037.     //1.00Eで追加
  5038. IFILE TXAPI TXHIGH txGetParaIch(tx* text);
  5039.     // 段落の先頭からの文字数を返す
  5040.     // 漢字も1文字として数えます。
  5041.     //1.97で追加
  5042. DWORD TXAPIBASE txGetTextSize(tx *text);
  5043.     // テキストのバイト数を返す
  5044.     // EOFの分は除く
  5045. DWORD TXAPI txWriteToMem(tx *text,mchar *lpMem,DWORD lchCopy);
  5046.     // テキストをlpMemへlchCopyバイトコピーする
  5047. BOOL TXAPI txSaveToMem(tx *text,mchar *lpMem);
  5048.     // テキストをlpMemへセーブする
  5049. DWORD TXAPI txWriteToFile(tx *text,HFILE hf,DWORD lchCopy);
  5050.     // テキストをhfへlchCopyバイト書き出す。
  5051.     // hfのファイルポインタの位置から書き出します。
  5052. BOOL TXAPI txSaveToFile(tx *text,HFILE hf);
  5053.     // テキスト全体をhfへ書き出す。
  5054.     // hfのファイルポインタの位置から書き出します。
  5055.     // EOFは書き出しません。
  5056. BOOL TXAPI txSwapNext(tx *text);
  5057.     // テキストバッファのスワップを行う
  5058.     // 後方からswap-inする。
  5059.     // swap-inするデータがなければ0を返す
  5060.     // カーソル位置をswap-inしたデータの先頭にセットし、1を返す
  5061.     // カーソル位置は原則として論理行の先頭になる。
  5062. BOOL TXAPI txSwapPrev(tx *text);
  5063.     // テキストバッファのスワップを行う
  5064.     // 前方からswap-inする。
  5065.     // swap-inするデータがなければ0を返す
  5066.     // カーソル位置を、swap-inする前のテキストバッファの先頭データに
  5067.     // セットし、1を返す
  5068.     // カーソル位置は原則として論理行の先頭になる。
  5069.  
  5070. BOOL TXAPI alltextGetEdit(void);
  5071.     // オープン中の全テキストについて編集されているか調べる。
  5072.     // あればTRUEを返す。なければFALSEを返す
  5073.  
  5074. WZCMD TXAPI wzcmdRegister(mchar *szcmd);
  5075.     // szcmdコマンドを登録して、WZCMDコードを返します。
  5076.     // 登録できなければ0を返します。
  5077.     // すでに登録されている場合は、登録せず、wzcmdFromSzcmdの値を返します
  5078. WZCMD TXAPI wzcmdFromSzcmd(mchar *szcmd);
  5079.     // szcmdコマンドをWZCMDコードに変換します。
  5080.     // 変換できなければ0を返します。
  5081. mchar* TXAPI wzcmdToSzcmd(WZCMD wzcmd);
  5082.     // wzcmdのコマンドを文字列に変換して返します。
  5083.     // 変換できなければNULLを返します。
  5084.  
  5085. WZKEY TXAPI wzkeyGetEnd(void);
  5086.     // wzkeyの最終番号を返します
  5087. mchar** TXAPI wzkeyGetVk(void);
  5088.     // 仮想キーを文字列配列で返します。
  5089. mchar* TXAPI szkeyToStr(mchar szkey[CCHKEY],mchar szstr[CCHWORD]);
  5090.     // "+[LEFT]"のようなszkey指定を、
  5091.     // szstrに"Shift+LEFT"のように変換します
  5092.     // szstrを返します
  5093.     //1.00H2 custkey.cから、WZ内部に移しました。
  5094.     // このAPIを使っているマクロは再コンパイルが必要です。
  5095. WZKEY TXAPI txWzkeyFromSzkey(TX* text,mchar *szkey);
  5096.     // .keyのキー指定書式szkeyを、WZKEYに変換します。
  5097.     // szkeyが2ストロークキーで指定された場合:
  5098.     //   1ストローク目のキーがプレフィックスキーとして登録されていればWZKEY、
  5099.     //   登録されていなければ0を返します。
  5100.     // szkeyが1ストロークキーで指定された場合:
  5101.     //   キーがプレフィックスキーとして登録されているときはプレフィックスコードを返します
  5102.     // 変換できなければ0を返します。
  5103.     //2.96A 970214 旧wzkeyFromSzkey
  5104. mchar* TXAPI txWzkeyToSzkey(TX* text,WZKEY wzkey,mchar szkey[CCHKEY]);
  5105.     // wzkeyのキーコードを、.keyのキー記述形式で文字列に変換してszkeyに代入します
  5106.     // wzkeyが0なら、szkey[0] = 0とします。
  5107.     //2.96A 970214 旧wzkeyToSzkey
  5108.  
  5109. WZKEY TXAPI txKeySearch(TX* text,WZKEY wzkey0,WZCMD wzcmd);
  5110.     // wzcmdが割り当てられているキーを検索します。見つからなければ0を返します。
  5111.     // keyには前回の検索結果を渡してください。初めての検索の時は0を渡します。
  5112.     //2.96A 970214 旧wzkeySearch
  5113. BOOL TXAPI txKeySetWzcmd(TX* text,WZKEY wzkey,WZCMD wzcmd);
  5114.     // wzkeyキーにwzcmdコマンドを割り当てます
  5115.     // wzcmdにWZCMD_PRETOPを指定すると、wzkeyをプレフィックスキーとして登録します。
  5116.     // 既にプレフィックスキーとして登録されていたら、何もしません。
  5117.     // wzkeyがプレフィックスキーで、wzcmdにWZCMD_PRETOP以外が指定された場合、
  5118.     // wzkeyのプレフィックスキー指定を解除します。
  5119.     // wzkeyにWZKEY_ALLを指定すると全てのキーのコマンド登録を解除します。
  5120.     // WZKEY_FKEYを指定すると全てのファンクションキーを解除します。
  5121.     // 解除するばあい、wzcmd=0としてください
  5122.     //2.96A 970214 旧wzkeySetWzcmd
  5123. WZCMD TXAPI txKeyGetWzcmd(TX* text,WZKEY wzkey);
  5124.     // wzkeyに割り当てられているWZCMDを返します
  5125.     // プレフィックスキーなら、WZCMD_PRETOPからWZCMD_PREENDまでの値を返します。
  5126.     //2.96A 970214 旧wzkeyGetWzcmd
  5127. BOOL TXAPI txKeyRegister(TX* text,mchar *szkey,mchar *szcmd);
  5128.     // キー登録を受け付ける
  5129.     // szkeyにキー、szcmdにコマンドを指定します。
  5130.     //2.96A 970214 旧wzkeyRegister
  5131. BOOL TXAPI txKeyIsEdited(TX* text);
  5132.     // txKeyLoadしてからキーが変更されたかどうか返します。
  5133.     //2.96A 970214 旧wzkeyIsEdited
  5134. BOOL TXAPI txKeyLoad(TX* text);
  5135.     // text->szKeyで指定されたキーファイルをロードして現在のキー設定とします。
  5136.     //2.96A 970214 旧wzkeyLoad
  5137. void TXAPI txFlushToolbar(TX* text);
  5138.     // ツールバーの作成&表示のし直し
  5139.     //2.96A 970214 旧toolbarFlush
  5140.  
  5141. mchar* TXAPI wzGetEnv(DWORD iname);
  5142.     // WZ環境変数の内容を返します
  5143.     // inameには次の値を指定できます
  5144.     // WZENV_EXTENSIONS,WZENV_VIEWERS,WZENV_TXPATH,
  5145.     // WZENV_INCLUDE,WZENV_PATH,WZENV_EXT,WZENV_KEY
  5146.     // 以上の値はそれぞれ、text->shareの、
  5147.     // szenvextensions,szenvviewers,szenvtxpath,
  5148.     // szenvinclude,szenvpath,szenvext,szenvkey
  5149.     // に対応します。従来通りtext->share->szXXXとして
  5150.     // WZ環境変数に直接アクセスすることも可能ですが、
  5151.     // WZ32では動作しませんので、wzGetEnv関数を使って下さい。
  5152.     //1.00Fで追加
  5153. #define WZENV_EXTENSIONS    0
  5154. #define WZENV_VIEWERS        1
  5155. #define WZENV_TXPATH        2
  5156. #define WZENV_INCLUDE        3
  5157. #define WZENV_PATH            4
  5158. #define WZENV_EXT            5
  5159. #define WZENV_KEY            6
  5160.  
  5161. //{###表示}
  5162. //画面のリフレッシュ、文字コードの表示などを行います。
  5163. //APIには、テキストの描画を止めて高速処理モードを設定したり、
  5164. //ステータスバーに情報を表示するものがあります。
  5165.  
  5166. void TXAPIBASE txDispCursor(tx *text);
  5167.     // textが表テキストで、txSetUndisp中でなければ、
  5168.     // カーソルを現在位置に表示
  5169. void TXAPIBASE txDispLocate(tx *text);
  5170.     // textが表テキストで、txSetUndisp中でなければ、
  5171.     // カーソル位置の行と桁を表示します。
  5172. void TXAPI txDispText(tx *text,int lyTop,int lyEnd);
  5173.     // textが表テキストで、txSetUndisp中でなければ、
  5174.     // 画面のlyTop行からlyEnd行までのテキストを表示
  5175.     // 先頭行は0行として指定
  5176. void TXAPIBASE txDispTextAll(tx *text);
  5177.     // textが表テキストで、txSetUndisp中でなければ、
  5178.     // 画面にテキストを表示
  5179. void TXAPIBASE TXCMDBASE txDispAll(tx *text);
  5180.     // 画面表示のリフレッシュ
  5181.     // textが表テキストで、txSetUndisp中でなければ、
  5182.     // テキストウィンドウの全表示(txDispTextAll+α)
  5183.     // txDispCursor、txDispLocateします。
  5184.     // 全てのステータスバーも表示します
  5185.     // 裏テキストならば、表示しません。
  5186. void TXAPIBASE txSetUndisp(tx *text);
  5187.     // 画面の非表示
  5188.     // txSetDispされるまでテキストを表示しない
  5189.     // マウスカーソルを砂時計にする
  5190. BOOL TXAPIBASE txSetDisp(tx *text);
  5191.     // 画面表示の再表示
  5192.     // 全表示して、テキストの表示を再開する。
  5193.     //{#RET}全表示したか返す。
  5194. void TXAPIBASE txSetDispFlag(tx *text);
  5195.     // 画面表示の再開
  5196.     // テキストの表示を再開する。全表示はしない
  5197. void TXAPI txSetUndispSelect(tx *text);
  5198.     // 範囲選択時の反転表示を表示しない
  5199.     // マクロ終了時に、この設定は解除されます
  5200.  
  5201. //{###ウィンドウ}
  5202. //ウィンドウの切り換え、サイズの調節、整列などを行います。
  5203.  
  5204. #ifdef __FLAT__
  5205.     #define WNDTX_RECEIVE_MEM_ENTER    \
  5206.         WZMEM wzmem;\
  5207.         lParam = wzmemOpen(lParam,&wzmem);
  5208.     #define WNDTX_RECEIVE_MEM_EXIT    \
  5209.         wzmemClose(&wzmem);
  5210. #else
  5211.     #define WNDTX_RECEIVE_MEM_ENTER
  5212.     #define WNDTX_RECEIVE_MEM_EXIT
  5213. #endif
  5214.  
  5215. void TXAPI TXCMDBASE TXUI txuiSwitchText(tx *text);
  5216.     // テキストウィンドウを選択して切り替え
  5217.     //{#MS} {F6}
  5218.     //{#VZ} {F3} %T ^%T
  5219.     //{#MI} {F2}
  5220.     //{#EMACS} {F3} %T
  5221. void TXAPI TXCMDBASE txSwitchWindow(tx *text);
  5222.     // テキストウィンドウの切り替え
  5223.     //2.99A 970321 {#MS} +{F6} +^{F6} -> {#MS} +{F6}
  5224.     //{#MS} +{F6}
  5225.     //{#VZ} {F2} %W ^%W
  5226.     //{#MI} {Home}
  5227.     //{#EMACS} {F2} ^{Enter} %W
  5228. void TXAPI wndtxSetActive(HWND hwndbase);
  5229.     // hwndbaseのテキストウィンドウをアクティブにする
  5230. HWND TXAPI wndtxGetActive(HWND hwndbase);
  5231.     // hwndbaseの子ウィンドウのうち、
  5232.     // 最前面にあるトップレベル(タイトルバーつき)ウィンドウを返します。
  5233.     //1.00D 仕様の記述が間違っていたので修正しました。
  5234. DWORD TXAPI wndtxCall(HWND hwndbase,mchar *szAPI);
  5235.     // hwndbaseのテキストウィンドウにメッセージを送ってTXAPIやマクロを呼び出す。
  5236.     // 別タスクのWZをコントロールするのに使います。
  5237.     // TX-APIを呼び出す場合、szAPIにはAPI名を"txQuit"等として指定してください。
  5238.     // 引数(tx *text)のみを持つTX-APIを呼び出すことができますが、
  5239.     // 呼び出せないものもあります。
  5240.     // マクロを呼び出す場合、szAPIには呼び出すマクロをmacroCallStrの第1引数と
  5241.     // 同じ様に指定してください。
  5242.     // 呼び出しがうまくいった場合は、呼び出したTXAPIまたはマクロの返り値、
  5243.     // 失敗した場合は0を返します。
  5244. #define wndtxSendMessage    wndtxCall    // 旧名
  5245. LRESULT TXAPI wndtxSendStr(HWND hwnd,UINT uMsg,WPARAM wParam,LPCSTR szstr);
  5246.     // SendMessageと同じですが、他プロセスへのSendMessageの場合で
  5247.     // なおかつLPARAMに文字列を渡す場合にこの関数を使ってください。
  5248.     // Win32では他プロセスへのSendMessageにポインタを渡せないので、
  5249.     // この関数を用意しました。文字列をWZ共有メモリを使って渡します。
  5250.     // Win16ではこの関数は単にSendMessageを呼び出すだけですが、Win32上でも
  5251.     // プログラムが動作するように、上記の場合はこの関数を使ってください。
  5252.     //1.00Fで追加
  5253.     //1.01 以前はこの関数をネストして呼び出すことはできませんでしたが、
  5254.     // ネスト呼び出しできるようにしました
  5255.     //2.96A 970213 文字列を受け取る側は、
  5256.     // WNDTX_RECEIVE_MEM_ENTER,WNDTX_RECEIVE_MEM_EXIT
  5257.     // を使います。
  5258. LRESULT TXAPI wndtxSendMem(HWND hwnd,UINT uMsg,WPARAM wParam,LPVOID pMem,DWORD cbMem);
  5259.     // SendMessageと同じですが、他プロセスへのSendMessageの場合で
  5260.     // なおかつLPARAMにメモリブロックを渡す場合にこの関数を使ってください。
  5261.     // Win32では他プロセスへのSendMessageにポインタを渡せないので、
  5262.     // この関数を用意しました。メモリブロックをWZ共有メモリを使って渡します。
  5263.     // Win16ではこの関数は単にSendMessageを呼び出すだけですが、Win32上でも
  5264.     // プログラムが動作するように、上記の場合はこの関数を使ってください。
  5265.     //2.00Eで追加
  5266. void TXAPI wndtxDoCaption(void);
  5267.     // WZ Editorのキャプションを表示します
  5268.  
  5269. //{###モード切り替え}
  5270. //挿入モードやページングモード、画面分割モードなどを切り換えます。
  5271. //APIには、高速編集モードを設定したりするものがあります。
  5272.  
  5273. BOOL TXAPI txBreakOn(tx *text);
  5274.     // マクロの実行をキー入力で中止できるようにします。
  5275.     // デフォルトでは中止できません。
  5276.     // 以前の状態を返します
  5277.     // breakonする・しないのとでは、
  5278.     // マクロの実行結果が若干異なる場合があります。
  5279.     // breakonすると次の処理が追加されます。
  5280.     // ・定期的にマクロの実行を中断し、WinMainのメッセージループで
  5281.     //   メッセージを処理し、キー入力メッセージがあったらマクロの実行を中断する。
  5282.     //   メッセージがなくなったら、マクロの実行を再開する。
  5283. void TXAPI txBreakOff(tx *text);
  5284.     // マクロの実行をキー入力で中止できないようにします。
  5285. BOOL TXAPI txBreakSet(tx *text,BOOL fbreakon);
  5286.     // マクロの実行をキー入力で中止できるかどうか設定します。
  5287.     //{#RET}以前の状態を返します
  5288. void TXAPI TXCMDBASE TXMODAL txSwitchInsert(tx *text);
  5289.     // 上書き/挿入切り替え
  5290.     //{#MS} {Insert}
  5291.     //{#VZ} {Insert} ^V
  5292.     //{#MI} {Insert}
  5293.     //{#EMACS} {Insert}
  5294. void TXAPI TXCMD TXMODAL txSwitchCaret(TX* text);
  5295.     // カーソル表示/非表示切り替え
  5296.     //2.00Bで追加
  5297. void TXAPI TXCMDBASE TXMODAL txSwitchSplit(tx *text);
  5298.     // 画面分割モード切り替え
  5299.     //{#MS} 
  5300.     //{#VZ} {F4} %Y ^%Y
  5301.     //{#MI} {F4}
  5302.     //{#EMACS} {F4} %Y
  5303. void TXAPI TXCMDBASE TXMODAL txSwitchPagingMode(tx *text);
  5304.     // ページングモード切り替え
  5305.     //{#MS} 
  5306.     //{#VZ98} +{Insert} ^@
  5307.     //{#VZIBM} +{Insert} {F11}
  5308.     //{#MI} 
  5309.     //{#EMACS} {F11} +{Insert}
  5310. void TXAPI TXCMDBASE TXMODAL txSwitchViewMode(tx *text);
  5311.     // ビューモード切り替え
  5312.     // textがビューモードなら、通常モードに切り換えます。
  5313.     // そうでなければ、これ以降開くテキストを
  5314.     // ビューモードで開くかどうかを切り換えます。
  5315.     //{#VZ} ^QV
  5316. void TXAPI TXCMDBASE TXMODAL txSwitchReadOnly(tx *text);
  5317.     // リードオンリーモード切り替え
  5318.     // textがビューモードなら、通常モードに切り換えます。
  5319.     //{#VZ} ^KR
  5320. BOOL TXAPI txSetHigh(tx *text);
  5321.     // 高速モードの設定
  5322.     // テキストは表示せず、マウスカーソルを砂時計にする。
  5323.     // npara/nlineを計算しないので注意してください。
  5324.     // 高速モードでは、TXHIGHのAPIのみ使用可で、非常に高速動作します。
  5325.     // これ以外のAPIを呼んだ場合、異常動作するので、絶対に呼ばないこと。
  5326.     // 主なTXHIGHのAPIを示します。
  5327.     // txInsertBuff/txCurInsertBuff/txDeleteBytes
  5328.     // txInsert/txInsertChar/txCurInsertChar/txDeleteChar
  5329.     // txClipCopy/txClipPaste
  5330.     // txJumpAddress/txJumpParaTop
  5331.     // txPrevPara/txNextPara
  5332.     // txRightBytes/txRight
  5333.     // txLeftBytes/txLeft
  5334.     // txSearchEx
  5335.     // txSwapNext/txSwapPrev
  5336.     // txGetParaTop/txGetParaEnd/txGetLine/txGetLineRear
  5337. BOOL TXAPI txResetHigh(tx *text);
  5338.     // 高速モードを解除します。
  5339.     // カーソルをファイル先頭へ移動します。すべて計算しなおします。表示を更新します。
  5340.     //1.99D 仕様変更
  5341. BOOL TXAPI txResetHighFlag(tx *text);
  5342.     // 高速モードを解除します。
  5343.     // カーソル位置は現在のまま。cury,curysizeのみ計算します。表示の更新はしません。
  5344.     //1.99D 仕様変更
  5345.  
  5346. //{###設定}
  5347. //設定やキーカスタマイズなどを行います。
  5348. //APIにはキーカスタマイズサポートAPI、設定変更を反映するAPIなどがあります。
  5349.  
  5350. void TXAPI txFlush(tx *text);
  5351.     // 設定の反映
  5352.     // 「折り返し幅」、ウィンドウサイズなど
  5353.     // 設定データの変更を反映させる。
  5354.     // fUndisp中はtxFlushColorがされません。
  5355.     //1.99C 仕様変更:ウィンドウサイズは変えないようにしました
  5356. void TXAPI txFlushWidth(tx *text);
  5357.     // 「折り返し幅」の設定データの変更を反映させる
  5358. void TXAPI txFlushFont(tx *text);
  5359.     // フォント指定を反映
  5360. void TXAPI txFlushTitle(tx *text);
  5361.     // タイトル文字列指定を反映
  5362.     //1.00Fで追加
  5363. DWORD TXAPI txFlushEx(tx* text,DWORD mode);
  5364.     // Undisp中は一部うまく反映できない設定があるので注意してください。
  5365.     //1.90で追加
  5366.     #define TXFLUSHEX_TXFLUSHALL    1    // txFlush + ウィンドウサイズ
  5367.  
  5368. //{###ダイアログ}
  5369.  
  5370. DWORD TXAPI txofnGetSaveFileNameEx(tx *text,mchar *szfilename,mchar *szCaption,DWORD mode);
  5371.     // txofnGetSaveFileNameと同じですが、modeで詳細動作を指定できます
  5372.     // OKされたら0以外、Cancelされたら0を返します
  5373.     // CR形式が指定されたら返り値のTXOFN_RETURNCODE_CRがON、
  5374.     // LF形式が指定されたら返り値のTXOFN_RETURNCODE_LFがONになります
  5375.     // modeは次の値を組み合わせて指定します
  5376.     #define TXOFN_OK            0x00000001LU    // OKされた
  5377.     #define TXOFN_NOFILETYPE    0x00000002LU    // ファイル形式を指定しない
  5378.     #define TXOFN_NOREADONLY    0x00000004LU
  5379.     #define TXOFN_NOFILER        0x00000008LU
  5380.     #define TXOFN_REFER            0x00000010LU    // 参照
  5381.     #define TXOFN_FOCUSFILE        0x00000020LU    //2.97A 970227 ファイルの選択がすぐできるようにする
  5382.     #define TXOFN_READONLY        0x00000800LU    // readonlyが指定された
  5383.     #define TXOFN_VIEWMODE        0x00001000LU    // viewmodeが指定された
  5384.     #define TXOFN_NEWFILE        0x00002000LU    //1.00F newfileが指定された
  5385.     #define TXOFN_RETURNCODE_CR    0x00004000LU    //1.97 
  5386.     #define TXOFN_RETURNCODE_LF    0x00008000LU    //1.97 
  5387.     #define TXOFN_KC_JIS        0x00010000LU    //1.97 
  5388.     #define TXOFN_KC_UNICODE    0x00020000LU    //1.97 
  5389.     #define TXOFN_KC_EUC        0x00040000LU    //1.97 
  5390.     #define TXOFN_WZTEXT_ARC    0x00080000LU    //1.97 WZ圧縮文書ファイル?
  5391.     #define TXOFN_TEXT_PLAIN    0x00100000LU    //2.99 970316 プレーンテキストファイル?
  5392.     #define TXOFN_TEXT_FORM        0x00200000LU    //2.99 970316 整形テキストファイル?
  5393.     #define TXOFN_TEXT_WZ        0x00400000LU    //2.99 970316 装飾・体裁付きテキストファイル?
  5394.     #define TXOFN_HTML_TEXT        0x00800000LU    //2.99 970316 HTML文書ファイル?
  5395. DWORD TXAPI txofnGetOpenFileNameEx(tx *text,mchar *szfilename,mchar *szCaption,DWORD mode);
  5396.     // txofnGetOpenFileNameと同じですが、modeで詳細動作を指定できます
  5397.     // OKされたら0以外、Cancelされたら0を返します
  5398.     // modeは次の値を組み合わせて指定します
  5399.     //    TXOFN_NOREADONLY    上書き禁止ボタンを付けない
  5400.     //    TXOFN_NOFILER        ファイラーボタンを付けない
  5401.     //    TXOFN_FOCUSFILE        ファイルの選択がすぐできるようにする
  5402. DWORD TXAPI txccGetColor(tx *text,COLORREF *rgbResult,LPTSTR sztitle);
  5403.     // 色指定コモンダイアログ
  5404.     // OKされたら0以外、Cancelされたら0を返します
  5405.     //1.00F sztitleにはダイログボックスのタイトルを指定してください
  5406.     // NULLを指定すると、デフォルトのタイトルを表示します
  5407.  
  5408. //{###ダイアログ作成(低レベル)}
  5409.  
  5410. BOOL TXAPI modelessdialogFreeEx(HWND hwnd,BOOL fDestoryHwnd);
  5411.     // モードレスダイアログhwndを管理リストから外す。
  5412.     // hwndをDestroyWindowするかどうか選択可
  5413.     //2.99D 970330 new
  5414. BOOL TXAPI modelessdialogAdd(HWND hwnd,DWORD proc,BOOL fMacro);
  5415.     // モードレスダイアログhwndを管理リストに追加
  5416.  
  5417. //2.99D 970330
  5418. #define modelessdialogFree(hwnd)    modelessdialogFreeEx(hwnd,TRUE)
  5419.  
  5420. //{###メニュー操作}
  5421.  
  5422. BOOL TXAPI menuTx(HMENU hmenu,mchar *szmenuitem,mchar *sztxfunc);
  5423.     // hmenuのメニューにTXAPIを呼び出す項目を追加する
  5424.     // szmenuitem:項目名
  5425.     // sztxfunc:TXAPI名(引数が<tx *text>のAPIのみ)またはマクロ名
  5426.     // 例:menuTx(hmenu,"オープン(&O)...","txuiOpen");
  5427.     // 例:menuTx(hmenu,"ランチャー","launcher.root");
  5428.  
  5429. //{###ワープロ機能}
  5430. //段落書式や文字装飾、印刷機能。
  5431. //[HTML不可]と表示されているコマンドはHTMLファイル編集では使えません。
  5432.  
  5433. //{###フィルタ・イベント}
  5434. //各種フィルタやイベントマクロコマンド。
  5435.  
  5436. //{###定形句・メモ}
  5437. //テンプレート機能、メモ機能などを提供します。
  5438.  
  5439. //{###ファイル名・パス名}
  5440. void TXAPI pathFullConfig(mchar szdst[CCHPATHNAME],mchar* szfilename);
  5441.     // szfilename("WZ:\"相対)の絶対パスをszdstにセット
  5442.     // これを使ってユーザ別設定に対応できます
  5443.     //2.00Eで追加
  5444.  
  5445. //{###コマンド}
  5446.  
  5447. void TXCMDBASE txNull(tx *text);
  5448.     // 何もしません
  5449.     //1.00Cで追加
  5450. void TXAPI TXCMDBASE txkeyRepeat(tx *text);
  5451.     // 前回キーで実行したコマンドを再実行
  5452.     //2.99 970320 {#MS}で%{Enter}の割り当てをやめた
  5453. /*1.01A vz.keyで^OにtxkeyRepeatを割り当てていたのをやめ、^Oは空けた
  5454. /*1.00D ms.keyで{F4}に、txkeyRepeatと検索コマンドが重複して割り当てられていたのでtxkeyRepeatの割り当てを解除した*/
  5455. /*2.99 ms.keyの^Y割り当てを削除*/
  5456.  
  5457. //{###ファイル}
  5458.  
  5459. void TXAPI alltextToHist(void);
  5460.     // オープンされているすべてのテキストのファイル名を、
  5461.     // HIST_NULLにセット
  5462. BOOL TXAPI txAddFileHist(tx *text,mchar *szPath);
  5463.     // ファイル名ヒストリにszPathを追加
  5464.  
  5465. //{###描画}
  5466.  
  5467. void TXAPI hdcDrawFrame(HDC hdc,RECT *r,UINT mode);
  5468.     // hdcのrに3次元で枠を描きます
  5469.     // modefButtonが真なら、ふくらんだボタン、偽ならへこんだボタンの枠を描きます
  5470.     //   DF_BUTTON            ふくらんだボタン
  5471.     //   DF_PUSHEDBUTTON    へこんだボタン
  5472.     //   DF_INFO            ステータスバー内の枠
  5473.     //   DF_INFOWHITE        ステータスバー内の枠(中身白)
  5474.     //   DF_BORDER            境界線で枠
  5475.     //   DF_ROUNDBORDER        境界線で角が丸い枠
  5476.     //   DF_BUTTONSHADOW    ボタンの影
  5477.     //   DF_BUTTONFACE        ボタンベース色
  5478.     #define DF_PUSHEDBUTTON        0
  5479.     #define DF_BUTTON            1
  5480.     #define DF_BORDER            2
  5481.     #define DF_INFO                3
  5482.     #define DF_ROUNDBORDER        4
  5483.     #define DF_BUTTONSHADOW        5
  5484.     #define DF_BUTTONFACE        6
  5485.     #define DF_INFOWHITE        7
  5486.  
  5487. //{###フラッシュ}
  5488.  
  5489. void TXAPIBASE txFlushCurSelect(tx *text);
  5490.     // カーソルを範囲選択の終点位置にセットする
  5491.     // 論理行単位選択中なら、論理行先頭へ
  5492.     // 表示行単位選択中なら、表示行先頭へ
  5493. void TXAPI txFlushCury(tx *text);
  5494.     // text->cur0から、text->cury,text->curysizeを計算し、セットする
  5495. void TXAPI txFlushCurysize(tx* text);
  5496.     // カレント表示行のサイズを計算してtext->curysizeをセットする
  5497.     //1.93で追加
  5498. void TXAPI txFlushLx(tx *text);
  5499.     // text->cur,text->cur0,text->curyからtext->lxを計算し、セットする
  5500. void TXAPI tyFlush(tx* text);
  5501.     // editmode == 2のときに、lcywindowをフラッシュ
  5502.     //1.90 
  5503.  
  5504. //{###編集}
  5505.  
  5506. BOOL TXAPI txSort(tx *text,SORTARG *arg);
  5507.     // SORTARGでソートする。
  5508.  
  5509. //{###カーソル移動}
  5510.  
  5511. BOOL TXAPI txDownBuff(tx *text);
  5512.     // lx,cur,cur0,cury,curysize,lineを次表示行の先頭にセットする
  5513.     // 次行がない場合は0を返す
  5514.     //1.00H で追加
  5515. BOOL TXAPI txUpBuff(tx *text);
  5516.     // lx,cur,cur0,cury,curysize,lineを前表示行の先頭にセットする
  5517.     // 前行がない場合は0を返す
  5518.     //1.00H で追加
  5519.  
  5520. //{###印刷}
  5521.  
  5522. DWORD TXAPI txLpOp(TX* text,int op);
  5523.     //1.90 text->lpについて操作を行う
  5524.     #define TXLPOP_PRINT            1    // 印刷実行
  5525.     #define TXLPOP_CALC_NPAGEALL    2    // 全ページ数計算
  5526.     #define TXLPOP_GET_DEVMODE        4    // デバイスからDEVMODEをロードして、
  5527.                                         // lp->hDevModeにセット
  5528.     #define TXLPOP_SET_DEVMODE        5    // lp->hDevModeの内容をデバイスにセットする
  5529.     #define TXLPOP_FLUSH            6    // TXLPOP_FLUSHDEVMODE + txFlush
  5530.                                         // 用紙サイズの折り返しをテキストに反映
  5531.     #define TXLPOP_FLUSHDEVMODE        7    // lpで指定された用紙サイズ等の内容を
  5532.                                         // lp->hDevModeにセットし、プリンタにもセットする
  5533.     #define TXLPOP_PRINTENTER        8    // 印刷モードに入る(複数回呼び出すと蓄積される)
  5534.     #define TXLPOP_PRINTEXIT        9    // 印刷モードを終る
  5535.     #define TXLPOP_GETDC            10    // プリンタHDCを得る
  5536.                                         // HDCが不要になったらTXLPOP_RELEASEDCすること
  5537.     #define TXLPOP_GETIC            11    // プリンタ情報コンテキストHDCを得る
  5538.                                         // HDCが不要になったらTXLPOP_RELEASEICすること
  5539.     #define TXLPOP_RELEASEDC        12    //2.00B TXLPOP_GETDCで得たhdcを開放
  5540.     #define TXLPOP_RELEASEIC        13    //2.00B TXLPOP_GETICで得たhdcを開放
  5541.     #define TXLPOP_PROMPT            14    //2.00E2 プリンタの設定ダイアログを表示
  5542.     #define TXLPOP_CALC                15    //2.96 970203 マージン/行数計算実行
  5543.     #define TXLPOP_PREVIEWENTER        16    //2.96 970207 プレビューモードに入る
  5544.     #define TXLPOP_PREVIEWEXIT        17    //2.96 970207 プレビューモードを抜ける
  5545.     #define TXLPOP_FLUSHPVRATE        18    //2.96A 970214 最適なpvRateを計算
  5546.     #define TXLPOP_FLUSHSTYLE        19    //2.96A 970214 スタイルの変更による、lpx,lpcxClientのフラッシュ
  5547. DWORD TXAPI lpCap(LPRINT* lp,WORD fwCapability,LPSTR lpszOutput);
  5548.     //1.91A 
  5549.  
  5550. //{###設定}
  5551.  
  5552. DWORD TXAPI txConfigOp(tx* text,int op,LPVOID arg);
  5553.     // 設定の読み書き
  5554.     // 詳しくは_text.hのtxConfigOpを検索して見てください。
  5555.     //1.92 NEW
  5556.     ///2.96 970206 番号付け替え
  5557.     /// ALL,SHARE
  5558.     #define TXCONFIGOP_CONFIGSAVE    1    // sh->config,configBase,configExt,configFileを登録する
  5559.     #define TXCONFIGOP_CONFIGDELALL    2    // 上記の設定を初期化する
  5560.     #define TXCONFIGOP_CONFIGSAVE2    3    // sh->config,configBase,configExtを登録する
  5561.     #define TXCONFIGOP_SHARESAVE    4    // sh->configを登録する
  5562.     #define TXCONFIGOP_SHARESAVE_NET 5    //2.00E2 fNetShareXXXのみ登録
  5563.     #define TXCONFIGOP_SHARESAVE_PART 6    //2.95 970128 
  5564.                                         // sh->configのうち、
  5565.                                         // offsetからsizeバイトのみを登録する
  5566.                                         // offsetはsh->config基準
  5567.                                         // arg = MAKELONG(WORD offset,WORD size)
  5568.     #define TXCONFIGOP_TXINITCONFIG    7    //2.99B 970322 txInitConfig(text)
  5569.     // EXT/FILE
  5570.     #define TXCONFIGOP_EXTGETNAME    100    // textの設定の名前を取得する
  5571.                                         // 設定がなければ"標準"を返す
  5572.                                         //2.00E2 argに名前を取得する文字列バッファ
  5573.                                         // mchar szcfgname[CCHNAME]を指定
  5574.     #define TXCONFIGOP_EXTGETNAMEPRIM 101// textの設定の名前を取得する
  5575.                                         // 設定がなくてもそのまま返す
  5576.                                         //2.00E2 argに名前を取得する文字列バッファ
  5577.                                         // mchar szcfgname[CCHNAME]を指定
  5578.     #define TXCONFIGOP_EXTENUM        102    // COMBOBOXに設定の一覧を取得する
  5579.     #define TXCONFIGOP_EXTENUMLB    103    // LISTBOXに設定の一覧を取得する
  5580.     #define TXCONFIGOP_EXTLOAD        104    // text->configExt,configFileを読み出す
  5581.     #define TXCONFIGOP_EXTSETUPDISPSTYLE 105// text->width=text->twidth[text->dispmodestyle]; etc
  5582.     #define TXCONFIGOP_EXTSETDISPSTYLE 106// text->twidth[text->dispmodestyle]=text->width; etc
  5583.     #define TXCONFIGOP_EXTSAVE        107    // text->configExt,configFileを登録する
  5584.                                         // textの設定がない場合は"標準"に登録
  5585.     #define TXCONFIGOP_EXTSAVEPRIM    108    // text->configExt,configFileを名前を付けて登録する
  5586.     #define TXCONFIGOP_EXTSETALL    109    // 全ての設定をtextと同じにする
  5587.     #define TXCONFIGOP_EXTDEL        110    // textの設定を削除する
  5588.     #define TXCONFIGOP_EXTDELALL    111    // 全ての設定を初期化する
  5589.     #define TXCONFIGOP_EXTNAME_SAVE        112
  5590.                                         // argに指定した名前で登録
  5591.     #define TXCONFIGOP_EXTNAME_SEARCH    113
  5592.                                         // argに指定した名前の設定があるか?
  5593.     #define TXCONFIGOP_EXTSAVE_LPSTYLE    114//2.00E text->szlpstyleのみ登録する
  5594.     #define TXCONFIGOP_EXTNAME_DEL        115    // argの設定を削除する
  5595.     #define TXCONFIGOP_EXTGRP_ADD    116    //2.00E2 textの拡張子をargのグループに追加
  5596.     #define TXCONFIGOP_EXTGRP_DEL    117    //2.00E2 argのグループを削除
  5597.     #define TXCONFIGOP_EXTNAME_LOAD    118    //2.00E4 
  5598.                                         // argに指定した名前の設定をロード
  5599.     #define TXCONFIGOP_EXTSAVE_PART 119    //2.95 970128
  5600.                                         // text->configFile,configExt,configBase
  5601.                                         // のうち、offsetからsizeバイトのみ登録する
  5602.                                         // offsetはtext->configTop基準
  5603.                                         // arg = MAKELONG(WORD offset,WORD size)
  5604.                                         // configBaseをまたがった登録はできない
  5605.     #define TXCONFIGOP_EXTSAVE_FONTSTYLE 120//2.96 970206 text->tFontstyleのみ登録する
  5606.     #define TXCONFIGOP_SETMYCOLORDEFAULT 121//2.99C 970326 text->fMyColorを共通の設定にする
  5607.     #define TXCONFIGOP_EXTGETEXIST    122    //3.00A4 970509 argに指定した設定があるかどうか返す
  5608.     // LPRINT
  5609.     #define TXCONFIGOP_PRINTGETCOUNT 200    // 印刷スタイル数を返す
  5610.     #define TXCONFIGOP_PRINTENUM    201    // COMBOBOXに印刷スタイルの一覧を取得する
  5611.     #define TXCONFIGOP_PRINTREAD    202    // text->lpにargの印刷スタイルを読込む
  5612.     #define TXCONFIGOP_PRINTWRITE    203    // argの印刷スタイルをtext->lpとして登録
  5613.     #define TXCONFIGOP_PRINTSEARCH    204    // 未実装
  5614.     #define TXCONFIGOP_PRINTDEL        205    //2.00B argの印刷スタイルを削除する
  5615.     #define TXCONFIGOP_PRINTDELALL    206    //2.00B 印刷スタイルを初期化する
  5616.     #define TXCONFIGOP_PRINTEXIST    207    //2.00E2 argの印刷スタイルが存在するかどうか返す
  5617.     #define TXCONFIGOP_PRINTENUMLB    208    //2.96 970210 LISTBOXに印刷スタイルの一覧を取得する
  5618.     // TX-TEXTCONFIG
  5619.     #define TXCONFIGOP_TEXTISEXIST    300    // <TX-TEXTCONFIG>があるか調べて返す
  5620.     #define TXCONFIGOP_TEXTDEL        301    // 削除する
  5621.     #define TXCONFIGOP_TEXTREAD        302    // text構造体に反映する
  5622.     #define TXCONFIGOP_TEXTWRITE    303    // text構造体の設定を<TX-TEXTCONFIG>に反映する
  5623.  
  5624. //{###クリップボード、テキストスタック}
  5625.  
  5626. DWORD TXAPI txClipOp(TX* text,int op,HCLIP hclip,DWORD arg);
  5627.     //1.99C 
  5628.     #define TXCLIPOP_GETCOUNT        1    // hclip内のデータ数を返す
  5629.     #define TXCLIPOP_GETSIZE        2    //2.92 
  5630.                                         // hclipのスタックトップのデータのバイト数を返す
  5631.                                         // argにistackを指定できる
  5632.  
  5633. //{#ENDAPI}
  5634.  
  5635. //##設定の部分保存
  5636. //2.95 970128
  5637.  
  5638. #define txcfgSavePart(text,var)    \
  5639.     txConfigOp(text,TXCONFIGOP_EXTSAVE_PART,MAKELONG((LPBYTE)&text->var - &text->configTop,sizeof(text->var)))
  5640. // varにはtext構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
  5641. #define txcfgSavePartArray(text,var)    \
  5642.     txConfigOp(text,TXCONFIGOP_EXTSAVE_PART,MAKELONG((LPBYTE)text->var - &text->configTop,sizeof(text->var)))
  5643. // 配列メンバ保存用
  5644. // varにはtext構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
  5645.  
  5646. #define shcfgSavePart(var)    \
  5647.     txConfigOp(textf,TXCONFIGOP_SHARESAVE_PART,MAKELONG((LPBYTE)&textf->share->config.var - (LPBYTE)&textf->share->config,sizeof(textf->share->config.var)))
  5648. // varにはsh->config構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
  5649. #define shcfgSavePartArray(var)    \
  5650.     txConfigOp(textf,TXCONFIGOP_SHARESAVE_PART,MAKELONG((LPBYTE)textf->share->config.var - (LPBYTE)&textf->share->config,sizeof(textf->share->config.var)))
  5651. // 配列メンバ保存用
  5652. // varにはsh->config構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
  5653.  
  5654. //##menu
  5655.  
  5656. #define TXMENUITEM_N    30
  5657. typedef struct {
  5658.     mchar szcmd[CCHWORD];        // コマンド名
  5659.                                 // "__sepa"などの場合もある
  5660.     mchar szcaption[CCHWORD];    // 表示
  5661. } TXMENUITEM;
  5662.  
  5663. typedef struct {
  5664.     mchar szname[CCHWORD];        // メニューの名前
  5665.     TXMENUITEM tmenuitem[TXMENUITEM_N];
  5666.     int nmenuitem;
  5667.     BYTE fNew:1;                // 新規? for custmize
  5668. } TXMENU;
  5669.  
  5670. DWORD TXAPI txmenuOp(int op,mchar* szname,HMENU hmenu);
  5671. //2.00E2 xxOP_NEW,xxOP_DELETE廃止
  5672. #define TXMENUOP_OPEN        1    // メニュー設定ファイルをオープン
  5673.                                 // オープン中はTXMENUOP_CLOSE以外のopは実行できない
  5674. #define TXMENUOP_CLOSE        2    // メニュー設定ファイルをクローズ
  5675. #define TXMENUOP_LOAD        3    // hmenuにsznameのメニューをロードする
  5676. #define TXMENUOP_SAVE        4    // hmenuのメニューをsznameの名前を付けて登録する
  5677. #define TXMENUOP_DEL        5    // sznameのメニューを削除する
  5678. #define TXMENUOP_SEARCH        6    // sznameのメニューがあるか返す
  5679. #define TXMENUOP_LOADEX        7    // szname : TXMENU* txmenu
  5680.                                 // txmenu->sznameをtxmenuにロードする
  5681. #define TXMENUOP_SAVEEX        8    // szname : TXMENU* txmenu
  5682.                                 // txmenuをtxmenu->sznameとしてセーブする
  5683. #define TXKEYOP_OPEN        100    // キー設定ファイルをオープン
  5684.                                 // オープン中はTXKEYOP_CLOSE以外のopは実行できない
  5685. #define TXKEYOP_CLOSE        101    // キー設定ファイルをクローズ
  5686. #define TXKEYOP_DEL            102    // sznameのキー定義を削除する
  5687. #define TXTOOLBAROP_OPEN    201    // ツールバー設定ファイルをオープン
  5688.                                 // オープン中はTXTOOLBAROP_CLOSE以外のopは実行できない
  5689. #define TXTOOLBAROP_CLOSE    202    // ツールバー設定ファイルをクローズ
  5690. #define TXTOOLBAROP_DEL        203    // sznameのツールバーを削除する
  5691.  
  5692. DWORD TXAPI txOp(TX* text,int op,LPARAM wParam,LPARAM lParam);
  5693. //2.90 その他、オペレーション
  5694. //                                wParam    lParam    function
  5695. #define TXOP_EHSTART        10    //    void    void    //2.90 eh start
  5696. #define TXOP_EHEND            11    //    void    void    //2.90 eh end
  5697. #define TXOP_LYTOY            20    //    ly        void    //2.90 lyのy座標を返す
  5698. #define TXOP_LYGETCY        21    //    ly        void    //2.90 lyの行高を返す
  5699. #define TXOP_UNDOCLEAR        22    //    void    void    //2.90 undoClear(text)
  5700. #define TXOP_IMESTRINSERT    23    //    void    szstr    //2.90 imeStrInsert(text,szstr)
  5701. #define TXOP_SHORTCUTRESOLVE 30    //    szshort    szfull    //2.90 
  5702. #define TXOP_SHORTCUTGETARG    31    //    szshort    szarg    //2.90 
  5703. #define TXOP_ISOPEN            32    //    szfilename void    //2.92 
  5704. #define TXOP_WZEXEC            33    //    szfilename szarg//2.92 
  5705. #define TXOP_TXJUMPURL        34    //    void    void    //2.92 
  5706. #define TXOP_TXCLOSESUB        35    //    void    void    //2.93 
  5707. #define TXOP_TXMULTI        36    //    void    void    //2.94 970123 
  5708. #define TXOP_TXFROMHWNDBASE    37    //    hwnd    void    //2.96 970205 text=NULLで良い
  5709. #define TXOP_PRINT            38    //    str        void    //2.96 970209 
  5710. #define TXOP_PRINTF            39    //    format    arg        //2.96 970209 
  5711. #define TXOP_TABLEFLUSHALL    40    //    fForce    void    //2.96 970210 
  5712. #define TXOP_TAGFROMSTR        41    //    pTag    void    //2.97 970221 text=NULL
  5713. #define TXOP_WRITERETURNEX    42    //    mode    void    //2.97 970224 mode=1:BR
  5714. #define TXOP_PLUGTAB_CURPARA 43    //    void    void    //2.97 970224 カーソル位置に一番近いPLUGTABを返す
  5715.                                                     // カーソル論理行にPLUGTABがなければNULLを返す
  5716. #define TXOP_PLUGTAB_RIGHT    44    //    void    void    //2.97 970224 
  5717.                                                     // カーソル位置から次のPLUGTABを検索。
  5718.                                                     // 現在論理行内だけで検索
  5719.                                                     // 見つけたかどうか返す。
  5720. #define TXOP_PLUGTAB_FLUSHCUR 45//    void    void    // カーソル行のPLUGTABをflush
  5721. #define TXOP_FLUSH_NPARALETTERHEADER 46 // void void//2.97A 970227 レターヘッダの行数を数え直す
  5722. #define TXOP_TAGTOSTR        47    //    tag        void    //2.97A 970301 
  5723. #define TXOP_GETADDRESSCURSCREEN 48//void    void    //2.97A 970302 
  5724. #define TXOP_SETLYCURSCREEN    49    //    adr        void    //2.97A 970302 
  5725. #define TXOP_INITSCROLLBAR    50    //    void    void    //2.98 970308 
  5726. #define TXOP_PATHGETEXTGROUP 51    //    szext    szGroup[CCHWORD]    //2.99 970318 
  5727. #define TXOP_TXFORMCHAR        52    //    str        offset    //2.99C 970325 
  5728. #define TXOP_TXISCHARTOP    53    //    offset    void    //2.99C 970325 
  5729. #define TXOP_TXLOADATR2        54    //    arg        void    //2.99D 970329 
  5730.     typedef struct {
  5731.         HFILE hf;
  5732.         TX* txatr;
  5733.         UINT cbMem;
  5734.         BOOL fArc;
  5735.     } TXLOADATR2ARG;
  5736. #define TXOP_WORDINIT        55    //    void    void    //2.99D 970329 
  5737. #define TXOP_TXSWAP1        56    //    void    void    //2.99D 970329 
  5738. #define TXOP_TXSWAP2        57    //    void    void    //2.99D 970329 
  5739. #define TXOP_MTSETCONTEXT    58    //    i        void    //2.99D 970401 
  5740. #define TXOP_MTREADCONTEXT    59    //    i        void    //2.99D 970401 
  5741. #define TXOP_SBDISPEDITMODE    60    //    void    void    //3.00A 970430 
  5742. #define TXOP_GETPARAFRONTEX    61    //    buff    sizebuff//3.00A2 970505 
  5743. #define TXOP_GETPARAREAREX    62    //    buff    sizebuff//3.00A2 970505 
  5744. #define TXOP_GETCHARTYPE    63    //    p        void    //3.00B1 970522 
  5745.     #define CT_SPACE    2    // (0x00-0x20),全角スペース(0x8140)
  5746.     #define CT_SYMBOL    3    // '$','_'を除く英記号
  5747.                             // 全角記号(0x8152-0x815Bを除く)
  5748.     #define CT_KATA        4    // 半角カタカナ
  5749.     #define CT_HIRA        5    // 全角ひらがな
  5750.     #define CT_KANJI    6    // 上記以外の全角文字
  5751.     #define CT_CHAR        7    // 上記以外の半角文字
  5752.     #define CT_LF        8
  5753.     #define CT_EOF        9
  5754. //2.94 970117 OLE
  5755. #define TXOP_OBJECTINSERT    100    //    void    void    // オブジェクトの挿入
  5756. #define TXOP_OBJECTDELETE    101    // PLUGOLE* void    // オブジェクトの削除(未完成)
  5757. #define TXOP_OBJECTCOPY        102    // PLUGOLE* void    // オブジェクトのコピー
  5758. #define TXOP_OBJECTPASTE    103    //    void    void    // オブジェクトのペースト
  5759. //2.95 970129 text local var
  5760. #define TXOP_VARSET            200    //    szName    data    // データのセット
  5761. #define TXOP_VARGET            201    //    szName    void    // データのゲット
  5762. #define TXOP_VARISEXIST        202    //    szName    void    // データがあるかどうか
  5763. //3.00B TXOP_VARSETNOGARBAGE 203//    szName    fNoGarbage 廃止
  5764. //2.96A 970214 txmenuOpからこちらへ移動
  5765. #define TXOP_KEYLOADNAME    300    //    szName    void    // textのキー定義をsznameからロードしてセット
  5766.                                                     //2.96A 970214 旧TXKEYOP_LOAD
  5767. #define TXOP_TOOLBARLOADNAME 301//    szName    void    // textのツールバー定義をsznameからロードしてセット
  5768.                                                     //2.96A 970214 旧TXTOOLBAROP_LOAD
  5769. //2.97 970219 plugatr
  5770. #define TXOP_PLUG_NEWEX        400    // modePlug cbEx
  5771. #define TXOP_PLUG_NEW        401    // modePlug void
  5772. #define TXOP_PLUG_DELETE    402    //    typ
  5773. #define TXOP_PLUG_GETTYP    403    //    plugatr
  5774. #define TXOP_PLUG_READ        404    //    typ
  5775. #define TXOP_PLUG_GETMODEPLUG 405//    typ
  5776. #define TXOP_PLUG_GETSIZE    406    //    plugatr
  5777.  
  5778. //2.90 TX->macro オペレーション
  5779. //                                       arg1        arg2    function
  5780. #define MACROOP_OPENURL            1    // szUrl    void    //
  5781. #define MACROOP_OPENMAIL        2    // szMail    void    //
  5782. #define MACROOP_TXSEARCHLISTEX    3    // szFind    arg        //
  5783.     typedef struct {
  5784.         SEARCHMODE searchmode;
  5785.         mchar* szReplace;
  5786.         int cchReplace;
  5787.     } TXSEARCHLISTARG;
  5788.  
  5789. //3.00A2 970505 MACROOP_REPLACEREPORT,REPLACEREPORTARG廃止
  5790.  
  5791. //##_share.h
  5792.  
  5793. #define MAXPROFILE    20
  5794. typedef struct __BINCOMPATIBLE__ {
  5795.     BYTE lchFileName;                // パス名の長さ
  5796.     mchar szfilename[CCHPATHNAME];    // パス名
  5797.     // window pos
  5798.     SIGNED_WORD window_left;
  5799.     SIGNED_WORD window_top;
  5800.     SIGNED_WORD window_right;
  5801.     SIGNED_WORD window_bottom;
  5802.     // current position
  5803.     NPARA npara;                    // 行番号
  5804.     WORD ich;                        // 段落先頭からのバイト数
  5805.     BYTE ly;                        // カーソルy座標
  5806.     IFILE address;                    // カーソル位置
  5807.     //
  5808.     WORD editmode:2;                // editmode
  5809.     WORD dispstylemode:2;            // 表示スタイル
  5810.     WORD fOutline:1;                // アウトラインウィンドウ
  5811.     WORD freserved:11;
  5812. #if 1//3.00A3 970508 
  5813.     mchar tszlpstyle[DISPSTYLEMODE_N][CCHLPSTYLE];    // 印刷スタイル名
  5814.     IFILE mark[MAXMARK];            // マーク位置
  5815.     mchar reserved[80];
  5816. #else
  5817.     mchar szlpstyle[CCHLPSTYLE];    // 印刷スタイル名
  5818.     // mark
  5819.     IFILE mark[MAXMARK];            // マーク位置
  5820.     mchar tszmark[MAXMARK][CCHMARK];// マーク文字列
  5821. #endif
  5822. } PROFILE;
  5823.  
  5824. // ヒストリハンドル
  5825. typedef HANDLETX HHIST;
  5826. #define DEFAULT_SIZEHIST    512    // デフォルト ヒストリサイズ
  5827. #define HIST_NULL        0            // 内部ワーク用
  5828. #define HIST_FILE        ((HHIST)1)    // ファイル名
  5829. #define HIST_SEARCH        ((HHIST)2)    // 検索文字列
  5830. #define HIST_DIALOGSTR    ((HHIST)3)    // テキストボックスで入力された文字列(旧置換リスト)
  5831. #define HIST_STR        ((HHIST)4)    // 文字列
  5832. #define HIST_NUM        ((HHIST)5)    // 数値
  5833. #define HIST_PATH        ((HHIST)6)    // パス文字列
  5834. // 以下、user用
  5835. #define HIST_USER        ((HHIST)7)
  5836. #define HIST_USER2        ((HHIST)8)
  5837. // ハンドルの個数
  5838. #define MAXHIST        9
  5839.  
  5840. //1.00Fで追加...オープンされているクリップボード構造体
  5841. #if 1//2.00E 
  5842. typedef struct {
  5843.     BYTE HUGE *hpClip;                // TS/クリップボードのメモリブロックのアクセスアドレス
  5844.     BYTE HUGE *hptopClip;            // スタックトップの先頭アドレス
  5845.     DWORD cbClip;                    // スタックトップのデータサイズ
  5846.     DWORD curClip;                    // clipReadParaのアクセス中のオフセット
  5847.     int nClipKind;                    // 範囲選択モード(CLIP_CHAR etc)
  5848.     HGLOBAL hmemClip;                // クリップボードに出力するデータハンドル
  5849.     WORD fOpen:1;                    // オープン中?
  5850.     WORD fClipWrite:1;                // 書き込みでオープン中?
  5851.     WORD fClipWz:1;                    // クリップボードをReadモードでオープンした場合、
  5852.                                     // WZがペーストしたものかどうかがセットされる。
  5853.     WORD freserved:13;                // 予約済み
  5854. } OPENCLIP;
  5855. #else
  5856. typedef struct {
  5857.     BOOL fOpen;                        // オープン中?
  5858.     HGLOBAL hmemClip;                // クリップボードに出力するデータハンドル
  5859.     BYTE H]GE *hpClip;                // TS/クリップボードのメモリブロックのアクセスアドレス
  5860.     BYTE HUGE *hptopClip;            // スタックトップの先頭アドレス
  5861.     DWORD cbClip;                    // スタックトップのデータサイズ
  5862.     DWORD curClip;                    // clipReadParaのアクセス中のオフセット
  5863.     int nClipKind;                    // 範囲選択モード(CLIP_CHAR etc)
  5864.     int fClipWrite;                    // 書き込みでオープン中?
  5865.     BOOL fClipWz;                    // クリップボードをReadモードでオープンした場合、
  5866.                                     // WZがペーストしたものかどうかがセットされる。
  5867. } OPENCLIP;
  5868. #endif
  5869.  
  5870. //2.00Eで佃加
  5871. typedef struct {
  5872.     #ifndef __FLAT__
  5873.     HGLOBAL hmemClip;                // TSメモリハンドル
  5874.     #endif
  5875.     DWORD cbStackTop;                // TS内有効データバイト数
  5876.     DWORD cbClip;                    // TSメモリハンドルのメモリブロックバイト数
  5877.     DWORD cbClipMax;                // TS最大バイト数
  5878.                                     // WZ16では、65535を越えないこと
  5879.                                     // このサイズを越えるブロック(大ブロック)を
  5880.                                     // クリップすることもできるが、
  5881.                                     // それ以前の内容は全て捨てる。
  5882.                                     // 大ブロックの後に新しくクリップを追加すると、
  5883.                                     // 大ブロックは捨てられる
  5884. } TSCONTEXT;
  5885.  
  5886. #define CCHENVPATH    (145*2)    // 145:WZ16のCCHPATHNAME
  5887.  
  5888. #define DIRECTORYATR_N    3
  5889. typedef struct {
  5890.     mchar szDirectory[CCHENVPATH];    // パス列
  5891.     BYTE kc;    // 漢字コード
  5892.     BYTE cr;    // 改行コード
  5893. } DIRECTORYATR;
  5894.  
  5895. //1.91A 設定(share)
  5896. // 設定内容はバイナリファイルで保存する。
  5897. typedef struct __BINCOMPATIBLE__ {
  5898.     DWORD sizestruct;
  5899. // file
  5900.     BBOOL fenvcheckfiletime;        //1.01A Save時にfiletimeをチェック
  5901.     BBOOL fCheckFiletimeActive;        //1.95 アクティブ時にfiletimeをチェック
  5902.     BYTE modeenvfileshare;            //1.01A 排他制御モード
  5903.         #define FILESHARE_DENY_WRITE    1    // 書き込み禁止
  5904.         #define FILESHARE_EXCLUSIVE        2    // 読み書き禁止
  5905.     BBOOL fenvstayalways;            //1.00H4 常駐?
  5906.     BBOOL fenvpathsearch;            //1.00H4 パス検索を行う?
  5907.     BBOOL fNoOpenHigh;                //2.93 高速オープンしない?
  5908.     BBOOL fSaveHistory;                // ヒストリをファイルに保存?
  5909.     BBOOL fSaveProfile;                // プロファイルをファイルに保存?
  5910. // ヒストリバッファのサイズ
  5911.     WORD sizeHistSearch;            // 検索文字列履歴
  5912.     WORD sizeHistFile;                // オープンファイル名履歴
  5913.     WORD sizeHistStr;                // 文字列履歴
  5914.     WORD sizeHistNum;                // 数値入力履歴
  5915. // file
  5916.     BBOOL fFilePreview;                //2.99D 970402 ファイルプレビューを行う?
  5917.     //
  5918.     BBOOL fKcAuto;                    //1.97 漢字コードを自動判別する?
  5919.     BBOOL fConfirmHtmlChange;        //1.99E HTMLファイルのタグの書き換えを確認する?
  5920.     BBOOL fHtmlSaveJisLf;            //2.00E4 HTMLファイルはJIS,LFでセーブ?
  5921.     BYTE modeHtml;                    //2.97A 970302 
  5922.         #define HTML_STD    0    // 標準
  5923.         #define HTML_IE        1    // IE拡張タグも使用
  5924.         #define HTML_NN        2    // NN拡張タグも使用
  5925.         #define HTML_IENN    3    //2.99C 970326 IE拡張,NN拡張タグも使用
  5926.     BBOOL modeHtmlOutTable;            //2.99 970319 
  5927.                                     // 0:<TR><TD>...<TD>...形式
  5928.                                     // 1:インデント形式
  5929.     BYTE modeHtmlFilenameCase;        //2.99C 970323 HTMLで図やリンク先ファイル名の大文字小文字を制御できるようにした
  5930.         #define FNC_NONE    0        // そのまま
  5931.         #define FNC_TOLOWER    1        // 小文字へ
  5932.         #define FNC_TOUPPER    2        // 大文字へ
  5933.     BBOOL fHtmlConvertReturnToSpace;//3.00A3 970508 HTMLテキスト->体裁で改行を空白に変換するか指定できるようにした
  5934.     BYTE reservedFile[20];
  5935. // display
  5936.     BBOOL fenvwinextap;                // winextap
  5937.     BBOOL fenvctl3d;                // ctl3d
  5938.     BBOOL fenvsmallfont;            // smallfont
  5939.     WORD cxenvbuttonsize;            // toolbar buttonsize
  5940.     WORD cyenvbuttonsize;            // toolbar buttonsize
  5941.     BYTE cyenvtoolbarint;            // toolbar cyint
  5942.     BYTE fEnglish;                    //1.99E 英語モード
  5943.     BBOOL fAtok9;                    //2.00B ATOK9対応
  5944.     BBOOL fSpecifyFontsizeByDot;    //2.96 970205 フォントサイズをドット単位で指定する?
  5945.     BBOOL fNoCursorBlink;            //2.98 970304 カーソルのブリンクをしない?
  5946.     BBOOL fDispLineEdit;            //2.98 970304 変更行を保持し、その行の行番号を特別に表示?
  5947.     BBOOL fScrollbarProp;            //2.99D 970329 (未完成)プロポーショナルスクロールバーを使用?
  5948.     BYTE reservedDisp[24];
  5949. // szenv
  5950.     mchar szenvtxpath[CCHENVPATH];    // txpath
  5951.     mchar szenvpath[CCHENVPATH];    // path
  5952.     mchar szenvext[CCHENVPATH];        // ext
  5953.     mchar szenvkey[CCHNAME];        // keyfile
  5954.     mchar szenvinclude[2][CCHWORD];    //1.99C include
  5955.                                     // WZ16/32で個別に指定可能
  5956.                                     // TX-PCODE16でコンパイルすると拡張子は1*
  5957.                                     // TX-PCODE32でコンパイルすると拡張子は3*
  5958.                                     // になる
  5959.     #if 1//2.00E2 
  5960.     mchar szPathTxpcode[2][CCHWORD];//1.99C TX-PCODE出力先(未完成)
  5961.                                     // 元szExtVerticalなので、".txv"が
  5962.                                     // セットされている点に注意!
  5963.     mchar szExtGroup[370];            //2.00B 拡張子のグルーピング
  5964.                                     //2.00E2 メンバーオフセット変更し、サイズ拡大
  5965.                                     // szExtGroupの設定がなされていても
  5966.                                     // szExtGroup[0]が0になり初期化できるように
  5967.                                     // オフセットを変更した
  5968. // メーラ
  5969.     mchar szMailer[120];            //2.90 メーラーのコマンドパス
  5970.     WORD idMailer;                    //2.90 メーラーの種別(MAIL_XXX)
  5971.     //2.98 970311 
  5972.     BYTE vkEhStart;                    // EHを開始するキー
  5973.     BYTE vkImeOn;                    // IMEをONするキー
  5974.     BYTE vkImeOff;                    // IMEをOFFするキー
  5975.     BYTE vkImeSw;                    // IMEをON/OFFするキー
  5976.     BBOOL fEnableEh;                // EH有効?
  5977.     BBOOL fEnableEhMail;            // EH-Mail有効?
  5978.     BBOOL fEnableImeOn;                // IMEをON有効?
  5979.     BBOOL fEnableImeOff;            // IMEをOFF有効?
  5980.     BBOOL fEnableImeSw;                // IMEをON/OFF有効?
  5981.     WORD wtmEhmailStartWait;        // メーラのフックする前にms待つ
  5982.     WORD wtmEhmailSendWait;            //2.99B 970322 メール送信完了までms待つ
  5983.     BBOOL fHookReadonly;            //3.00A2 970503 ES_READONLYもメーラフック、テキストキャプチャーする?
  5984.     BYTE reservedSzenv[52];
  5985. // ネットワーク
  5986.     WORD fNetShareMenu:1;            //2.00E2 メニューを共有
  5987.     WORD fNetShareKey:1;            //2.00E2 キーファイルを共有
  5988.     WORD fNetShareToolbar:1;        //2.00E2 ツールバーを共有
  5989.     WORD fNetShareLpstyle:1;        //2.00E2 印刷スタイルを共有
  5990.     WORD fNetShareInifile:1;        //2.00E2 INIファイルを共有
  5991.     WORD fReserved:11;
  5992.     #else
  5993.     mchar szExtVertical[CCHWORD];    //1.99C 縦書きの拡張子(不要)(未使用)
  5994.     mchar szPathTxpcode[2][CCHWORD];//1.99C TX-PCODE出力先(未完成)
  5995.     mchar szExtGroup[CCHENVPATH];    //2.00B 拡張子のグルーピング
  5996.     BYTE reservedSzenv[190];
  5997.     #endif
  5998. // TX-C
  5999.     mchar szmacrotest[CCHWORD];        // テストマクロ名
  6000.     BBOOL fsave_at_macrotest;        // テストマクロ実行時にテキストを保存?
  6001.     TXCOPTION configTxc;        // copt
  6002.     BYTE reservedTxc[30];
  6003. //2.95 970128 TXCONFIGSHARE構造体サイズ拡大
  6004.     mchar szmacroopenpost[30];        // オープン後イベントマクロ
  6005.     // 禁則
  6006.     mchar szKinsokuTop[200];        // 行頭禁則文字(行の先頭にきてはいけない文字)
  6007.     mchar szKinsokuEnd[100];        // 行末禁則文字(行の末尾にきてはいけない文字)
  6008.     mchar szKinsokuKuten[100];        // 句読点
  6009.     BBOOL fNoMemorySearchOption;    //2.95 970131 単語毎に検索オプションを記憶しない
  6010.     // 検索
  6011.     BBOOL fSearchSetFont;            //2.97 970225 
  6012.                                     // 検索ダイアログの[検索文字列]と[置換文字列]のフォントを
  6013.                                     // テキストの表示に用いているフォントと同じにする?
  6014.     BBOOL fSearchButton;            //2.97 970225 
  6015.                                     // モードレス検索/置換ダイアログで、
  6016.                                     // 上へ/下へボタンで検索ができるようにする?
  6017.     BBOOL fSearchGetText;            //2.97 970225 
  6018.                                     // 範囲選択しないで検索/置換ダイアログを開いた時に、
  6019.                                     // カーソル位置の文字列を取り込む?
  6020. //2.99 970313 フォルダ毎の漢字コード、改行コード指定。
  6021.     DIRECTORYATR tDirAtr[DIRECTORYATR_N];
  6022.     BBOOL fSearchModeless;            //2.99A 970320 txkeySearchで、モードレス検索ダイアログを使用する?
  6023.     mchar szPathHtmlBase[CCHENVPATH];//2.99B 970321 HTMLのリンク用ベースディレクトリ
  6024.     BBOOL fImeStatusHold;            //2.99C 970323 WZのウィンドウを切り替えたときもIMEのON/OFF状態を変化しない?
  6025.     BBOOL fNoUpDownAtClipMouse;        //2.99C 970323 マウスによる選択中の上下左右キーの特別扱いをしない
  6026.     BYTE configDisuse;                //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
  6027. //3.00B1 970613 viewmodeの設定
  6028.     BBOOL viewmodeModeDispUnder;    // (未完成)
  6029.         #define VIEWMODE_OFF    0    // OFF
  6030.         #define VIEWMODE_ON        1    // ON
  6031.         #define VIEWMODE_FILE    2    // 文書の設定に従う
  6032.     BBOOL viewmodeModeDispToolbar;
  6033.     BBOOL viewmodeModeDispRuler;
  6034.     BBOOL viewmodeModeDispStatusbar;
  6035.     BBOOL viewmodeModeDispFunctionKey;
  6036.     // (未完成)viewmodeの専用の色
  6037.     BBOOL viewmodefMyColor;
  6038.     COLORREF viewmodeRgbText;
  6039.     COLORREF viewmodeRgbBack;
  6040.     COLORREF viewmodeRgbBlockText;
  6041.     COLORREF viewmodeRgbBlock;
  6042.     COLORREF viewmodeRgbNline;
  6043.     COLORREF viewmodeRgbUnderline;
  6044.     COLORREF viewmodeRgbControl;
  6045.     COLORREF viewmodeRgbURL;
  6046.     BYTE reserved[836];
  6047. } TXCONFIGSHARE;
  6048.  
  6049. #define NCLIPATR    4    //2.00E 3->4
  6050. //1.99C 
  6051. typedef struct {
  6052.     HCLIP hclipText;    // 関連付けられたテキストのクリップ
  6053.     DWORD cbText;        // テキストのサイズ
  6054.     DWORD serial;        // シリアル番号
  6055. } HCLIPATRINFO;
  6056.  
  6057. //1.99C 
  6058. typedef struct {
  6059.     HWND hwnd;                // hwndbase
  6060.     DWORD modeProcess;        // 起動中のWZプロセスのモード
  6061.         #define WZPROCESS_STAYALWAYS        0x0002    // 常駐プロセス(WZ Iconなど)
  6062.         #define WZPROCESS_EDITORLIKE        0x0008    //1.01A キャプションが"WZ Editor"でなくても、txSwitchWindowで切り替えられる
  6063.         #define WZPROCESS_TXE                0x0010    //2.94 970120 TXEかどうか?
  6064.         #define WZPROCESS_NOOPENHIGH        0x0020    //2.94 970122 このプロセスで高速オープン不可
  6065.     RECT rectOriginal;        // [ウィンドウ]-[元に戻す]用
  6066.     WORD fWndMoving:1;        //2.00E 
  6067.     WORD fCloseEvery:1;        //2.94 970124 CloseEvery実行済み?
  6068.     WORD fReserved:14;
  6069.     mchar szTxeName[16];    //2.94 970122 TXEマルチオープンチェック用
  6070.     HWND ehHwnd;            //2.98 970310 eh?
  6071.     HWND ehHwndBase;        //2.99D 970401 
  6072.     #ifdef __FLAT__
  6073.     BYTE reserved[2];
  6074.     #else
  6075.     BYTE reserved[4];
  6076.     #endif
  6077. } WZPROCESS;
  6078.  
  6079. // WZ16では基本的に、SHARE構造体メンバ以外を指すポインタは持ってはいけない。
  6080. // ポインタの実体があるインスタンスが終了したら、駄目になる。
  6081. // WZ32では、ポインタを持ってはいけない。
  6082. // (SHARE構造体メンバも指すものも含む。こうゆうのはオフセットで持つこと)
  6083. // MapViewOfFileで、プロセスごとにSHAREが割り付けられるアドレスが異なるため。
  6084. typedef struct tagSHARE {
  6085. //2.99C 970327 異なるバージョンのWZが重複起動しないように
  6086.     WORD wzID;                        // WZ ID
  6087.     WORD wzVersion;                    // WZ version
  6088. // ヒストリ
  6089.     UINT sizehist[MAXHIST];            // ヒストリバッファのサイズを指定(デフォルト:512)
  6090.     STRBLK hist[MAXHIST];            // ヒストリ
  6091.                                     // 複数のインスタンスで共有するので、
  6092.                                     // ヒストリ用のHSTRBLKの実体は、shareで定義する。
  6093.                                     // shareで定義しないと、ヒストリ用のHSTRBLKは
  6094.                                     // インスタンス毎に持たれてしまい、異常動作する
  6095.     #if 1//2.94 text構造体増加に仮対応
  6096.     BYTE buffhist[20000];            // データバッファ
  6097.     #else
  6098.     BYTE buffhist[24000];            // データバッファ
  6099.     #endif
  6100. // WZ環境設定
  6101.     BBOOL fenvload;                    // WZ.DATロード済み?
  6102.     mchar envbuff[2048];            // WZ.DAT内容バッファ
  6103.     #ifdef __FLAT__
  6104.     int tenvoffset[10];                // [2]以上のこと
  6105.     #else
  6106.     mchar *szenvextensions;            // [Extensions]
  6107.     mchar *szenvviewers;            // [Viewer]
  6108.     #endif
  6109.     // デフォルトの環境設定。
  6110.     // インストール時にセットされる。
  6111.     // wzshare.cfgが存在しない時は、この情報を元に共通設定を作成する。
  6112.     mchar env_key[CCHNAME];
  6113.     int env_color;
  6114.     int env_pc98;
  6115.     mchar env_serial[CCHNAME];        // serial
  6116.     mchar env_username[CCHNAME];    // username
  6117. // 共通設定
  6118.     TXCONFIGSHARE config;            // configShare
  6119.     FONTSTYLE fontstyleText;        // FONTTX_TEXTの標準設定
  6120.     TX textBase;                    // configBase
  6121.                                     // 標準のconfigExt,configFile
  6122.     // 自動スクロール
  6123.     int iScrollSpeed;                // 初期値3
  6124.     BOOL fScrollShift;                // [Shift]が押されている?
  6125. // WZプロセスの管理
  6126.     BOOL ffirstinitend;                // 最初のインスタンスの初期化が終わった
  6127.     #ifdef __FLAT__
  6128.         #define MAXOPEN            100        // 最大プロセス数
  6129.     #else
  6130.         #define MAXOPEN            50        // 最大プロセス数
  6131.     #endif
  6132.                                     //2.93 仕様変更。高速オープン対応
  6133.                                     // text1以外のtext->hwndbaseが
  6134.                                     // 追加される事があります。
  6135.     int nOpen;                        // 起動中のWZプロセス数
  6136.     WZPROCESS tWzprocess[MAXOPEN];    //1.99C 起動中のWZプロセスのモード
  6137.                                     // 起動された順序で入っている
  6138.                                     // 有効な要素は、[0]から[nOpen-1]まで
  6139. // ファイル
  6140.     BOOL fViewMode;                    // これから開くテキストをビューモードで開く
  6141.     mchar szlastmask[CCHWORD];        // 最後に選択されたマスク
  6142.     // プロジェクト
  6143.     BBOOL fProjectOpening;            // プロジェクトオープン実行中?
  6144.     mchar szproject[CCHPATHNAME];    // カレントプロジェクト名
  6145. // 検索
  6146.     // txuiSearchGet用
  6147.     mchar szSearch[CCHWORD];
  6148.     int lchSearch;
  6149.     // text cmp
  6150.     LPBYTE lpCmp;
  6151.     IBUFF lchCmp;
  6152.     //
  6153.     REPLACEARGEX replace;            // 置換再実行用
  6154.     //2.96 970201 全WZを対象検索/置換用
  6155.     HWND hwndSearchAllTextStart;    //1.01A SEARCH_ALLTEXT開始ウィンドウ
  6156.                                     // これがHWND_BROADCASTなら開始ウィンドウ閉じられた事を示す
  6157.     REPLACEARGEX argSearchAll;        //2.96 970201 実行中かどうか
  6158.                                     // 実行中の場合、その内容
  6159.                                     // 実行中でない場合、szFind[0]は0になる
  6160.     DWORD nReplaced;                //2.96 970201 SEARCH_ALLTEXTでの置換個数
  6161.     WORD fResultSearchAlltext:2;    // SEARCH_ALLTEXTの結果
  6162.                                     // 1:一周した 2:ファイルが閉じられたので中断した
  6163.     WORD fReservedSearch:14;
  6164. // キーボードマクロ
  6165.     BOOL fMacroRec;                    // 記録中?
  6166.     BOOL fMacroPlay;                // 再生中?
  6167.     #define MAXKEYMACRO        10        // 登録できるマクロ数
  6168.     #define SIZETKEYMACRO    1024    // マクロのサイズ
  6169.     BYTE tmacro[MAXKEYMACRO][SIZETKEYMACRO];
  6170.                                     // マクロ記録バッファ
  6171.     BYTE imacroring;                // next record macro no.(ring)
  6172.     BYTE imacrowrite;                // write macro no.
  6173.     BYTE *pmacrowrite;                // write pointer on tmacro
  6174.     BYTE *pmacroread;                // read pointer on tmacro
  6175.     BOOL fmacroinsertstr;            // insertなら複数の文字を文字列にまとめる
  6176. // TX-C
  6177.     BYTE modeTxc;                    //1.00H3 macroCompile時のTX-Cのモード
  6178.                                     // 0:default,1:TX-C16,2:TX-C32
  6179. // ウィンドウ
  6180.     int modeSplit;                    // 画面分割モード('C'/'V'/'H'),初期値'C'
  6181.     HWND hwndFocus;                    // フォーカスをもったhwndtext(なければNULL)
  6182. // 標準出力(stdout)
  6183.     HWND hwndStdout;                // "stdout"ウィンドウハンドル
  6184.     HWND reservedHwnd;                //2.96 970209 廃止
  6185.     BYTE fNoStdout;                    //2.96 970210 0以外なら出力しない
  6186.     BYTE fReservedStdout;
  6187. // color
  6188.     COLORREF rgbText;
  6189.     COLORREF rgbBack;
  6190.     COLORREF rgbBlock;
  6191.     COLORREF rgbControl;
  6192. // クリップボード
  6193. //2.00E レイアウト変更
  6194.     // WindowsクリップボードとTSの共通情報
  6195.     OPENCLIP openclip[NCLIP];        // オープンされているクリップボード,TSのコンテキストを保持
  6196.                                     // 1.00F クリップボード、TS複数同時オープンサポート
  6197.                                     // 従来は、HCLIP_WINオープン中にHCLIP_TSなどを
  6198.                                     // オープンできなかったが、
  6199.                                     // オープンできるようにした。
  6200.     TSCONTEXT tscontext[NCLIPINTERNAL-2];    // -2:HCLIP_PRIVATE,HCLIP_TXATRP
  6201.                                     // TSコンテキスト
  6202.                                     // TS(テキストスタック HCLIP_TS,HCLIP_DELSTR etc)コンテキスト
  6203.     HCLIPATRINFO thclipatr[NCLIPATR];
  6204.                                     // HCLIP_TXATRxコンテキスト
  6205.     HCLIP hclipLastCopy;            //2.90 HCLIP_WINとHCLIP_TSどちらに最後にデータがセットされたか?
  6206.     DWORD serialClip;                // クリップデータシリアル番号
  6207.                                     // TEXTとTXATRの対応付け用
  6208.     DWORD serialClipWin;            // クリップボードのシリアル番号
  6209.     BYTE reservedSC[2];                //2.00E 2バイトは確保しておくこと!
  6210.     // Windowsクリップボード情報
  6211.     #ifdef __FLAT__
  6212.     int nClipKindCb;                // WZがクリップボードにペーストしたテキストデータ
  6213.                                     // の範囲選択モードを保持
  6214.     #endif
  6215. // IME
  6216.     #ifndef __FLAT__
  6217.         #ifdef __IME_H
  6218.             LPIMESTRUCT lpIme;        // IMESTRUCT
  6219.         #else
  6220.             LPVOID lpIme;
  6221.         #endif
  6222.     #endif
  6223. // キー定義
  6224.     BOOL fKeyInited;                // 標準のキー定義初期化済み?
  6225.     KEY key;                        // 標準のキー定義
  6226.     mchar tszfkey[FKEY_NKIND][FKEY_NKEY][FKEY_SIZE];
  6227.                                     // 標準のファンクションキーの内容
  6228. // WZCMD:マクロコマンド変換テーブル
  6229. // 文字列で指定される外部コマンドを登録して数値に変換するためのテーブル
  6230.     #define CCHMACRONAME        512    // 指定できる最大マクロ名
  6231.     #define CCHMACROCONTENT        8192// マクロ名文字列バッファサイズ
  6232.     mchar tMacroNameBuff[CCHMACROCONTENT];
  6233.                                     // マクロ名文字列バッファ
  6234.     UINT lchMacroNameBuff;            // tMacroNameBuff内、文字列バイト数
  6235.     MACRONAME tMacroName[CCHMACRONAME];    // マクロ名テーブル
  6236.     int nMacroName;                    // テーブル数
  6237. // WZ汎用共有メモリ
  6238.     #ifdef __FLAT__
  6239.     #define WZMEM_MAX        30        // 最大数
  6240.     BYTE tWzmemHandle[WZMEM_MAX];    // ハンドル
  6241.     #endif
  6242. // ネットワーク
  6243.     BBOOL env_network;            //2.00E ネットワーク?
  6244.     WORD fSpecUserName:1;        //2.00E2 ユーザ名が指定された?
  6245.     WORD fReservedNet:15;        //2.00E2 
  6246.     mchar szUserName[30];        //2.00E 現在のユーザ名
  6247.                                 // szUserName[0] != 0なら、ユーザ毎に設定保存されます。
  6248.                                 // 次のファイルがユーザ毎に、wzディレクトリの
  6249.                                 // ユーザ名サブディレクトリの下に作られます
  6250.                                 //  wz.bar,wz.key,wz.mnu,wze.mnu
  6251.                                 //  wz.cfg,wzshare.cfg,wzprint.cfg
  6252.                                 //  wz.ini,wz.tpj
  6253.                                 //  *.bmp(ツールバーのビットマップデータキャッシュファイル)
  6254.                                 //  profWzDirNew,profWzIniNew,dialogSetIniEx
  6255.                                 //  でアクセスされるiniファイル
  6256.                                 // 以上のファイルがユーザ名サブディレクトリに存在しない時は
  6257.                                 // ルートのファイルがコピーされて使用されます。
  6258.                                 // なお、permanent変数を使ったマクロは再コンパイルしないと
  6259.                                 // permanent変数の内容がルートのwz.iniに保存されます。
  6260. // 音声化
  6261.     BBOOL env_speak;            //2.00E 音声化
  6262. #ifdef __FLAT__
  6263. //2.90 eh
  6264.     WORD fehDoing:1;            //2.90 eh実行中
  6265.     WORD fehSendMailDoing:1;    //2.99 970315 「ファイル|メール送信」からのメーラ起動中
  6266.     WORD fehReserved:14;
  6267.     int neh;                    //2.90 eh中のWZ数
  6268.     DWORD wtmSendMailStart;        //2.99 970315 「ファイル|メール送信」実行開始時間
  6269. #endif
  6270. //    status
  6271.     WORD fImeWasOn:1;            //2.99C 970323 fImeStatusHold用
  6272.     WORD fStatusReserved:15;    //2.99C 970323 
  6273.     BYTE fNoPathSearchMacroTxcfgs;//2.99D 970328
  6274. // TX-Cでは構造体は64KBまでしか扱えない。
  6275. // WZ32では素のSHARE構造体のサイズは64KBを超えるので、
  6276. // マクロで参照しないメンバは公開しない
  6277. #ifndef __TXC__
  6278.     PROFILE profile[MAXPROFILE];    // プロファイル
  6279. #endif
  6280. // 拡張してサイズが大きくなっても構わない
  6281. } SHARE;
  6282.  
  6283. //##ヒストリ
  6284. //1.00F histXXX 実装変更 histXXXを使用してるマクロバイナリも配布すること
  6285. // WZ32では、histXXXで返される文字列ポインタはプロセス間で共有できない。
  6286. // MapViewOfFileで、プロセスごとにSHAREが割り付けられるアドレスが異なるため。
  6287.  
  6288. #define histGetCount(h)        sbGetCount(&text1->share->hist[(int)(h)])
  6289. // ヒストリハンドルh内の文字列数を返す
  6290. #define histRead(h,i)        sbRead(&text1->share->hist[(int)(h)],i)
  6291. // istr番目の文字列を返す
  6292. // istr = 0..histGetCount(h)-1
  6293. #define histAdd(h,szstr)    sbAddHist(&text1->share->hist[(int)(h)],szstr)
  6294. // ヒストリにstrを追加する
  6295. #define histSearchPrev(h,szstr,istr)\
  6296.                             sbiSearchPrev(&text1->share->hist[(int)(h)],szstr,istr)
  6297. //    istr-1から0までszstrを検索する
  6298. //    見つからなければ-1を返す
  6299. #define histSearchNext(h,szstr,istr)\
  6300.                             sbiSearchNext(&text1->share->hist[(int)(h)],szstr,istr)
  6301. //    i+1からn-1までstrを検索する
  6302. //    見つからなければ-1を返す
  6303. #define histDelAll(h)        sbDelAll(&text1->share->hist[(int)(h)])
  6304.  
  6305. #define histDelI(h,i)        sbDelI(&text1->share->hist[(int)(h)],i)
  6306.  
  6307. // ヒストリハンドルをHSTRBLKに変換する
  6308. #define histToStrblk(h)        (&text1->share->hist[(int)(h)])
  6309.  
  6310.  
  6311.  
  6312. //1.01A _share.h内のTXAPIもapidbに追加
  6313. //{#API}
  6314.  
  6315. //{###プロセス管理}
  6316.  
  6317. HWND TXAPI textRead(int i);
  6318.     // WZのテキストウィンドウのi番目のhwndbaseを返す
  6319.     // iは0からshare->nOpen-1
  6320.  
  6321. //{###クリップボード、テキストスタック}
  6322.  
  6323. BOOL TXAPI clipDeleteTop(HCLIP hclip);
  6324.     // クリップボード(テキストスタック)のトップを削除する
  6325. BOOL TXAPI clipClear(HCLIP hclip);
  6326.     // クリップボードの内容をクリアする
  6327. int TXAPI clipGetKind(HCLIP hclip);
  6328.     // hclipの表層の範囲選択モードを返す
  6329. int TXAPI clipIsWz(void);
  6330.     // クリップボードのデータはWZがペーストしたものかどうか返す
  6331.  
  6332. //{###プロジェクト}
  6333.  
  6334. BOOL TXAPI histLoad(void);
  6335. BOOL TXAPI histSave(void);
  6336.  
  6337. //{###排他制御}
  6338.  
  6339. #define LOCK_SZSEARCH        0
  6340. #define LOCK_WZPROCESS        1
  6341. #define LOCK_HIST            2
  6342. #define LOCK_STDOUT            3
  6343. #define LOCK_PROJECT        4
  6344. #define LOCK_CLIP            5    // clip内部処理トランザクション
  6345. #define LOCK_CLIPTS            6    //2.00E HCLIP_TS使用中
  6346. #define LOCK_CLIPWORK2        7    //2.00E HCLIP_WORK2使用中
  6347. #define LOCK_CLIPWORK3        8    //2.00E HCLIP_WORK3使用中
  6348. #define LOCK_CLIPTXATR        9    //1.99C HCLIP_TXATR? トランザクション
  6349. #define LOCK_KBMACRO        10
  6350. #define LOCK_MTCMD            11
  6351. #define LOCK_MENU            12
  6352. #define LOCK_SENDMESSAGE    13
  6353. #define LOCK_PROFILE        14
  6354. #define LOCK_HWZMEM            15
  6355. #define LOCK_SEARCHALL        16    //1.01A 
  6356. #define LOCK_CONFIG            17    //1.91A 
  6357.  
  6358. //2.00E 旧名 いずれ廃止
  6359. #define LOCK_CLIP1            6
  6360. #define LOCK_CLIP2            7
  6361. #define LOCK_CLIP3            8
  6362.  
  6363. #ifdef __FLAT__
  6364.     void TXAPI wzlock(int no);
  6365.     void TXAPI wzunlock(int no);
  6366. #else
  6367.     #define wzlock(no)
  6368.     #define wzunlock(no)
  6369. #endif
  6370.  
  6371. //{###WZ共有メモリ}
  6372. //WZの全プロセスからアクセスできる、動的割り当て可能なメモリを提供します
  6373. //WZ32では各WZ窓のアドレス空間は独立なので、SendMessageなどで他のWZ窓に
  6374. //文字列などをそのまま渡すことは出来ません(WZ16ではできます)。
  6375. //WZ共有メモリAPIを使えば、可能になります。
  6376. //次は、WZ共有メモリを使ってWZ窓間で文字列を交換する例です。
  6377. //この例のようにプログラムすれば、WZ16でもそのまま同じ様に動作します。
  6378. //(送り側のプログラム例)
  6379. //    HWZMEM hmem = wzmemNew();
  6380. //    WZMEM wzmem;    // WZ共有メモリAPI用のワーク変数の定義
  6381. //    mchar* pmem = wzmemAlloc(hmem,&wzmem,1000);
  6382. //    strcpy(pmem,"WZ共有メモリですよ");
  6383. //    SendMessage(hwndDestination,WM_XXXX,0,(LPARAM)hmem);// hmemはlParamを使って渡す
  6384. //    wzmemClose(&wzmem);
  6385. //    wzmemDelete(hmem);
  6386. //(受け側のプログラム例)
  6387. //    static txstr mymem;
  6388. //    ...
  6389. //    case WM_XXXX: {
  6390. //        WZMEM wzmem;
  6391. //        LPVOID pmem = wzmemOpen(lParam,&wzmem);
  6392. //        strcpy(mymem,pmem);//自分のメモリ空間のメモリにコピー
  6393. //        wzmemClose(&wzmem);
  6394. //        return TRUE;
  6395. //    }
  6396. //受け側のプログラムでは、returnで送り側に処理を返すまでの間に
  6397. //ユーザインターフェースを伴う処理(メニューやダイアログを出す)
  6398. //はしてはいけません。
  6399. //このような処理をするプログラムをWZ16で動かすとハングすることがあります。
  6400.  
  6401. typedef int HWZMEM;                // ハンドルタイプ
  6402. #define HWZMEM_ERROR    -1        // エラーハンドル
  6403.  
  6404. typedef struct {
  6405.     HANDLE handle;
  6406.     LPBYTE mem;
  6407. } WZMEM;
  6408.  
  6409. #ifndef __FLAT__
  6410.  
  6411. #define wzmemNew()                    memAlloc(100)
  6412. #define wzmemAlloc(h,wzmem,size)    GlobalReAllocPtr(h,size,0)
  6413. #define wzmemOpen(h,wzmem)            (h)
  6414. #define wzmemClose(wzmem)
  6415. #define wzmemDelete(h)                memFree(h)
  6416.  
  6417. #else
  6418.  
  6419. HWZMEM TXAPI wzmemNew(void);
  6420.     // WZ共有メモリハンドルを新しく確保して返します。
  6421.     // HWZMEM_ERRORが返されたらエラーです
  6422.     //1.01Aで追加
  6423. LPVOID TXAPI wzmemAlloc(HWZMEM h,WZMEM *wzmem,DWORD size);
  6424.     // WZ共有メモリハンドルに、sizeバイトのWZ共有メモリを割り当てます。
  6425.     // wzmemには、WZMEM変数のアドレスを渡して下さい。
  6426.     //1.01Aで追加
  6427. LPVOID TXAPI wzmemOpen(HWZMEM h,WZMEM *wzmem);
  6428.     // WZ共有メモリハンドルに割り当てられているWZ共有メモリのポインタを返します。
  6429.     // wzmemには、WZMEM変数のアドレスを渡して下さい。
  6430.     //1.01Aで追加
  6431. void TXAPI wzmemClose(WZMEM *wzmem);
  6432.     // wzmemOpenし、WZ共有メモリのアクセスを終えたら、
  6433.     // 必ずwzmemCloseを呼び出して下さい。
  6434.     //1.01Aで追加
  6435. void TXAPI wzmemDelete(HWZMEM h);
  6436.     // WZ共有メモリハンドルを使い終わったら、必ずwzmemDeleteを呼び出して下さい
  6437.     //1.01Aで追加
  6438.  
  6439. #endif
  6440.  
  6441. //{#ENDAPI}
  6442.  
  6443. //##_gene.h
  6444. // 世代管理TXAPI
  6445.  
  6446. typedef struct {
  6447.     IGENE curgene;    // 現在の世代番号
  6448.     TIME curtime;    // 現在の世代の保存された時間
  6449.     // 以下、世代リスト情報受け取り用 for edit.c
  6450.     IGENE nList;        // 世代数
  6451.     IGENE maxList;        // リストを受け取れる最大数
  6452.     TIME *tTime;        // 保存時間のポインタ(TIME tTime[maxgene])
  6453.     mchar* tszComment;    //1.97 (mchar tszComment[maxgene][CCHWORD])
  6454. } GENELIST;
  6455.  
  6456. BOOL TXAPI txGeneMakeList(tx *text,GENELIST *arg);
  6457. BOOL TXAPI txGeneJump(tx *text,IGENE igene);
  6458. BOOL TXAPI txGeneDelete(tx *text,IGENE igene);
  6459. BOOL TXAPI txGeneOpen(tx *text,IGENE igene);
  6460. BOOL TXAPI txuiGeneLoad(tx *text,IGENE igene);
  6461. void TXAPI txUndoNewest(tx *text);
  6462.  
  6463. //##_term.h
  6464.  
  6465. typedef struct {
  6466.     DWORD BaudRate;        // ボーレート(110-256000)
  6467.     int nPort;            // ポート番号(1...)
  6468.     WORD sizeReciveBuff;// 受信バッファサイズ(1024...)
  6469.     WORD sizeSendBuff;    // 送信バッファサイズ(1024...)
  6470.     int retRecive;        // 受信改行コード(RET_CR,RET_LF,RET_CRLF)
  6471.     int retSend;        // 送信改行コード(RET_CR,RET_LF,RET_CRLF)
  6472.         #define RET_CR        0
  6473.         #define RET_LF        1
  6474.         #define RET_CRLF    2
  6475.     int flow;            // フロー制御モード(FLOW_NONE,FLOW_HARD,FLOW_SOFT)
  6476.         #define FLOW_NONE    0
  6477.         #define FLOW_HARD    1
  6478.         #define FLOW_SOFT    2
  6479.     BOOL fKanjiBs2;        // 漢字に対するBSは2回送られてくる?
  6480.     BYTE phone;            // 電話回線の種類
  6481.         #define PHONE_TONE    0
  6482.         #define PHONE_PULSE    1
  6483.         #define PHONE_NONE    3
  6484.     BYTE parity;        // パリティー
  6485.         #ifndef PARITY_NONE
  6486.             #define PARITY_NONE    0
  6487.             #define PARITY_ODD    1
  6488.             #define PARITY_EVEN    2
  6489.         #endif
  6490.     BYTE ByteSize;        // データ長(7,8)
  6491.     BYTE StopBit;        // ストップビット数
  6492.         #define STOPBIT_ONE        0
  6493.         #define STOPBIT_ONE5    1
  6494.         #define STOPBIT_TWO        2
  6495.     mchar *szmodeminitcmd;    // モデム初期化コマンド
  6496. } TERMCONFIG;
  6497.  
  6498. ///#define TERM_SIZESENDBUFF        2048    //2.00C 
  6499. ///#define TERM_SIZERECEIVEBUFF    2048    //2.00C 
  6500. #define TERM_SIZESENDBUFF        4096    //2.00C 
  6501. #define TERM_SIZERECEIVEBUFF    4096    //2.00C 
  6502.  
  6503. int TXAPI _termOpen(TX *text,TERMCONFIG* config);
  6504. int TXAPI _termWriteStr(UCHAR *szBuff,DWORD tmTimeout);
  6505. void TXAPI _termRead(void);//2.00B 
  6506. void TXAPI _termClose(void);
  6507.  
  6508. //##end
  6509.  
  6510. #ifdef __TXC__
  6511. }
  6512.  
  6513. extern "TX" {
  6514.     extern TX* text;        // フォーカス(キャレット)を持つテキスト
  6515.     extern TX* textf;        // textと同じ
  6516.     extern TX* text1;        // 表テキスト
  6517.     extern TX* text2;        // 裏テキスト
  6518.     extern TX* textTarget;    //2.94 970121 __wndproctext/__wndprocbaseの対象text
  6519. }
  6520.  
  6521. // for txstr
  6522. // friendをつけないと、関数のプロトタイプを定義したいのに、
  6523. // ()によるコンストラクタ呼び出しと見なされ、静的変数として定義されてしまう。
  6524. extern "stdlib" {
  6525. // 以下、dstに文字列をセットしてdstを返す
  6526. friend txstr _strmid(txstr dst,mchar *str,int sizeoffset,int size);
  6527. friend txstr _strleft(txstr dst,mchar *str,int sizeleft);
  6528. friend txstr _inttostr(txstr dst,int num);
  6529. friend txstr _chartostr(txstr dst,int ch);
  6530. //{#API}
  6531. //{###文字列操作}
  6532. mchar* _txapibase strright(mchar* str,int sizeright);
  6533.     // 文字列strの右側部分sizeleftの文字列を返します
  6534. mchar* _txapibase strrear(mchar* str,int sizeleft);
  6535.     // 文字列strの、sizeleftの文字より後ろの文字列を返します
  6536. //{#ENDAPI}
  6537. }
  6538.  
  6539. // standard library macro
  6540. #include "dialoga.txh"
  6541. #include "window.txh"
  6542. #include "stdlib.txh"
  6543. #include "cmd.txh"
  6544. #include "file.txh"
  6545. #include "help.txh"
  6546. #include "system.txh"
  6547. #include "macro.txh"//1.97 
  6548.  
  6549. //2.96 970209 stdoutOpen,redirect,redirectadd廃止
  6550.  
  6551. #define iswz100AB()    (!macroExist("std.getversion"))
  6552.  
  6553. #pragma TXCEX.
  6554.  
  6555. #endif//__TXC__
  6556.  
  6557. //2.92 safety strcpy op.
  6558. // szdstがmcharの配列の場合のみ使用可能。mcharへのポインタの場合は不可能
  6559. #define sstrcpy(szdst,szsrc)            strcpymax(szdst,szsrc,cchof(szdst))
  6560. #define sstrcpylen(szdst,szsrc,lch)        strcpylenmax(szdst,szsrc,lch,cchof(szdst))
  6561. //3.00A2 970503 sstrcat new
  6562. #define sstrcat(szdst,szsrc)            strcpymax(szdst + strlen(szdst),szsrc,cchof(szdst) - strlen(szdst))
  6563.  
  6564. #endif//__TEXT_H
  6565.