home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2002 January / VPR0201B.ISO / APUPDATE / VC / TXC0601S / TXC0601S.LZH / _WZ.H < prev    next >
C/C++ Source or Header  |  2001-05-07  |  337KB  |  7,998 lines

  1. /*
  2.     TextX System defines
  3.         WZ EDITOR 4.0 / Pocket WZ EDITOR 2.0 / XZ for Linux
  4.         Start   1997年 7月22日
  5.         Refresh 1999年 9月25日
  6.         Refresh 2000年 2月 6日
  7.     
  8.     UNICODEを基本とする。ただしテキストバッファ処理はANSIを使う。
  9.     WinAPIはUNICODE版を呼び出す。
  10.     Win95用のANSI版は、UNICODE版のWinAPIが実装されてないので、
  11.     自分でUNICODE版WinAPIラッパ(関数名:WinAPIの末尾に"_W"を付ける)
  12.     を作成しこれを呼び出す
  13.         WindowsCE : UNICODE only
  14.         WindowsNT : UNICODE / ANSI(UNICODEに内部で変換している)
  15.         Windows95 : ANSI only
  16.         一番軽く動作したいWindowsCEがUNICODEなのと、将来的にはWindows98は
  17.         WindowsNTに吸収される様なので、UNICODEベースとした。
  18.     
  19.     UNIXではTX-Cと構造体バイナリを共有する場合に、ビットフィールドに注意。
  20.         WORD a:1;
  21.         WORD b;
  22.     のaは、gccではBYTEになる(TX-CではWORD)。DWORDも同様。
  23.     このため2000年2月20日から基本的に"BYTE a:1;"の様に記述することにした。
  24. */
  25.  
  26. #ifndef __WZ_H
  27. #define __WZ_H
  28. #define __TX_H
  29.  
  30. //{###構造体/定数/基本
  31.  
  32. //##基本
  33.  
  34. // 開発中?
  35. #if defined(_WIN32_WCE) || defined(WZ_RELEASE)
  36.     #define __DEV__            0    // CE用は常にリリース
  37. #else
  38.     #define __DEV__            1
  39.     #define __MEMORYDEBUG__    0    // malloc/freeチェックを行う? !__TXC__専用    //WZ4.00Bm 990929 
  40. #endif
  41. // α版/β版,製品評価版?
  42. #define __BETA__            01    // β版/α版。特有機能あり。製品では外す。
  43. #define __TRYAL__            0    // 試用評価版    //WZ4.00Be 990512 
  44. #define __TRYALBOOK__        0    // 本等に付ける評価版。__TRYAL__も1にすること。期間による試用期限がない。    //WZ4.00De 000613 
  45. // 汎用ライブラリとして使用?
  46. #if defined(GENERAL) || defined(TXC_DLL) || defined(SETUP) || defined(WZUP)
  47.     #undef    GENERAL
  48.     #define GENERAL            1
  49. #else
  50.     #undef    GENERAL
  51.     #define GENERAL            0
  52. #endif
  53. // その他
  54. #define __HARDCOPY__        0    // 画面ハードコピー機能を使う?
  55. #define __ERR__
  56. #ifndef __FLAT__
  57.     #define __FLAT__            // 32bitフラットメモリ
  58. #endif
  59. #define __BITFIELD_BORDER__        // ビットフィールドのBYTE/WORD/DWORD境界
  60.  
  61. //##ターゲットOS定義
  62.  
  63. // 【Windows95,98,NT,2000...版?】    (WINDOWSMT)
  64. #define WINDOWSMT            0
  65. // 【UNIX+XWindow版?】                (UNIX)
  66. #ifdef UNIX
  67.     #undef    UNIX
  68.     #define UNIX            1
  69. #else
  70.     #define UNIX            0
  71. #endif
  72. #define LINUX                0
  73. // 【WindowsCE版?】                    (WINDOWSCE)
  74. //WZ4.00Ea 001126 PSPCは廃止。
  75. #define WINDOWSCE            0
  76. #define WINDOWSCE1            0
  77. #define WINDOWSCE2            0
  78. #define WINDOWSCE211        0
  79. // define
  80. #if UNIX
  81.     #undef    LINUX
  82.     #define LINUX                1    // LINUX依存部分
  83.     #define WS_TITLEBAR            WS_OVERLAPPEDWINDOW
  84.     #define WS_EX_TITLEBAR        0    //WZ4.00Ea 001202
  85.     #define WS_EX_STANDARD        WS_EX_CLIENTEDGE    //WZ4.00Bl 990919 
  86.     #define WS_BORDER_STANDARD    0    //WZ4.00Bm 990927 
  87.     #define WS_HVSCROLL_UNIX    WS_HVSCROLL    //WZ4.00Bm 990928 
  88.     #define SHELLEXECUTEINFOW    SHELLEXECUTEINFO
  89.     #define MYSTATUSBAR            0
  90.     #define ppcMENU_HEIGHT        0
  91. #elif defined(_WIN32_WCE)    // この_WIN32_WCEはWINDOWSCEに変更しないこと
  92.     #undef    WINDOWSCE
  93.     #define WINDOWSCE            1
  94.     #undef    WINDOWSCE1
  95.     #undef    WINDOWSCE2
  96.     #if _WIN32_WCE >= 200
  97.         #define WINDOWSCE1        0
  98.         #define WINDOWSCE2        1    // WindowsCE2.0
  99.         #if _WIN32_WCE >= 211    //WZ4.00Be 990405 
  100.             #undef    WINDOWSCE211
  101.             #define WINDOWSCE211    1    // WindowsCE2.11
  102.             #define SWP_NOREDRAW    0    // SWP_NOREDRAWは定義されていない
  103.         #endif
  104.     #else
  105.         #define WINDOWSCE1        1
  106.         #define WINDOWSCE2        0
  107.     #endif
  108.     #define WS_TITLEBAR            (WS_VISIBLE)
  109.     #define WS_EX_TITLEBAR        (_pocketpc * WS_EX_CAPTIONOKBTN)
  110.     #define WS_EX_STANDARD        0    //WZ4.00Bl 990919 
  111.     #define WS_BORDER_STANDARD    WS_BORDER    //WZ4.00Bm 990927 
  112.     #define WS_HVSCROLL_UNIX    0    //WZ4.00Bm 990928 
  113.     #define SHELLEXECUTEINFOW    SHELLEXECUTEINFO
  114.     #define MYSTATUSBAR            1
  115.     #define ppcMENU_HEIGHT        (_pocketpc * 25)    // PocketPCのメニューバーの高さ    //WZ4.00Ea 001127 new
  116. #else
  117.     #undef  WINDOWSMT
  118.     #define WINDOWSMT            1
  119.     #define WS_TITLEBAR            WS_OVERLAPPEDWINDOW
  120.     #define WS_EX_TITLEBAR        0    //WZ4.00Ea 001202
  121.     #define WS_EX_STANDARD        (_fwin40 * WS_EX_CLIENTEDGE)    //WZ4.00Bl 990919 
  122.     #define WS_BORDER_STANDARD    (!_fwin40 * WS_BORDER)        //WZ4.00Bm 990927 
  123.     #define WS_HVSCROLL_UNIX    0    //WZ4.00Bm 990928 
  124.     #define MYSTATUSBAR            0
  125.     #define ppcMENU_HEIGHT        0
  126. #endif
  127. // other
  128. #define WS_HVSCROLL                (WS_HSCROLL|WS_VSCROLL)
  129. #if defined(ARM)    //WZ4.00Be 990418 for StrongARM+WindowsCE
  130.     #define memmove(d,s,c)    tymemmove(d,s,c);
  131.     void* tymemmove(void* dest,void* src,size_t n);
  132. #endif
  133.  
  134. //##WZ/PWZ基本定義
  135.  
  136. //WZ4.00Da 000206 __WZ__,__PWZ__,__XZ__は、それぞれWZ,PWZ,XZ以外では0に#defineするように変更。
  137. #define __WZ__            0        // WZ EDITOR  ?
  138. #define __PWZ__            0        // PWZ EDITOR ?
  139. #define __XZ__            0        // XZ EDITOR/XZ MAIL ?
  140. #define __PWZM__        0        // PWZ with Mailbase ?    //WZ4.00Da 000206 new
  141.  
  142. #if WINDOWSMT
  143.     #undef  __WZ__
  144.     #define __WZ__        0x4004    // __VERSION__ WZのバージョン番号
  145.                                 // 0x4000 WZ4.00
  146.                                 // 0x4001 WZ4.00A
  147.                                 // 0x4002 WZ4.00B/C
  148.                                 // 0x4004 WZ4.00D
  149. #endif
  150.  
  151. #if WINDOWSCE
  152.     #undef  __PWZ__
  153.     #define __PWZ__        0x2004    // __VERSION__ PWZのバージョン番号
  154.                                 // 0x2000 PWZ2.00/2.00A
  155.                                 // 0x2002 PWZ2.05
  156.                                 // 0x2003 PWZ2.06
  157.                                 // 0x2004 PWZ2.06A
  158.     #undef  __PWZM__
  159.     #define __PWZM__    (__DEV__)
  160. #endif
  161.  
  162. #if UNIX
  163.     #undef  __XZ__
  164.     #define __XZ__        0x0004    // __VERSION__ XZのバージョン情報
  165.                                 // 0x0004 XZα0.6
  166.                                 // 0x1000 XZ1.00
  167. #endif
  168.  
  169. #define __TXSTRUCT__    118        // __VERSION__ text,mailerなどの構造体のバージョン番号(WZ/PWZ/XZ共通)
  170.                                 // 変更した場合は、WZ4のwzeditor.exeも公開すること for 高速オープンverチェック
  171.                                 //WZ4.00Ac 990206 101
  172.                                 //WZ4.00Ba 990304 102
  173.                                 //WZ4.00Bj 990823 103
  174.                                 //WZ4.00Bl 990909 104
  175.                                 //WZ4.00Bn 991007 105
  176.                                 //WZ4.00Bo 991011 106
  177.                                 //WZ4.00Bp 991014 107
  178.                                 //WZ4.00Ca 991023 108
  179.                                 //WZ4.00Da 000206 109
  180.                                 //WZ4.00Db 000210 110
  181.                                 //WZ4.00Dd 000526 111
  182.                                 //WZ4.00Ea 001125 112
  183.                                 //WZ4.00Ea 001217 113
  184.                                 //WZ4.00Eb 001218 114
  185.                                 //WZ4.00Eb 010101 115
  186.                                 //WZ4.00Ee 010411 116
  187.                                 //WZ4.00Ef 010424 117
  188.                                 //WZ4.00Eg 010502 118
  189.  
  190. // WZ4.00C/PWZ2.06以前のTX-Cプログラムとの互換性用の定義(POCKETWZのみEXE内で参照)
  191. #define POCKETWZ    WINDOWSCE        // Pocket版? WZ4ではない
  192. #define WZ4            (!WINDOWSCE)    // WZ4版? Pocketではない
  193. #define NEWWZ        1                // WZ1-3ではない。
  194. #define __WZ2__        0                // WZ2.0?
  195.  
  196. //##WZFUNC_xxx
  197. //WZ4.00Da 000206 renew
  198.  
  199. // 基本
  200. #ifdef WZFUNC_EMAIL
  201.     #define WZFUNC_EMAIL    1
  202. #else
  203.     #define WZFUNC_EMAIL    (WINDOWSMT|WINDOWSCE)
  204. #endif
  205. #define WZFUNC_TXC        (!__TRYAL__)
  206. #ifdef WZFUNC_MAILBASE
  207.     #define WZFUNC_MAILBASE    1
  208.     #define WZFUNC_EMAIL    0
  209.     #if __PWZ__
  210.         #undef __PWZ__
  211.         #define __PWZ__        0x3000
  212.     #endif
  213. #else
  214.     #define WZFUNC_MAILBASE    0
  215.         // MAILBASEの機能を提供?            //WZ4.00Da 000206 new
  216. #endif
  217. #define WZFUNC_MAILONLY    (UNIX&&WZFUNC_EMAIL)
  218.         // MAILのみの機能を提供?            //WZ4.00Ea 000922 new
  219. #define WZFUNC_EDITOR    (!WZFUNC_MAILONLY)
  220.         // EDITORの機能を提供?                //WZ4.00Da 000206 new
  221.  
  222. // 設定関連
  223. #define WZFUNC_TEXTCFGBIN    ((WINDOWSMT|UNIX)&&WZFUNC_EDITOR)
  224.         //WZ3.90N 981201 new
  225.         // WZ終了時にバイナリ設定ファイルが更新されていて、!sh->fNoSaveConfigAsTextnなら、
  226.         // 設定内容をテキスト設定ファイルに出力
  227.         // WZ EDITORを開いたときに、バイナリ設定ファイルが存在しなければ、
  228.         // テキスト設定ファイルから設定を読み込む。
  229.  
  230. // 提供機能
  231. #define WZFUNC_PRINT    (WINDOWSMT)
  232.         // 印刷機能を提供?
  233. #define WZFUNC_PROP        (WZFUNC_EDITOR)
  234.         // プロポーショナルフォントを提供?
  235.         // 使わない場合はWZFUNC_PRINTも0にすること。
  236. #define WZFUNC_BITMAP    (WINDOWSMT&&WZFUNC_EDITOR)
  237.         // 図の表示機能を提供?
  238. #define WZFUNC_TMLHIGH    (WINDOWSMT&&WZFUNC_EDITOR)
  239.         // マルチフォント等高度なTML機能を提供?
  240. #define WZFUNC_NIFTY    (WINDOWSMT|WINDOWSCE)
  241.         // WZ NIFTY/TERMを提供? WZFUNC_EMAIL時のみ有効 //XZ0.2 990630
  242. #define WZFUNC_OLECLIP    (WINDOWSMT)
  243.         // OLEクリップボードを提供?
  244.         // ONにすると、TMLでコピーして他アプリにペーストしたとき素のテキストとしてペーストされる。
  245.         // OFFにすると、TMLタグが付いてペーストされる。
  246. #define WZFUNC_OLEDD    (WINDOWSMT)
  247.         // OLEドラッグアンドドロップを提供?
  248. #define WZFUNC_UIREFER    0
  249.         // 「最近参照した位置に移動」を提供?    //WZ3.90J 981108 「前位置に戻る」に置き換え
  250. #define WZFUNC_CONV        (WINDOWSMT&&WZFUNC_EDITOR)
  251.         // ファイルコンバータ(WZ3のWZ文書ファイルの読込)機能を提供?
  252. #define WZFUNC_CONVERTTEXT (1)
  253.         // 「テキストの変換」機能を提供?        //WZ3.90K 981114 
  254. #define WZFUNC_TABBEAM    (WZFUNC_EDITOR)
  255.         // 「タブ桁揃え」機能を提供?            //WZ3.90K 981114 
  256.         // これをONにすると従来の「タブ体裁」の機能はOFFになる。
  257. #define WZFUNC_HTMLHIGH    (((WINDOWSMT|UNIX)&&WZFUNC_EDITOR)||WZFUNC_MAILBASE)
  258.         // タグのアトリビュート・縮小表示等、高度なHTML機能を提供?    //WZ4.00Ab 990117 
  259. #define WZFUNC_HEADLINECONVERT (1)
  260.         // 見出しの変換・見出しスタイルを提供?    //WZ4.00Ab 990118 
  261. #define WZFUNC_VERTICAL    (WINDOWSMT&&WZFUNC_EDITOR)
  262.         // 縦書きあり?    //XZ0.1 990525 
  263. #define WZFUNC_MEMOEDIT    (0)
  264.         // MEMOEDITモードを提供?            //WZ3.90L 981124 とりあえず使わない。
  265. #define WZFUNC_TMLPP    (__DEV__&&WZFUNC_EDITOR)
  266.         // TMLプリプロセッサ                //WZ4.00Db 000222 new
  267.  
  268. // 評価用の試作機能
  269. #define WZFUNC_EXSAMPLE    WINDOWSMT            //WZ4.00Dd 000611 new
  270.         // 試供機能の提供?
  271. #define WZFUNC_WRITING    WZFUNC_EXSAMPLE
  272.         // 原稿作成用の高度な機能を提供?    //WZ4.00Da 000206 new
  273.  
  274. //##以上、RCでも有効
  275.  
  276. #ifndef RC_INVOKED
  277.  
  278. //##TX-Cの基本定義
  279.  
  280. #if __TXC__
  281.  
  282. // LPSTR等が<char>なので、漢字を扱うのが不便。
  283. // そこで<char=unsigned char>とする
  284. #pragma char=unsigned
  285.  
  286. #define VOID                void
  287. #define PASCAL              _pascal
  288. #define CDECL               _cdecl
  289. #define FAR
  290. #define NEAR
  291. typedef int                 BOOL;
  292. #define FALSE               0
  293. #define TRUE                1
  294. typedef unsigned char       BYTE;
  295. typedef unsigned short      WORD;
  296. typedef unsigned long       DWORD;
  297. typedef unsigned int        UINT;
  298. typedef signed long         LONG;
  299. typedef int                 INT;    //1.00F EXEのint型
  300.  
  301. #define MAKELONG(a, b)      ((LONG)(((WORD)(a)) | (((DWORD)((WORD)(b))) << 16)))
  302. #define LOWORD(l)           ((WORD)(l))
  303. #define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
  304. #define LOBYTE(w)           ((BYTE)(w))
  305. #define HIBYTE(w)           ((BYTE)(((WORD)(w) >> 8) & 0xFF))
  306. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  307. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  308.  
  309. typedef UINT WPARAM;
  310. typedef LONG LPARAM;
  311. typedef LONG LRESULT;
  312. #define MAKELPARAM(low, high)   ((LPARAM)MAKELONG(low, high))
  313. #define MAKELRESULT(low, high)  ((LRESULT)MAKELONG(low, high))
  314.  
  315. #ifndef NULL
  316.     #define NULL                0
  317. #endif
  318.  
  319. typedef char NEAR*          PSTR;
  320. typedef char NEAR*          NPSTR;
  321. typedef char FAR*           LPSTR;
  322. typedef const char FAR*     LPCSTR;
  323.     // LPSTR,LPCSTRはsigned charで、日本語が扱いにくいので使わない
  324. typedef BYTE NEAR*          PBYTE;
  325. typedef BYTE FAR*           LPBYTE;
  326. typedef int NEAR*           PINT;
  327. typedef int FAR*            LPINT;
  328. typedef WORD NEAR*          PWORD;
  329. typedef WORD FAR*           LPWORD;
  330. typedef long NEAR*          PLONG;
  331. typedef long FAR*           LPLONG;
  332. typedef DWORD NEAR*         PDWORD;
  333. typedef DWORD FAR*          LPDWORD;
  334. typedef void NEAR*          PVOID;//1.00F
  335. typedef void FAR*           LPVOID;
  336.  
  337. typedef UINT size_t;
  338.  
  339. #define MAKELP(sel, off)    ((void FAR*)MAKELONG((off), (sel)))
  340. #define SELECTOROF(lp)      HIWORD(lp)
  341. #define OFFSETOF(lp)        LOWORD(lp)
  342. #define FIELDOFFSET(type, field)    ((int)(&((type NEAR*)1)->field)-1)
  343.  
  344. #ifdef STRICT
  345. typedef void *HANDLE;
  346. #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
  347. #else
  348. typedef PVOID HANDLE;
  349. #define DECLARE_HANDLE(name) typedef HANDLE name
  350. #endif
  351. typedef HANDLE *PHANDLE;
  352.  
  353. #define __stdcall _pascal
  354. #define __import
  355. #define WINAPI      __stdcall __import
  356. #define CALLBACK    __stdcall
  357. DECLARE_HANDLE(HWND);
  358. DECLARE_HANDLE(HMENU);
  359. typedef int HFILE;
  360. #define HFILE_ERROR ((HFILE)-1)
  361. DECLARE_HANDLE(HGLOBAL);
  362. DECLARE_HANDLE(HLOCAL);    //WCE1.01 980313 
  363. DECLARE_HANDLE(HINSTANCE);
  364. typedef HINSTANCE HMODULE;
  365. DECLARE_HANDLE(HBITMAP);
  366. DECLARE_HANDLE(HPEN);
  367. DECLARE_HANDLE(HBRUSH);
  368. DECLARE_HANDLE(HRGN);
  369. DECLARE_HANDLE(HPALETTE);
  370. DECLARE_HANDLE(HFONT);
  371. DECLARE_HANDLE(HICON);
  372. DECLARE_HANDLE(HDC);
  373. DECLARE_HANDLE(HTREEITEM);    //WZ4.00Ca 991128 new
  374. typedef HICON HCURSOR;
  375. typedef DWORD                COLORREF;
  376. typedef int (FAR WINAPI *FARPROC)();
  377. #define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  378. typedef struct tagRECT {
  379.     LONG left;
  380.     LONG top;
  381.     LONG right;
  382.     LONG bottom;
  383. } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
  384. typedef struct tagPOINT {//2.94 
  385.     LONG x;
  386.     LONG y;
  387. } POINT;
  388. typedef struct tagSIZE {//2.94 
  389.     LONG cx;
  390.     LONG cy;
  391. } SIZE;
  392.  
  393. // Virtual key codes
  394. #define VK_BACK             0x08    // [Backspace]
  395. #define VK_TAB              0x09    // [Tab]
  396. #define VK_CLEAR            0x0C    // 
  397. #define VK_RETURN           0x0D    // [Enter]
  398. #define VK_ESCAPE           0x1B    // [Esc]
  399. #define VK_PRIOR            0x21    // [PageUp]
  400. #define VK_NEXT             0x22    // [PageDown]
  401. #define VK_END              0x23    // [End]
  402. #define VK_HOME             0x24    // [Home]
  403. #define VK_LEFT             0x25    //
  404. #define VK_UP               0x26    //
  405. #define VK_RIGHT            0x27    //
  406. #define VK_DOWN             0x28    //
  407. #define VK_INSERT           0x2D    // [Ins]
  408. #define VK_DELETE           0x2E    // [Del]
  409. #define VK_HELP             0x2F    // [Help]
  410.  
  411. #define LF_FACESIZE            32
  412. #define IDOK                1
  413. #define IDCANCEL            2
  414. #define IDABORT                3
  415. #define IDRETRY                4
  416. #define IDIGNORE            5
  417. #define IDYES                6
  418. #define IDNO                7
  419.  
  420. // Windowsからコールバックされる関数
  421. #define TXCALLBACK    __stdcall
  422.  
  423. //WCE1.01 980313 
  424. typedef WORD                    WCHAR;
  425. typedef short                    SHORT;
  426. #define LPSECURITY_ATTRIBUTES    LPVOID
  427. typedef WORD*                    LPWSTR;
  428. typedef const WORD*                LPCWSTR;
  429. typedef struct _FILETIME {
  430.     DWORD dwLowDateTime;
  431.     DWORD dwHighDateTime;
  432. } FILETIME;
  433.  
  434. // for TXE Menu実現
  435. #define IDM_MAINMENU_TXE        30025    // _idm.hでも定義。
  436.  
  437. #endif    // __TXC__
  438.  
  439. //##基本定義
  440.  
  441. #define EXPORT __declspec(dllexport)
  442. //#define EXPORT extern "C" __declspec(dllexport)    // VC++でエラーになった
  443.  
  444. #if !UNIX||defined(__TXC__)    //XZ0.1 990524 staticのwcharの配列をL"abc"のようにして定義する場合はTWCHAR("abc")の様に記述する for UNIX
  445.     #define TWCHAR(quote)    L##quote
  446. #endif
  447.  
  448. typedef unsigned char    mchar;            // ShiftJIS char
  449. typedef WCHAR            wchar;            // UNICODE char
  450. typedef mchar*            pmchar;            //WCE1.01 980314 
  451. typedef BYTE            BBOOL;
  452. typedef long            TIME;
  453. typedef struct tagtx    tx;
  454. typedef struct tagtx    TX;
  455. typedef signed char        SIGNED_BYTE;
  456. typedef signed short    SIGNED_WORD;
  457. typedef signed long        SIGNED_DWORD;
  458. typedef WORD            TXCHAR;            // 漢字・CR+LFも含めた文字列
  459. typedef BYTE            FBOOL;            // 0か1のみのフラグ(WORD flag:1)と交換可
  460. typedef BYTE            CBOOL;            // ++,--するフラグ(WORD flag:2以上)と交換可
  461. typedef UINT IDM;                        // IDM_xxx    //WZ3.90I 981102 new 
  462. //WCE1.01 980224 TCHARは、Windowsで定義されている。WCHAR or char
  463. #ifdef UNICODE
  464.     typedef WCHAR                tchar;
  465.     #define vsprintf_W            wvsprintf
  466.     #define sprintf_W            wsprintf
  467.     #define tstrlen                wstrlen
  468.     #define tstrcpy                wstrcpy
  469.     #define tstricmp            wstricmp
  470.     #define tcchof                wcchof
  471.     #define tsprintf            wsprintf
  472.     #define tatol                watol
  473.     #define tstrchr                wstrchr
  474.     #define CreateFile_W        CreateFile
  475.     #define DeleteFile_W        DeleteFile
  476.     #define CreateFileMapping_W    CreateFileMapping
  477.     #define CreateMutex_W        CreateMutex
  478.     #define RemoveDirectory_W    RemoveDirectory
  479.     #define CreateDirectory_W    CreateDirectory
  480.     #define CopyFile_W            CopyFile
  481.     #define MoveFile_W            MoveFile
  482.     #define SetFileAttributes_W    SetFileAttributes
  483.     #define SetWindowText_W        SetWindowText
  484.     #define GetWindowText_W        GetWindowText
  485.     #define SetDlgItemText_W    SetDlgItemText
  486.     #define GetDlgItemText_W    GetDlgItemText
  487.     #define ListBox_AddString_W    ListBox_AddString
  488.     #define ListBox_FindStringExact_W    ListBox_FindStringExact
  489.     #define ComboBox_AddString_W ComboBox_AddString
  490.     #define FindFirstFile_W        FindFirstFile
  491.     #define FindNextFile_W        FindNextFile
  492.     #define CreateWindow_W        CreateWindow
  493.     #define CreateWindowEx_W    CreateWindowEx
  494.     #define RegisterClass_W        RegisterClass
  495.     #define GetClassName_W        GetClassName
  496.     #define DrawText_W            DrawText
  497.     #define ShellExecuteEx_W    ShellExecuteEx
  498.     #define LoadLibrary_W        LoadLibrary
  499.     #define SetFileAttributes_W    SetFileAttributes
  500. #else
  501.     typedef unsigned char        tchar;
  502.     #define vsprintf_A            wvsprintf
  503.     #define sprintf_A            wsprintf
  504.     #define tstrlen                strlen
  505.     #define tstrcpy                strcpy
  506.     #define tstricmp            stricmp
  507.     #define tcchof                cchof
  508.     #define tsprintf            wsprintf
  509.     #define tatol                atol
  510.     #define tstrchr                strchr
  511.     #define SetWindowText_A        SetWindowText
  512.     #define GetWindowText_A        GetWindowText
  513.     #define SetDlgItemText_A    SetDlgItemText
  514.     #define GetDlgItemText_A    GetDlgItemText
  515.     #define ListBox_AddString_A            ListBox_AddString
  516.     #define ListBox_FindStringExact_A    ListBox_FindStringExact
  517.     #define ComboBox_AddString_A        ComboBox_AddString
  518.     #define TextOut_A                    TextOut
  519.     #define DrawText_A                    DrawText
  520.     #define CreateFile_A                CreateFile
  521.     #define LoadLibrary_A        LoadLibrary
  522.     #define myGetProcAddress_A    GetProcAddress
  523. #endif
  524.  
  525. #define rectCx(r)    ((r)->right - (r)->left)
  526. #define rectCy(r)    ((r)->bottom - (r)->top)
  527. #define ScreenToClientRect(hwnd,rect)    MapWindowPoints(NULL,hwnd,(POINT*)(rect),2)
  528. #define ClientToScreenRect(hwnd,rect)    MapWindowPoints(hwnd,NULL,(POINT*)(rect),2)
  529. #define rectDec(r)    {(r)->left++;(r)->top++;(r)->right--;(r)->bottom--;}
  530. #define rectInc(r)    {(r)->left--;(r)->top--;(r)->right++;(r)->bottom++;}
  531.  
  532. #if WINDOWSCE
  533. //    #define _hbrushBtnFace        GetStockObject(WHITE_BRUSH)    //WZ4.00Ca 991228 
  534.     //WCE1.01 980315 CE2.0でもないみたい
  535.     #define LPtoDP(hdc,p,n)
  536.     #define DPtoLP(hdc,p,n)
  537.     //WZ4.00Ab 990112 
  538.     #if WINDOWSCE1    //WZ4.00Ac 990204 CE1.0でIDM_COPYができなかった。CE1.0ではLMEM_MOVEABLEが使えないみたい。
  539.         #define GMEM_MOVEABLE    LMEM_FIXED
  540.     #else
  541.         #define GMEM_MOVEABLE    LMEM_MOVEABLE
  542.     #endif
  543.     #define GMEM_FIXED        LMEM_FIXED    //WZ4.00Ac 990204 
  544.     #define GMEM_SHARE        0
  545.     #define GlobalLock        LocalLock
  546.     #define GlobalSize        LocalSize
  547.     #define GlobalUnlock    LocalUnlock
  548.     #define GlobalReAlloc    LocalReAlloc
  549.     #define GlobalAlloc        LocalAlloc
  550.     #define GlobalFree        LocalFree
  551.     #define MoveToEx(hdc,x,y,p)    MoveTo(hdc,x,y)
  552. #endif
  553. extern HPEN _hpenBtnShadow;        // Windowsシステム色のペン
  554. extern HPEN _hpenBtnShine;
  555. extern HPEN _hpenWindowFrame;
  556. extern HPEN _hpenBtnFace;
  557. extern HBRUSH _hbrushBtnFace;    // Windowsシステム色のブラシ
  558.  
  559. #define TEXTCHAR_UNICODE    0    // 0:TEXTBUFFはTC_SJIS/TC_SINGLEBYTE
  560.                                 // 1:TEXTBUFFはTC_UNICODE
  561. #define TB_EUC            UNIX    // TEXTBUFFはTC_EUCかどうか    //XZ0.1 990528 
  562.  
  563. #define CHAR_TAB    0x09    //
  564. #define CHAR_CR        0x0D    //
  565. #define CHAR_LF        0x0A    //
  566. #define CHAR_FF        0x0C    // 改ページは行を改めるが改段ではない
  567.                             // CHAR_LFとは異なる
  568. #define CHAR_EOF    0x1A    //
  569. #define CHAR_ESC    0x1B    //
  570. #define CHAR_CRLF    0x0D0AU    //
  571. #if TB_EUC
  572.     #define CHAR_JSPACE    0xA1A1    //WZ4.00Bj 990830 new
  573. #else
  574.     #define CHAR_JSPACE    0x8140    //WCE1.01 980504 全角空白
  575. #endif
  576. // EUC
  577. #define CHAR_EUC_KANA    0x8E    //XZ0.1 990528 
  578.  
  579. //WZ3.90N 981130 半角カナの定義
  580. // VC++で"/J"オプションを付けないと、'ー'は-80になってしまい、どうにもならない。
  581. //WZ3.90N 981130 この影響で、ーが半角に変換できなかった。
  582. #define CHAR_KANA_ONBIKI    0xB0    // 'ー'
  583. #define CHAR_KANA_NAKAGURO    0xA5    // '・'
  584. #define CHAR_KANA_DAKUTEN    0xDE    // '゙'
  585. #define CHAR_KANA_HANDAKUTEN 0xDF    // '゚'
  586.  
  587. #define _huge
  588. #define TXAPI
  589. #define TXAPIBASE
  590. #define TXCMD
  591. #define TXCMDBASE
  592. #define TXHIGH
  593. #define TXHIGH_COND            // 条件付きTXHIGH(ibuffがTEXT2 or ibuff段落がギャップをまたがらない)    //WZ3.90I 981029 new
  594. #define TXHIGH_THROUGH
  595. #define TXUI
  596. #define TXGAPED
  597. #define INTERNAL
  598.  
  599. #define __CCJAPAN__                // 日本語Cコンパイラ依存部分
  600. #define __BYTEORDERLOW__        // バイト順(low-high)に依存部分
  601. #define __SINGLETASK__            // シングルスレッド依存部分
  602. #define __ANSICODE__            // ANSI文字コード依存部分
  603. #define __X86__                    // x86依存部分
  604. #define __ALIMENT__                // アライメント依存部分
  605. #define __END__                    // 依存部分終了
  606.  
  607. //WZ4.00Ea 001119 new bohigh(): byte順がH,Lの場合1、L,Hの場合0
  608. #if WINDOWSMT
  609.     #define bohigh()    FALSE
  610. #else
  611.     extern WORD _bock;
  612.     #define bohigh()    (((BYTE*)&_bock)[0] == 0x12)
  613. #endif
  614.  
  615. #define beep()        MessageBeep(-1)
  616. #define waitms(ms)    Sleep(ms)    //WZ4.00Bg 990719 UNIXではwait()システムコールと重複するのでwaitms()に変更。
  617. #define beep2()        {waitms(500);beep();waitms(100);beep();waitms(500);}
  618.  
  619. #define CCHPATHNAME        260
  620. #define CCHFILENAME        260
  621.  
  622. #define cchof(str)    (sizeof(str) / sizeof(mchar))
  623.                             // mchar配列として定義した変数の要素数
  624.                             // (変数に格納できる文字数)を返す
  625. #define lchof(str)    ((sizeof(str) / sizeof(mchar))-1)
  626.                             // mchar配列として定義した変数の
  627.                             // 文字列の長さ(最後のNULLは除く)を返す
  628. #define wcchof(str)    (sizeof(str) / sizeof(wchar))
  629.                             // wchar配列として定義した変数の要素数
  630.                             // (変数に格納できる文字数)を返す
  631. #define wlchof(str)    ((sizeof(str) / sizeof(wchar))-1)
  632.                             // wchar配列として定義した変数の
  633.                             // 文字列の長さ(最後のNULLは除く)を返す
  634. #define cchtxstr(str)        CCHTXSTR
  635.                             // txstrに格納できる文字数+1を返す
  636.  
  637. #define divmod(n,v)    (((n) / (v)) + (((n) % (v)) != 0))
  638.                             // nをdで割った結果を返す
  639.                             // nがdで割り切れないときは+1して返す
  640.                             //WCE1.01 980226 new
  641. #define mysmall(a,b)        ((a) < (b) ? (a) : (b))
  642. #define mybig(a,b)            ((a) >= (b) ? (a) : (b))
  643. #define myabs(i)            ((i) < 0 ? -(i) : (i))            //WZ3.90J 981108 
  644. #define myminimum(n,min)    (((n) >= (min)) ? (n) : (min))    //WZ3.90N 981130 nがmin未満ならminを返す
  645.  
  646. // 基本型定義
  647. typedef DWORD    NLINE;    // 表示行番号
  648. typedef DWORD    NPARA;    // 論理行番号
  649. typedef WORD    NPAGE;    // ページ番号
  650. typedef UINT    IMEM;    // CPUネイティブのメモリアクセスインデックス型
  651. typedef DWORD    IFILE;    // テキストファイルインデックス
  652.                         // gap部を除いたテキストアドレス
  653.                         // TEXTCHAR単位
  654. typedef UINT    IBUFF;    // テキストバッファインデックス
  655.                         // gap部を含むテキストアドレス
  656.                         // TEXTCHAR単位
  657.  
  658. #define IBUFF_ERROR        ((IBUFF)0xFFFFFFFFU)
  659. #define IFILE_ERROR        0xFFFFFFFF    //WCE0.92 970918 
  660. #define DWORD_MAX        0xFFFFFFFF    //WZ3.90I 981029 DWORDの最大値
  661. #ifndef INT_MAX    //WZ4.00Bj 990831 ifndefチェックを追加
  662.     #define INT_MAX            0x7FFFFFFF    //WZ3.90I 981029 intの最大値
  663. #endif
  664.  
  665. // 文字数定義
  666. #define CCHLINE            512U    // 表示行一行の最大文字数
  667.                                 // (\0、禁則追い出し域も含む)
  668. #define CCHWORD            80        // 一般的な文字列の長さ
  669. #define CCHSWORD        40        // CCHWORDの半分
  670. #define CCHNAME            30        // 各種識別子
  671. #define CCHNUMBER        40        // ltoa最大バッファ使用数
  672. #define MINWIDTH        10U        // 最小折り返し幅
  673. #define MAXWIDTH (CCHLINE-11U)    // 最大折り返し幅(禁則域は除く)
  674. #define MAXTABSIZE      64        // 最大タブサイズ
  675. #define MAXMARK            5        // 最大マーク数
  676. #define CCHMARK            40        // マーク文字列
  677. #define MAXREFERPOS        10        // 最大最近参照した位置
  678. #define CCHTXSTR        260        // txstrの文字数(CCHPATHNAMEと同じ)
  679. #if WINDOWSCE    //WZ4.00Dd 000526 識別子CCHSEARCHを新設
  680.     #define CCHSEARCH    CCHWORD    // 検索文字列のサイズ(最大CCHLINE程度)
  681. #else
  682.     #define CCHSEARCH    CCHTXSTR// 検索文字列のサイズ(最大CCHLINE程度)
  683.                                 //WZ4.00Dd 000526 (!PWZ)検索・置換文字列指定を80から260に拡大。
  684. #endif
  685.  
  686. // 廃止したが旧版からの変換操作のため残す。
  687. #define CCHLPSTYLE        40        // 印刷スタイル名//WZ4.00Ee 010419 廃止
  688. #define CCHSTYLENAME    40        // スタイル名//WZ4.00Ee 010419 廃止
  689.  
  690. // txstr
  691. typedef struct tagtxstr {
  692.     mchar szString[CCHTXSTR];
  693. } txstr;
  694. #if __TXC__
  695.     typedef txstr TXSTR;
  696. #else
  697.     typedef txstr* TXSTR;    //WZ4.00Ca 000215 LPVOIDから変更。
  698.     #define TXAPI_(n)    // TXAPI export number
  699.     #define _varyarg
  700. #endif
  701.  
  702. //##双方向リストサポート
  703. //WZ4.00Bm 990930 new (_windows.hの内容と共通)
  704.  
  705. #ifndef listd_itemadd
  706.  
  707. #define listd_itemadd(item,root)    \
  708.     if (root) {\
  709.         (item)->next = root;\
  710.         (root)->prev = item;\
  711.     }\
  712.     root = item
  713. #define listd_itemdel(item,root)    \
  714.     if ((item)->prev) {\
  715.         (item)->prev->next = (item)->next;\
  716.     } else {\
  717.         root = (item)->next;\
  718.     }\
  719.     if ((item)->next) {\
  720.         (item)->next->prev = (item)->prev;\
  721.     }
  722. #define listd_itempopup(item,root)    \
  723.     {\
  724.         listd_itemdel(item,root);\
  725.         item->prev = item->next = NULL;\
  726.         listd_itemadd(item,root);\
  727.     }
  728. #define listd2_itemadd(item,root,tail)    \
  729.     if (root) {\
  730.         (item)->next = root;\
  731.         (root)->prev = item;\
  732.     } else {\
  733.         tail = item;\
  734.     }\
  735.     root = item
  736. //WZ4.00Ea 001107 listd2_itemaddlast debug
  737. #define listd2_itemaddlast(item,root,tail)    \
  738.     if (root) {\
  739.         (tail)->next = item;\
  740.         (item)->prev = tail;\
  741.         tail = item;\
  742.     } else {\
  743.         root = tail = item;\
  744.     }
  745. #define listd2_itemdel(item,root,tail)    \
  746.     if ((item)->prev) {\
  747.         (item)->prev->next = (item)->next;\
  748.     } else {\
  749.         root = (item)->next;\
  750.     }\
  751.     if ((item)->next) {\
  752.         (item)->next->prev = (item)->prev;\
  753.     } else {\
  754.         tail = (item)->prev;\
  755.     }
  756. #define listd2_itempopup(item,root,tail)    \
  757.     {\
  758.         listd2_itemdel(item,root,tail);\
  759.         item->prev = item->next = NULL;\
  760.         listd2_itemadd(item,root,tail);\
  761.     }
  762. #define listd2_itempopdown(item,root,tail)    \
  763.     {\
  764.         listd2_itemdel(item,root,tail);\
  765.         item->prev = item->next = NULL;\
  766.         listd2_itemaddlast(item,root,tail);\
  767.     }
  768.  
  769. #endif    // !listd_itemadd
  770.  
  771. //##クリップボードハンドル
  772.  
  773. typedef UINT HCLIP;                    //1.00H2 HWND->UINT //1.00F WORD->HWND
  774. #define HCLIP_ERROR        ((HCLIP)999)//2.00E HCLIP_NULLは廃止
  775. #define HCLIP_PRIVATE    ((HCLIP)0)    // プライベートテキストスタック(テキスト固有)
  776.                                     // WZ32はマルチタスクなので、HCLIP_TSは他のWZのタスク
  777.                                     // と干渉します。
  778.                                     // スタックにPushしてPopする前に
  779.                                     // 他のWZがスタックを操作してしまうかもしれません。
  780.                                     // HCLIP_PRIVATEは他のWZとのデータ交換には使えない
  781.                                     // 代わりに他のWZのタスクと干渉しません
  782.                                     // WZ3まではプロセス固有でしたが、WZ4からはテキスト固有になりました。
  783. #define HCLIP_TS        ((HCLIP)1)    // テキストスタック
  784. #define HCLIP_WIN        ((HCLIP)2)    // Windowsクリップボード
  785.                                     // ここでは0x00を含むバイナリデータは扱えない
  786.                                     // HCLIP_WORKxxxでは扱える
  787.  
  788. typedef struct tagCLIPITEM {
  789.     HGLOBAL hGlobal;        // データ
  790.     IFILE size;                // データサイズ(末尾の\0は除く)
  791.     int fClip;                // fClip
  792.     FBOOL fClipTxfEnable;    // データにTXFタグが入っている可能性がある?
  793.     struct tagCLIPITEM* prev;
  794.     struct tagCLIPITEM* next;
  795. } CLIPITEM;
  796.  
  797. //##汎用設定ファイル操作
  798.  
  799. //##拡大可能メモリブロック(汎用)
  800. //PWZ2BETA0.6 980621 new
  801. typedef struct {
  802.     LPBYTE pTop;
  803.     LPBYTE pCur;
  804.     DWORD sizeAlloc;
  805.     DWORD sizeExpand;
  806. } MEMBLOCK;
  807.  
  808. void memblockInit(MEMBLOCK* mb,int sizeAlloc,int sizeExpand);
  809. void memblockTerm(MEMBLOCK* mb);
  810. DWORD memblockGetSize(MEMBLOCK* mb);
  811. LPVOID memblockAdd(MEMBLOCK* mb,int sizeAdd);
  812. BOOL memblockAddEx(MEMBLOCK* mb,int sizeAdd);
  813. BOOL memblockCheckSize(MEMBLOCK* mb,UINT size);
  814. BOOL memblockAddMem(MEMBLOCK* mb,LPVOID pAdd,int sizeAdd);
  815. BOOL memblockAddString(MEMBLOCK* mb,mchar* szString);
  816. void memblockDelAll(MEMBLOCK* mb);
  817.  
  818. //##VirtualAlloc support(汎用)
  819. //WZ3.90J 981109 new
  820. //// 拡大可能メモリブロックはこれに置き換えるべき。
  821.  
  822. // VirtualAllocコンテキスト
  823. typedef struct {
  824.     LPBYTE pagetop;        // アドレス空間の先頭
  825.     LPBYTE pageend;        // アドレス空間の末尾
  826.     UINT pagesize;        // ページサイズ
  827.     LPBYTE p;            // 現在参照中の位置
  828.     LPBYTE pEnd;        // 領域の末尾
  829. } VALLOC;
  830.  
  831. BOOL vaInit(VALLOC* va,UINT kbMax);
  832. BOOL vaCheckAdd(VALLOC* va,UINT add);
  833. void vaFree(VALLOC* va);
  834.  
  835. //##パーティションウィンドウ
  836. //WZ3.90F 980815 
  837.  
  838. #if !WINDOWSCE
  839. #if !__TXC__
  840. wchar wszclassPartition[];
  841. #endif
  842. #define CX_PARTITION        6            // 幅    //WZ3.90O 981202 5->6
  843. // ウィンドウスタイル
  844. #define WSPB_SEPARATOR        0x0001L        // dialog box用セパレータ?
  845. #define WSPB_SMALLFONT        0x0002L        //2.99D 970330 小さいフォントを使う?
  846. #define WSPB_NOCLIENTEDGE    0x0004L        //WZ4.00Bl 990922 WS_EX_CLIENTEDGE対応。
  847. #if WINDOWSCE
  848.     #define WSPB_STD            WS_BORDER
  849.     #define CX_PARTITION_FLAT    CX_PARTITION
  850. #else
  851.     #define WSPB_STD            WSPB_NOCLIENTEDGE
  852.     #define CX_PARTITION_FLAT    (CX_PARTITION-2)    // WSPB_NOCLIENTEDGEの場合のCX
  853. #endif
  854. // メッセージ
  855. //        message                                        wParam        lParam    備考
  856. #define WMPB_SETRANGE            (WM_USER +  1)    //    min            max
  857. #define WMPB_GETRATE            (WM_USER +  2)    //    void        void
  858. #define WMPB_SETRATE            (WM_USER +  3)    //    rate        void
  859. #define WMPB_GETRANGE            (WM_USER +  4)    //    void        void    return:MAKELONG(min,max)    //WZ3.90J 981112 
  860. // 通知
  861. #if !__TXC__
  862. typedef struct {
  863.     NMHDR hdr;    //PWZ2BETA0.3 980523 hdrが先頭にないといけなかった
  864.         #define PARTITIONN_SETRANGE    10
  865.     int rate;    // 現在のレート
  866. } PARTITION_NOTIFY;
  867. #endif
  868. #endif    // !WINDOWSCE
  869.  
  870. //##ツールバー
  871.  
  872. #if !WINDOWSCE
  873. enum {ICONSET_STD=0,ICONSET_VIEW,ICONSET_WZ,ICONSET_FILE};
  874.  
  875. typedef struct tagTOOLBARITEM {    // ボタンコンテキスト
  876.     mchar szCaption[CCHWORD];        // TIPヘルプ
  877.     mchar szCmd[60];                //WZ3.90J 981108 コマンド名、マクロ名 for custmize
  878.     int idm;                        // コマンド番号
  879.     mchar szfilenameIcon[160];        // アイコンのファイル名
  880.                                     //WZ3.90J 981108 CCHWORDでは短すぎなので拡大
  881.     int iIcon;                        // szfilenameIconでの位置(0origin)
  882.     BYTE iconset;                    //WZ3.90J 981108 使用するアイコンビットマップセット
  883.     BYTE fLoadedEx:1;                // ICONSET_FILEの場合、ロードしたかどうか?
  884.     struct tagTOOLBARITEM* next;
  885. } TOOLBARITEM;
  886.  
  887. typedef struct {    // ツールバーコンテキスト
  888.     TOOLBARITEM* root;
  889.     HWND hwnd;
  890.     HWND hwndParent;
  891.     HWND hwndCBCB;                    // 検索ボックスウィンドウ
  892.     HWND hwndInfo;                    // 情報ボックスウィンドウ
  893.     HWND hwndLpSel;                    // 印刷スタイル選択ドロップダウンリストボックス
  894.     HWND hwndLpSet;                    // 印刷スタイル設定ボタン
  895.     struct tagKEY* key;                // チップヘルプにアクセスキーを表示するために使用。NULLでも可。    //WZ4.00Ca 991212 new
  896.     BYTE fIconView:1;                // VIEWアイコンがある
  897.     BYTE fIconWz:1;                    // WZ標準のアイコンがある
  898.     BYTE fIconEx:1;                    // STD,VIEW,WZ以外のアイコンがある
  899.     BYTE fSearchBox:1;                // 検索ボックスがある
  900.     BYTE fInfoBox:1;                // 情報ボックスがある
  901.     BYTE fPrintstyleBox:1;            //WZ3.90L 981117 印刷スタイル選択ボックスがある
  902. } TOOLBARCONTEXT;
  903.  
  904. HBITMAP toolbaritemLoadBitmap(TOOLBARITEM* item);
  905.  
  906. #endif
  907.  
  908. #if WINDOWSCE
  909.     #define toolbarSetEnableIdm(context,idm,f)
  910.     #define cmdbarSetEnableIdm(hwnd,idm,f)    SendMessage(hwnd,TB_SETSTATE,idm,f ? TBSTATE_ENABLED : 0)    //WZ4.00Ab 990124 
  911. #else
  912. TOOLBARCONTEXT* TXAPI_(548) toolbarOpen(HWND hwndParent,mchar* szApp,mchar* szName);
  913. void TXAPI_(549) toolbarProcWM_SIZE(TOOLBARCONTEXT* context,RECT* r);
  914. int TXAPI_(550) toolbarGetHeight(TOOLBARCONTEXT* context);
  915. BOOL TXAPI_(551) toolbarProcNotify(TOOLBARCONTEXT* context,LPARAM lParam);
  916. void TXAPI_(552) toolbarClose(TOOLBARCONTEXT* context);
  917. void TXAPI_(553) toolbarSetEnableIdm(TOOLBARCONTEXT* context,int idm,BOOL fEnable);
  918. BOOL TXAPI_(554) toolbarGetEnableIdm(TOOLBARCONTEXT* context,int idm);
  919. TOOLBARCONTEXT* TXAPI_(555) toolbarLoad(mchar* szApp,mchar* szName);
  920. TX* TXAPI_(556) toolbarOpenText(mchar* szApp,mchar* szName);
  921. int szidmToIdmEx(mchar* szidm,int lchidm);
  922. #endif
  923.  
  924. //##WZリストビュー
  925.  
  926. void listRegister(void);
  927.  
  928. //##ステータスバー
  929.  
  930. #define MAX_STATUSBAR_PANE    10
  931. typedef struct {
  932.     mchar sz[30];    // 表示内容
  933.     int cx;            // 幅(-1なら右端まで)
  934. } STATUSBAR_PANE;
  935. #define STATUSBAR_PANE_ALL            -1
  936. #define STATUSBAR_PANE_LOCATE        0
  937. #define STATUSBAR_PANE_2STROKE        1
  938. #define STATUSBAR_PANE_INSERT        2
  939. #define STATUSBAR_PANE_EDITED        3
  940. #define STATUSBAR_PANE_SELECTED        4
  941. #define STATUSBAR_PANE_FORMING        5    //WCE0.95 970923 整形中かどうかステータスバーに表示
  942. #define STATUSBAR_PANE_PAGINGMODE    6
  943. #define STATUSBAR_PANE_FILENAME        7    //WCE0.93 970919 ステータスバーにファイル名を表示
  944. void TXAPI_(1091) txStatusbarSetPaneString(TX* text,int ipane,mchar* sz);
  945. int statusbarGetCy(TX* text);
  946. void statusbarFlushDispInsert(TX* text);
  947. int statusbarPointToPane(TX* text,int x);
  948. void statusbarFlushDispSelect(TX* text);
  949. void statusbarPrint(TX* text,int ipane);
  950. int statusbarGetPaneWidth(HWND hwndStatusbarWin,mchar* szString);
  951. int statusbarSetSimple(HWND hwndStatusbarWin,BOOL fSimple);
  952. int statusbarGetHeight(HWND hwndStatusbarWin);
  953.  
  954. //##ファイル参照ダイアログ
  955.  
  956. typedef struct {
  957.     WORD fSaveAs:1;                // 「名前を付けて保存」ダイアログを表示。
  958.     WORD fSaveAsVz:1;            // VZライクの「名前を付けて保存」ダイアログ
  959.                                 // fSaveAsもTRUEにしてください。
  960.     WORD fSaveTo:1;                // 始めに指定したファイル名をできるだけ変化させない for 添付ファイルの保存先の指定
  961.                                 // fSaveAsもTRUEにしてください。
  962.     WORD fOpenVz:1;                // VZライクの「ファイルを開く」ダイアログ
  963.     WORD fModeSaveAs:1;            // modeSaveAsの選択を行う?
  964.     WORD fNoOverwriteConfirm:1;    // 上書き確認をしない
  965.     WORD fReadonly:1;            //WZ3.90I 981103 リードオンリーで開く?
  966.                                 //WZ3.90J 981111 ダイアログでの選択結果が返されます。
  967.     WORD fEnableIllegalChar:1;    //WZ4.00Aa 990109 ファイル名に*などの無効文字列を許す?
  968.     WORD fNoAddHist:1;            //WZ4.00Bj 990813 ヒストリに追加しない?
  969.     WORD fEnableFiler:1;        //WZ4.00Bn 991006 FILERを起動しても良い?
  970.     WORD fNoAfn:1;                //WZ4.00Dd 000526 ファイル名を自動決定しない?
  971.     WORD fReserved:5;
  972.     BYTE modeSaveAs;            // 「プレーンテキストへ変換」など。
  973.     BYTE reserved[10];
  974. } TXOFN_ARG;
  975.  
  976. BOOL TXAPI_(398) uiSelectFolderW(wchar wszfilename[CCHPATHNAME],wchar* wszCaption);
  977. BOOL TXAPI_(803) uiSelectFolder(mchar szfilename[CCHPATHNAME],mchar* szCaption);
  978. BOOL ofnSelectFolderW(wchar* wszfilename,wchar* wszCaption,TXOFN_ARG* arg);
  979. #if GENERAL
  980. BOOL ofnGetOpenFileNameW(wchar* wszfilename,wchar* wszCaption,TXOFN_ARG* arg);    //WZ4.00Bo 991011
  981. #endif
  982.  
  983. //##メモリ
  984.  
  985. LPVOID TXAPI_(880) memAlloc(DWORD size);
  986. LPVOID TXAPI_(881) memAllocZeroinit(DWORD size);
  987. void TXAPI_(882) memFree(LPVOID p);
  988. LPVOID TXAPI_(483) zmalloc(int size);
  989. LPVOID memResize(LPVOID p,DWORD size);
  990. LPVOID memdup(LPVOID p,UINT size);
  991. #if !__TXC__
  992.     #if __MEMORYDEBUG__
  993.         void _myfree(LPVOID p,mchar* szfile,int line);
  994.         #define free(p)    _myfree(p,__FILE__,__LINE__)
  995.     #else
  996.         void _myfree(LPVOID p);
  997.         #define free(p)    _myfree(p)
  998.     #endif
  999. typedef struct {
  1000.     HANDLE handle;
  1001.     LPBYTE mem;
  1002. } WZMEM;
  1003. LPVOID wzmemAlloc(WZMEM *wzmem,DWORD size,BOOL* fNew,wchar* wszId);
  1004. void wzmemClose(WZMEM *wzmem);
  1005. #endif
  1006.  
  1007. #if __MEMORYDEBUG__    //WZ4.00Bm 990929 for memory debug
  1008.     LPVOID _mymalloc(int size,mchar* szfile,int line);
  1009.     #define malloc(s)    _mymalloc(s,__FILE__,__LINE__)
  1010.     LPVOID _zmalloc(int size,mchar* szfile,int line);
  1011.     #define zmalloc(s)    _zmalloc(s,__FILE__,__LINE__)
  1012.     mchar* _mystrdup(mchar* szstr,mchar* szfile,int line);
  1013.     #define strdup(p)    _mystrdup(p,__FILE__,__LINE__)
  1014.     LPVOID _myrealloc(LPVOID p,int size,mchar* szfile,int line);
  1015.     #define realloc(p,s)    _myrealloc(p,s,__FILE__,__LINE__)
  1016. #endif
  1017.  
  1018. #if WINDOWSCE    __ALIMENT__// SH3,MIPSではBYTE境界はWORDアクセスできない
  1019.     WORD lpReadWord(LPVOID p);
  1020.     SIGNED_WORD lpReadSignedWord(LPVOID p);
  1021.     void lpWriteWord(LPVOID p,WORD value);
  1022.     DWORD lpReadDword(LPVOID p);
  1023.     SIGNED_DWORD lpReadSignedDword(LPVOID p);
  1024.     void lpWriteDword(LPVOID p,DWORD value);
  1025. #else
  1026.     #define lpReadWord(p)            (*((WORD*)(p)))
  1027.     #define lpReadSignedWord(p)        (*((SIGNED_WORD*)(p)))
  1028.     #define lpWriteWord(p,value)    (*((WORD*)(p)) = value)
  1029.     #define lpReadDword(p)            (*((DWORD*)(p)))
  1030.     #define lpReadSignedDword(p)    (*((SIGNED_DWORD*)(p)))
  1031.     #define lpWriteDword(p,value)    (*((DWORD*)(p)) = value)
  1032. #endif
  1033. #define lpReadByte(p)            (*((BYTE*)(p)))
  1034. #define lpWriteByte(p,value)    (*((BYTE*)(p)) = value)
  1035.  
  1036. #if UNIX
  1037. mchar* ty_memmem(mchar* src,int lchSrc,mchar* szfind,int lchFind);
  1038.     #define memmem ty_memmem
  1039. #else
  1040. mchar* memmem(mchar* src,int lchSrc,mchar* szfind,int lchFind);
  1041. #endif
  1042. mchar* memstr(mchar* src,int lchSrc,mchar* szfind);    //WZ4.00Ea 001029 
  1043. mchar* memistr(mchar* src,int lchSrc,mchar* szfind);
  1044. mchar* memistrword(mchar* src,int lchSrc,mchar* szfind);
  1045. mchar* memstrwordLen(mchar* src,int lchSrc,mchar* szfind,int lchFind);
  1046. mchar* memstrword(mchar* src,int lchSrc,mchar* szfind);
  1047. #define structClear(bodystruct)        (memset(&(bodystruct),0,sizeof(bodystruct)))
  1048.  
  1049. #if __TXC__
  1050. LPVOID _cdecl TXAPI_(124) memcpy(void *mem1,void *mem2,size_t size);
  1051.     // mem2のsizeブロックを、mem1にコピー
  1052.     // mem1とmem2が重複する場合の動作は未定義
  1053. LPVOID _cdecl TXAPI_(125) memmove(void *mem1,void *mem2,size_t size);
  1054.     // mem2のsizeブロックを、mem1にコピー
  1055.     // mem1とmem2が重複していても正確に動作
  1056. LPVOID _cdecl TXAPI_(126) memset(void *mem1,int c,size_t size);
  1057.     // mem1のsizeバイトを、バイトデータcで埋める。
  1058. int _cdecl TXAPI_(127) memcmp(void *mem1,void *mem2,size_t size);
  1059.     // 2つのメモリブロックの内容を比較
  1060.     // {返り値}mem1がmem2より小さい場合、負の値、
  1061.     // mem1がmem2と等しい場合、0、
  1062.     // mem1がmem2より大きい場合、正の値、を返す
  1063. LPVOID TXAPI_(128) memchr(LPVOID mem,int ch,size_t size);
  1064.     // メモリブロック:mem,サイズ:sizeからchを探す。見つかればポインタを返す
  1065.     // 見つからなければNULLを返す
  1066.     //2.00Bで追加
  1067. LPVOID _cdecl TXAPI_(129) malloc(DWORD size);
  1068.     // sizeバイトのメモリブロックを確保してポインタを返す
  1069. void _cdecl TXAPI_(130) free(LPVOID pmem);
  1070.     // mallocで確保したメモリブロックを解放する
  1071. LPVOID _cdecl TXAPI_(131) realloc(LPVOID pmem,DWORD size);
  1072.     // mallocで確保したメモリブロックのサイズを変更する
  1073. #endif    // __TXC__
  1074.  
  1075. //##文字
  1076.  
  1077. UINT ch_jis2sjis(UINT ch);
  1078. UINT ch_sjis2jis(UINT ch);
  1079. BOOL my_isXdigiti(int c);
  1080. int zentohanAlpha(mchar* p);
  1081. WORD TXAPI_(1012) pch_zen2han(mchar *p);
  1082. #if __TXC__
  1083. BOOL TXAPI_(791) isalnum(int c);
  1084. int  TXAPI_(792) toupper(int c);
  1085. int  TXAPI_(484) tolower(int c);
  1086. BOOL TXAPI_(793) isdigit(int c);
  1087. BOOL TXAPI_(794) isupper(int c);
  1088. BOOL TXAPI_(795) islower(int c);
  1089. BOOL TXAPI_(796) isalpha(int c);
  1090. BOOL TXAPI_(797) isspace(int c);
  1091. BOOL TXAPI_(798) iskanji(int c);
  1092. BOOL TXAPI_(799) iskanji2(int c);
  1093. BOOL TXAPI_(800) iskana(int c);
  1094. BOOL TXAPI_(801) isXdigit(int c);
  1095. BOOL TXAPI_(802) IschReturn(int c);
  1096. BOOL TXAPI_(974) IschWord(int c);
  1097. BOOL TXAPI_(1083) IschTagname(int c);
  1098. BOOL TXAPI_(1085) isXdigiti(int c);
  1099. #else
  1100. extern BYTE _matchword[256];        // __ANSYCODE__
  1101. extern BYTE _matchword2[256];        // __ANSYCODE__
  1102. #define MATCH_WORD        0x01
  1103. #define MATCH_KEYWORD    0x02    //WCE1.01 980202 new
  1104. #define MATCH_KANJI        0x04
  1105. #define MATCH_KANJI2    0x08
  1106. #define MATCH_KANA        0x10
  1107. #define MATCH_DIGIT        0x20
  1108. #define MATCH_UPPER        0x40
  1109. #define MATCH_LOWER        0x80
  1110. //
  1111. #define MATCH2_TXFTAG    0x01
  1112. #define MATCH2_TAGNAME    0x02    // タグ名,アトリビュート名
  1113. #define MATCH2_PARAEND    0x04
  1114. #define MATCH2_RETURN    0x08    //WCE1.01 980202 MATCH->MATCH2
  1115. #define MATCH2_SPACE    0x10    //WCE1.01 980224 
  1116. #define MATCH2_XDIGIT    0x20    //WCE1.01 980224 0-9,A-F
  1117. #define MATCH2_XDIGITI    0x40    //WZ3.90I 981004 0-9,A-F,a-f
  1118. //WCE1.01 980224 isXXX TEXTCHAR/UNICODE(2bytes)対応
  1119. #define IschWord(c)    ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_WORD))    // a-zA-Z0-9_$
  1120. #define IschKeyword(c)    ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_WORD|MATCH_KEYWORD)))    // MATCH_WORD + \    //WCE1.01 980202 
  1121. #define IschTxftag(c)        ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_TXFTAG))    // /#!*
  1122. #define IschTagname(c)        ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_TAGNAME))    // a-zA-Z0-9_
  1123. #define h_IschTagname(c)    (_matchword2[((BYTE)(c))] & MATCH2_TAGNAME)    // a-zA-Z0-9_
  1124. #define IschParaend(c)        ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_PARAEND))    // CHAR_LF,CHAR_EOF
  1125. //WCE1.01 980224 TEXTCHAR/UNICODE(2bytes)対応
  1126. #ifndef __WZRAS__
  1127.     #undef isalnum
  1128.     #undef isdigit
  1129.     #undef isupper
  1130.     #undef islower
  1131.     #undef isalpha
  1132.     #undef isspace
  1133.     #if 1//PWZ2BETA0.4 980610 for マクロでもisalpha etcを使うので
  1134.         BOOL my_isalnum(int c);
  1135.         int  my_toupper(int c);
  1136.         int  my_tolower(int c);
  1137.         BOOL my_isdigit(int c);
  1138.         BOOL my_isupper(int c);
  1139.         BOOL my_islower(int c);
  1140.         BOOL my_isalpha(int c);
  1141.         BOOL my_isspace(int c);
  1142.         BOOL my_isspace_txc(int c);
  1143.         BOOL my_iskanji(int c);
  1144.         BOOL my_iskanji2(int c);
  1145.         BOOL my_iskana(int c);
  1146.         BOOL my_isXdigit(int c);
  1147.         BOOL my_IschReturn(int c);
  1148.         #define isalnum(c)    my_isalnum(c)
  1149.         #define toupper(c)    my_toupper(c)
  1150.         #define tolower(c)    my_tolower(c)    //PWZ2BETA0.4 980610 new
  1151.         #define isdigit(c)    my_isdigit(c)
  1152.         #define isupper(c)    my_isupper(c)
  1153.         #define islower(c)    my_islower(c)
  1154.         #define isalpha(c)    my_isalpha(c)
  1155.         #define isspace(c)    my_isspace(c)
  1156.         #define iskanji(c)    my_iskanji(c)
  1157.         #define iskanji2(c)    my_iskanji2(c)
  1158.         #define iskana(c)    my_iskana(c)
  1159.         #define isXdigit(c)    my_isXdigit(c)
  1160.         #define isXdigiti(c)    my_isXdigiti(c)    //WZ3.90I 981004 
  1161.         #define IschReturn(c)    my_IschReturn(c)
  1162.         #if !__TXC__
  1163.             //WZ4.00Ab 990203 new 高速版 (c>=0x100)の時には対応していない
  1164.             #define h_iskanji(c)        (_matchword[((BYTE)(c))] & MATCH_KANJI)
  1165.             #define h_iskanji2(c)        (_matchword[((BYTE)(c))] & MATCH_KANJI2)
  1166.             #define h_isspace(c)        (_matchword2[((BYTE)(c))] & MATCH2_SPACE)
  1167.         #endif
  1168.     #else
  1169.         #if WINDOWSCE
  1170.             BOOL isalnum(int c);
  1171.             int toupper(int c);
  1172.             BOOL isdigit(int c);
  1173.             BOOL isupper(int c);
  1174.             BOOL islower(int c);
  1175.             BOOL isalpha(int c);
  1176.             BOOL isspace(int c);
  1177.             BOOL iskanji(int c);
  1178.             BOOL iskanji2(int c);
  1179.             BOOL iskana(int c);
  1180.             BOOL isXdigit(int c);
  1181.             BOOL IschReturn(int c);
  1182.         #else
  1183.             #define isalnum(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_DIGIT|MATCH_UPPER|MATCH_LOWER)))
  1184.             #define toupper(c)        (((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER)) ? (c) & 0xDF : c)
  1185.             #define isdigit(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_DIGIT))
  1186.             #define isupper(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_UPPER))
  1187.             #define islower(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER))
  1188.             #define isalpha(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_UPPER|MATCH_LOWER)))
  1189.             #define isspace(c)        ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_SPACE))
  1190.             #define iskanji(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANJI))
  1191.             #define iskanji2(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANJI2))
  1192.             #define iskana(c)        ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANA))
  1193.             #define isXdigit(c)        ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_XDIGIT))    //WCE1.01 980226 0-9,A-F
  1194.             #define IschReturn(c)    ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_RETURN))    // CHAR_CR,CHAR_LF,CHAR_FF,CHAR_EOF
  1195.         #endif
  1196.     #endif
  1197.     //
  1198.     #define toallower(c)        ((c) | 0x20)
  1199.     #define toalupper(c)        ((c) & 0xDF)
  1200.     #define intToXdigit(i)        (((i) >= 10) ? ((i) + 'A' - 10) : ((i) + '0'))    //WZ3.90I 981101 
  1201.     #define intToXdigitl(i)        (((i) >= 10) ? ((i) + 'a' - 10) : ((i) + '0'))    //XZ0.20 990708 
  1202.     #if 1//WCE1.01 980224 TEXTCHAR/UNICODE(2bytes)対応
  1203.         #define wtoupper(c)            (((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER)) ? (c) & 0xDF : c)
  1204.         #define wisdigit(c)            ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_DIGIT))
  1205.     #else
  1206.         #define wtoupper(c)            ((L'a' <= (c) && (c) <= L'z') ? (c - L'a' + L'A') : (c))
  1207.         #define wisdigit(c)            ((c) < 256 && _matchword[((BYTE)(c))] & MATCH_DIGIT)
  1208.     #endif
  1209. #endif
  1210. #endif    // __TXC__
  1211.  
  1212. #define xdigitToInt(ch)        (((ch) >= 'A') ? ((ch) - 'A' + 10) : ((ch) - '0'))
  1213. #define xdigitToIntI(ch)    ((toupper(ch) >= 'A') ? (toupper(ch) - 'A' + 10) : ((ch) - '0'))
  1214.  
  1215. #if TB_EUC
  1216.     #define txchIsKeisen(ch)    (0xA8A1 <= (ch) && (ch) <= 0xA8C0)    // JIS罫線素子か?
  1217.     #define txchIsKeisenClm(ch) (txchIsKeisen(ch) && ch != 0xA8A1 && ch != 0xA8AC)
  1218. #else
  1219.     #define txchIsKeisen(ch)    (0x849F <= (ch) && (ch) <= 0x84BE)    // JIS罫線素子か?
  1220.     #define txchIsKeisenClm(ch) (txchIsKeisen(ch) && ch != '─' && ch != '━')
  1221. #endif
  1222.  
  1223. //##パス文字列
  1224.  
  1225. BOOL TXAPI_(486) wpathSearchPathtext(wchar* wszpath);
  1226. BOOL TXAPI_(1115) wpathSearch(wchar* dst,wchar* szfilename,wchar* szpaths,wchar* szexts);
  1227. BOOL TXAPI_(487) wpathIsFull(wchar* wszpath);
  1228. BOOL TXAPI_(488) pathIsFull(mchar* szpath);
  1229. void TXAPI_(489) pathSetDir(mchar *path);
  1230. int TXAPI_(465) wispathsepa(wchar c);
  1231. int TXAPI_(476) ispathsepa(mchar c);
  1232. wchar* TXAPI_(490) TXAPIBASE wpathSetLong(wchar *path);
  1233. mchar* TXAPI_(852) pathSetLong(mchar* path);
  1234. BOOL wfilenameIsLocation(wchar* wszfilename);
  1235. BOOL TXAPI_(491) wpathFormDir(wchar* path);
  1236. BOOL TXAPI_(599) pathFormDir(mchar* path);
  1237. BOOL TXAPI_(492) wpathFormDirDos(wchar* path);
  1238. BOOL TXAPI_(1060) pathFormDirDos(mchar* path);
  1239. BOOL wpathParent(wchar wszfilename[CCHPATHNAME]);
  1240. BOOL TXAPI_(1122) wpathIsRoot(wchar wszfilename[CCHPATHNAME]);
  1241. BOOL wpathIsUnc(wchar* wszfilename);
  1242. BOOL wpathFlushUnc(wchar* wszfilename);
  1243. BOOL TXAPI_(493) TXAPIBASE wpathFormLong(wchar* path);
  1244. BOOL TXAPI_(506) TXAPIBASE pathFormLong(mchar *path);
  1245. wchar* TXAPI_(494) TXAPIBASE wpathGetFileName(wchar* path);
  1246. mchar* TXAPI_(510) TXAPIBASE pathGetFileName(mchar *path);
  1247. void TXAPI_(496) wpathFlush(wchar* szstr);
  1248. void TXAPI_(511) pathFlush(mchar* szstr);
  1249. void TXAPI_(892) pathFlushSepa(mchar* szstr,int ch);
  1250. wchar* TXAPI_(497) TXAPIBASE wpathSetFileName(wchar *path,wchar *filename);
  1251. mchar* TXAPI_(509) TXAPIBASE pathSetFileName(mchar *path,mchar *filename);
  1252. wchar* TXAPI_(498) TXAPIBASE wpathGetExt(wchar* path);
  1253. mchar* TXAPI_(507) TXAPIBASE pathGetExt(mchar *path);
  1254. wchar* TXAPI_(499) TXAPIBASE wpathSetExt(wchar *path,wchar *ext);
  1255. mchar* TXAPI_(508) TXAPIBASE pathSetExt(mchar *path,mchar *ext);
  1256. wchar* TXAPIBASE wpathAddExt(wchar* path,wchar* ext);
  1257. mchar* TXAPIBASE pathAddExt(mchar* path,mchar* ext);
  1258. BOOL TXAPI_(500) wpathIsExt(wchar* szfilename,wchar* szext);
  1259. BOOL TXAPI_(512) TXAPIBASE pathIsExt(mchar *path,mchar *ext);
  1260. BOOL TXAPI_(501) wpathIsWild(wchar *path);
  1261. BOOL TXAPI_(505) pathIsWild(mchar* path);
  1262. BOOL TXAPI_(502) wpathIsDirectory(wchar *path);
  1263. BOOL TXAPI_(894) pathIsDirectory(mchar* szpath);    //WZ4.00A 981229 
  1264. void TXAPI_(503) wpathSetDir(wchar *path);
  1265. wchar* TXAPI_(504) wpathSetFull(wchar* wszpath);
  1266. mchar* TXAPI_(851) pathSetFull(mchar* szpath);
  1267. mchar* TXAPI_(915) pathSepa(mchar* szstr);    //WZ4.00Bl 990914 pathSepaをTX-Cから使えるようにした。ユーザ要望。
  1268. int TXAPI wpathSetMode(wchar* wszfilename,wchar* wszbase,wchar* wszaddress,int mode);
  1269.     #define PATH_ABSOLUTEDRIVE    1    // ドライブ名付きの絶対パス
  1270.     #define PATH_ABSOLUTE        2    // ドライブ名なしの絶対パス
  1271.     #define PATH_URL            3
  1272.     #define PATH_RELATIVE        4
  1273. int TXAPI_(853) pathSetMode(mchar* szfilename,mchar* szbase,mchar* szaddress,int mode);
  1274. void TXAPI_(948) wpathSetDefault(wchar* wszfilename);
  1275. BOOL TXAPI_(977) wpathIsBackupfile(wchar* wszfilename);
  1276. BOOL TXAPI_(1128) wpathGetRoot(wchar* wsz);
  1277. BOOL TXAPI_(1130) pathmasksmatch(mchar* szname,mchar* szmasks);
  1278. #if !__TXC__
  1279. BOOL wpathSetFilenameUnique(wchar* wszfilename);
  1280. void TXAPI wpathSetRoot(wchar* wszfilename);
  1281. void TXAPI pathSetRoot(mchar* szfilename);
  1282. BOOL wpathIsCszFiletype(wchar* wszfilename,mchar* cszExt);
  1283. int TXAPI pathGetMode(mchar* szfilename);
  1284. int TXAPI wpathGetMode(wchar* wszfilename);
  1285. UINT wpathGetDriveType(wchar* wszpath);
  1286. void wpathGetWzFilename(wchar* wszfilename);
  1287. BOOL wpathIsBinaryFiletype(wchar* wszfilename);
  1288. int TXAPI pathCmp(mchar* szpath1,mchar* szpath2,int *plch);
  1289. int TXAPI pathCmpN(mchar* szpath1,mchar* szpath2,int lch,int *plch);
  1290. BOOL TXAPI pathGetRoot(mchar* sz);
  1291. BOOL wfilenameIsLocation(wchar* wszfilename);
  1292. int wpathIsMemoryCard(wchar* wszfilename);
  1293. mchar* wpathExtractRejectMask(wchar* wszpath,mchar* szReject,int cch);
  1294. #endif // !__TXC__
  1295.  
  1296. //##KERNEL拡張
  1297.  
  1298. //DDE
  1299. BOOL TXAPI_(829) ddeConnect(mchar* pszService, mchar* pszTopic);
  1300. BOOL TXAPI_(830) ddeDisconnect(void);
  1301. BOOL TXAPI_(831) ddeExecute(mchar* pszCmd);
  1302. BOOL TXAPI_(832) ddeExecuteEx(mchar* pszCmd,DWORD* dwResult);
  1303. BOOL TXAPI_(833) ddePoke(mchar* szItem,mchar* szData);
  1304. UINT TXAPI_(834) ddeGetLastError(void);
  1305. BOOL TXAPI_(835) ddeRequest(mchar* szItem,mchar** szData);
  1306. HWND TXAPI_(884) apSearchWindow(mchar* szCaption);
  1307. BOOL __ddeDelete(void);
  1308. //
  1309. BOOL TXAPI_(849) shellExecute(mchar* pszFile,mchar* pszOp);
  1310. BOOL TXAPI_(538) shellOpenW(wchar* szfilename);
  1311. typedef int SKEY;
  1312. SKEY TXAPI_(617) GetShiftKey(void);
  1313.     #define SKEY_SHIFT        0x01
  1314.     #define SKEY_CONTROL    0x02
  1315.     #define SKEY_ALT        0x04
  1316. int TXAPI GetWindowsPlatform(void);
  1317. LPBYTE TXAPI_(606) fileallocW(wchar* szfilename,DWORD* size);
  1318. DWORD TXAPI_(913) wpathGetDiskFreeSpace(wchar* wszpath);
  1319. // _pspc,_pocketpc
  1320. #if WINDOWSCE
  1321.     #if __TXC__
  1322.         #define _pspc        (sh->_fPspc)
  1323.         #define _pocketpc    (sh->_fPocketpc)
  1324.     #else
  1325.     extern BYTE _pspc;                // TRUE=PsPC/PocketPC,FALSE=H/PC    //WZ4.00Ea 001124 new
  1326.     extern BYTE _pocketpc;            // TRUE=PocketPC                    //WZ4.00Ea 001124 new
  1327.     #endif
  1328. #else
  1329.     #define _pspc        FALSE        //WZ4.00Ea 001124 new
  1330.     #define _pocketpc    FALSE        //WZ4.00Ea 001124 new
  1331. #endif
  1332. //
  1333. #if UNIX
  1334.     #define pathstrcmp(wsz1,wsz2)    strcmp(wsz1,wsz2)
  1335. #else
  1336.     #define pathstrcmp(wsz1,wsz2)    stricmp(wsz1,wsz2)
  1337. #endif
  1338. #if __TXC__
  1339.     //WZ4.00Eb 001218
  1340.     #if UNIX
  1341.         #define wpathstrcmp(wsz1,wsz2)    wstrcmp(wsz1,wsz2)
  1342.     #else
  1343.         #define wpathstrcmp(wsz1,wsz2)    wstricmp(wsz1,wsz2)
  1344.     #endif
  1345. #else
  1346. BOOL CreateDirectoryForce_W(wchar* wszpath,LPVOID lpsa);
  1347. BOOL RemoveDirectoryEx_W(wchar* wszfilename);
  1348. //
  1349. BOOL TXAPI CommandExec(mchar* szline);
  1350. BOOL WinExecEx_W(wchar* wszfilenameExe,wchar* wszCmdline);
  1351. //
  1352. BOOL wpathGetFfd(wchar* wszfilename,WIN32_FIND_DATAW* ffd);
  1353. BOOL mySHGetShortcutTarget(wchar* wszfilename,wchar* wsztarget,int cchTaraget);
  1354. BOOL wpathCreateDirectoryPath(wchar* wszfilename);
  1355. BOOL wpathGetFileTime(wchar* wszfilename,FILETIME* filetime);
  1356. BOOL wpathGetFileSize(wchar* wszfilename,DWORD* size);
  1357. int wpathstrcmp(wchar* wsz1,wchar* wsz2);
  1358. #if UNIX
  1359. void sprintFilemask(mchar* szbuff,UINT st_mode);
  1360. #endif
  1361. #if !UNIX
  1362. BOOL GetFileInformation_W(wchar* wszfilename,BY_HANDLE_FILE_INFORMATION* info);
  1363. #endif
  1364. #if WINDOWSMT
  1365. DWORD GetShortPathName_W(wchar* wsz,wchar* wszShort,int cch);
  1366. #endif
  1367. #if WINDOWSCE
  1368.     #define GetCurrentTime()    GetTickCount()
  1369.     extern DWORD _osMajor;    //WZ4.00Ba 990228 OSメジャーバージョン
  1370.     extern DWORD _osMinor;    //WZ4.00Ba 990228 OSマイナーバージョン
  1371. #else
  1372.     enum {WINDOWS95=1,WINDOWSNT};
  1373.     extern BYTE _platform;
  1374.     extern DWORD _dwWindowsVertion;    //WZ3.90P 981205 
  1375. #endif
  1376. BOOL _tapiTerm(BOOL fAtExist);
  1377. #if UNIX
  1378.     #define sockwzNew()        TRUE
  1379.     #define sockwzDelete()    TRUE
  1380. #else
  1381.     BOOL sockwzNew(void);
  1382.     BOOL sockwzDelete(void);
  1383. #endif
  1384. //キーマウスフック
  1385. void keyhookStart(int (*hookProc)(WPARAM wParam,LPARAM lParam));
  1386. void keyhookEnd(void);
  1387. void keyhookTerm(void);
  1388. void mousehookStart(int (*hookProc)(WPARAM wParam,LPARAM lParam));
  1389. void mousehookEnd(void);
  1390. void mousehookTerm(void);
  1391. //スレッド
  1392. #if !UNIX
  1393.     #undef csEnter
  1394.     #undef csExit
  1395.     #define csEnter(cs)    EnterCriticalSection(cs)
  1396.     #define csExit(cs)    LeaveCriticalSection(cs)
  1397.     #define csInit(cs)    InitializeCriticalSection(cs)
  1398.     #define csTerm(cs)    DeleteCriticalSection(cs)
  1399.     extern CRITICAL_SECTION g_csCaret;
  1400. #endif
  1401. FILETIME* filetimeAdd(FILETIME* ft,FILETIME* ftAdd);
  1402. FILETIME* filetimeSub(FILETIME* ft,FILETIME* ftSub);
  1403. FILETIME* filetimeSetDates(FILETIME* ft,int nDay);
  1404. FILETIME* filetimeSetHours(FILETIME* ft,int nHour);
  1405. FILETIME* filetimeIncDay(FILETIME* ft);
  1406. FILETIME* filetimeDecDay(FILETIME* ft);
  1407. BOOL SHCreateShortcut(wchar* wszShortcut,wchar* wsz);
  1408. #if WINDOWSCE
  1409. void winceSetup1(void);
  1410. void winceSetup2(wchar* wszCmdline);
  1411. void ppcEnableMenuItem(HWND hwndMB,int idm,UINT flag);
  1412. void ppcCheckMenuItem(HWND hwndMB,int idm,UINT flag);
  1413. BOOL ppcGetEnableMenuItem(HWND hwndMB,int idm);
  1414. BOOL winceIsContextMenu(HWND hwnd,LPARAM lParam);
  1415. BOOL winceHookWndproc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
  1416. BOOL wince211(void);
  1417. #endif
  1418. #endif // !__TXC__
  1419.  
  1420. //##USER拡張
  1421.  
  1422. #define SFF        (UNIX)    //WZ4.00Bm 990927 システムフォントが固定ピッチ?
  1423.  
  1424. DWORD TXAPI_(850) myChooseColor(HWND hwndParent,COLORREF* rgbResult,mchar* sztitle);
  1425. BOOL TXAPI_(531) wndSetPosSize(HWND hwnd,int x,int y,int cx,int cy);
  1426. BOOL TXAPI_(532) wndSetPos(HWND hwnd,int x,int y);
  1427. void TXAPI_(533) wndSetTimer(HWND hwnd,UINT timerid,DWORD ms);
  1428. void TXAPI_(534) wndMoveFocus(HWND hwnd,BOOL fPrev);
  1429. LRESULT TXAPI_(459) SendMessageOther(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  1430. BOOL TXAPI_(298) TXAPIBASE wndImeGetOpen(HWND hwnd);
  1431. void TXAPI_(299) TXAPIBASE wndImeSetOpen(HWND hwnd,BOOL fOpen);
  1432. int TXAPI_(528) ListBox_GetItemText_A(HWND hctrl,int index,mchar* szbuff,int cch);
  1433. int TXAPI_(529) ListBox_GetItemText_W(HWND hctrl,int index,wchar* szbuff,int cch);
  1434. BOOL ListBox_SetDeletedFromUndo(HWND hctrl,TX* text);
  1435. mchar* TXAPI ListBox_GetItemTextAlloc_A(HWND hctrl,int index);
  1436. void TXAPI_(393) GetWorkRect(RECT *r);
  1437. #if __TXC__
  1438.     #define hwndGetWorkRect(hwnd,r)    GetWorkRect(r)
  1439. #endif
  1440. BOOL TXAPI_(535) EnableDlgItem(HWND hwnd,int id,BOOL fEnable);
  1441. BOOL TXAPI_(1086) EnableDlgItemEx(HWND hwnd,int id,BOOL fEnable,int idDefault);
  1442. BOOL TXAPI_(536) IsDlgItemTextEmpty(HWND hwndDlg,int idControl);
  1443. //Windowsアプリケーションコントロール
  1444. #if WINDOWSMT    //WZ4.00Ca 991203 WZ3で使えたapPostSysKey,apPostCtrlKey,apPostKeyを復活。ユーザ要望。
  1445. void TXAPI_(1101) apPostSysKey(int vk);    // フォーカスを持っているウィンドウに仮想キーvkをAltが同時に押されたとして送ります。
  1446. void TXAPI_(1102) apPostCtrlKey(int vk);// フォーカスを持っているウィンドウに仮想キーvkをCtrlが同時に押されたとして送ります。
  1447. void TXAPI_(1103) apPostKey(int vk);    // フォーカスを持っているウィンドウに仮想キーvkを送ります。
  1448. #endif    // WINDOWSMT
  1449. //window context(__TXC__でも使用)
  1450. #define hwndGetContext(hwnd)            ((LPVOID)GetWindowLong(hwnd,0))
  1451. #define hwndSetContext(hwnd,context)    SetWindowLong(hwnd,0,(LONG)context)
  1452. #define wndprocContext(hwnd,context,message,wParam,lParam)    \
  1453.         if (context == NULL && message != WM_CREATE) return DefWindowProc(hwnd,message,wParam,lParam);
  1454. #define hwndtextGetText(hwnd)            ((TX*)hwndGetContext(hwnd))
  1455. #define hwndbaseGetText(hwnd)            ((TX*)hwndGetContext(hwnd))
  1456. #define hwndtextIsTxwsText(hwnd)    (GetWindowLong(hwnd,GWL_STYLE) & TXWS_TEXT)
  1457. //
  1458. #if !__TXC__
  1459. void hwndGetWorkRect(HWND hwnd,RECT *r);
  1460. BOOL TXAPI wndSetZorder(HWND hwnd,HWND hwndInsertAfter);
  1461. BOOL IsOwnered(HWND hwndParent,HWND hwnd);
  1462. BOOL wndSetSize(HWND hwnd,int cx,int cy);    //WZ4.00Bl 990912 #defineマクロから関数化
  1463. #if WINDOWSCE
  1464. BOOL IsIconic(HWND hwnd);
  1465. HWND GetDesktopWindow(void);
  1466. #endif
  1467. //
  1468. void myCheckMenuItem(HMENU hmenu,int idm,BOOL fCheck);
  1469. void myEnableMenuItem(HMENU hmenu,int idm,BOOL fEnable);
  1470. BOOL GetEnableMenuItem(HMENU hmenu,int idm);
  1471. void hmenubarDeleteShortcut(HMENU hmenuRoot);
  1472. void hmenuDeleteShortcut(HMENU hmenu);
  1473. #if !WINDOWSCE
  1474. HWND CommandBar_Create(HINSTANCE hInst, HWND hwndParent, int idCmdBar);
  1475. BOOL CommandBar_Show(HWND hwndCB, BOOL fShow);
  1476. int CommandBar_AddBitmap(HWND hwndCB, HINSTANCE hInst, int idBitmap,int iNumImages, int iImageWidth,int iImageHeight);
  1477. HWND CommandBar_InsertComboBox(HWND hwndCB, HINSTANCE hInstance,int  iWidth, UINT dwStyle,WORD idComboBox, WORD iButton);
  1478. BOOL CommandBar_InsertMenubar(HWND hwndCB, HINSTANCE hInst,WORD idMenu, WORD iButton);
  1479. HMENU CommandBar_GetMenu(HWND hwndCB, WORD iButton);
  1480. BOOL CommandBar_AddAdornments(HWND hwndCB,DWORD dwFlags,DWORD dwReserved);
  1481. int CommandBar_Height(HWND hwndCB);
  1482. void CommandBar_AddButtons(HWND hwndCB,int cbButtons,LPVOID lpButtons);
  1483. void CommandBar_AddToolTips(HWND hwndCB,int cbToolTips,LPVOID lpToolTipsStrings);
  1484. #endif
  1485. //
  1486. int TXAPI systemfontGetCx(void);
  1487. int TXAPI systemfontGetCy(void);
  1488. void hwndSetCenter(HWND hwndBase);
  1489. BOOL wndRePos(HWND hwnd);
  1490. BOOL TXAPI wndGetRect(HWND hwnd,RECT* r);
  1491. void rectReWork(RECT* r);
  1492. void hwndRectReWork(HWND hwnd,RECT* r);
  1493. void strToRect(mchar* p,RECT* r);
  1494. BOOL rectCheck(RECT* r);
  1495. //intelli mouse
  1496. BOOL imouseGetEnable(void);
  1497. BOOL messageIsMouseWheel(UINT message);
  1498. BOOL imouseGetPageTurn(void);
  1499. int imouseGetScrollLines(WPARAM wParam);
  1500. //
  1501. #if WINDOWSCE
  1502.     UINT IsDlgButtonChecked(HWND hwnd,int idd);
  1503.     BOOL CheckDlgButton(HWND hwnd,int idd,UINT uCheck);
  1504.     BOOL SetDlgItemText_A(HWND hwndDlg,int idControl,LPCSTR lpsz);
  1505.     BOOL GetDlgItemText_A(HWND hwndDlg,int idControl,LPSTR lpsz,int cchMax);
  1506.     #if WINDOWSCE1    //PWZ2BETA0.4 980530 
  1507.     HPEN CreatePen(int style,int nWidth,COLORREF rgb);
  1508.     #endif
  1509. #else
  1510.     extern int _cxSysChar;
  1511.     extern int _cySysChar;
  1512.     void InitSystemFontSize(HWND hwnd);
  1513. #endif
  1514. int GetSystemFontNo(void);
  1515. //
  1516. mchar* GetWindowTextAlloc_A(HWND hwnd);
  1517. #ifdef UNICODE
  1518. int ListBox_AddString_A(HWND hctrl,mchar* sz);
  1519. int ListBox_FindStringExact_A(HWND hctrl,int i,mchar* sz);
  1520. int ComboBox_AddString_A(HWND hctrl,mchar* sz);
  1521. int sprintf_A(LPSTR szDst,LPCSTR szFormat,...);
  1522. BOOL TextOut_A(HDC hdc,int x,int y,LPCSTR lpString,int lchString);
  1523. BOOL WINAPI SetWindowText_A(HWND hwnd,LPCSTR lpsz);
  1524. int WINAPI GetWindowText_A(HWND hwnd,LPSTR lpsz,int cchMax);
  1525. BOOL SetDlgItemText_A(HWND hwndDlg,int idControl,LPCSTR lpsz);
  1526. BOOL GetDlgItemText_A(HWND hwndDlg,int idControl,LPSTR lpsz,int cchMax);
  1527. int DrawText_A(HDC hdc,LPCSTR szStr,int cchStr,LPRECT lprc,UINT wFormat);    //WZ4.00Ca 000102 new
  1528. #else
  1529. int ListBox_AddString_W(HWND hctrl,wchar* wsz);
  1530. int ListBox_FindStringExact_W(HWND hctrl,int i,wchar* wsz);
  1531. int ComboBox_AddString_W(HWND hctrl,wchar* wsz);
  1532. int sprintf_W(LPWSTR szDst,LPCWSTR szFormat,...);
  1533. int vsprintf_W(LPWSTR szDst,LPCWSTR szFormat,void** arg);
  1534. int GetWindowText_W(HWND hwnd,LPWSTR lpsz,int cchMax);
  1535. BOOL SetDlgItemText_W(HWND hwndDlg,int idControl,LPCWSTR lpsz);
  1536. int GetDlgItemText_W(HWND hwndDlg,int idControl,LPWSTR lpsz,int cchMax);
  1537. HWND CreateWindow_W(LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
  1538. HWND CreateWindowEx_W(DWORD dwExStyle,LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
  1539. ATOM RegisterClass_W(WNDCLASSW* lpwc);
  1540. int GetClassName_W(HWND hwnd,LPWSTR lpClassName,int cchClassName);
  1541. int DrawText_W(HDC hdc,LPCWSTR wszStr,int cchStr,LPRECT lprc,UINT wFormat);
  1542. #endif    // !UNICODE
  1543. #if UNIX
  1544.     #define ComboBox_GetEditBox(hctrl)    SendMessage(hctrl,CB_GETEDITBOX,0,0)
  1545. #else
  1546.     #define ComboBox_GetEditBox(hctrl)    GetWindow(hctrl,GW_CHILD)
  1547.     #define CS_XIME        0    // (UNIX用)IME入力が必要なウィンドウクラスであることを指定
  1548.     #define WS_XIME        0    // (UNIX用)IME入力が必要なウィンドウであることを指定
  1549. #endif
  1550. //
  1551. #if !WINDOWSCE1 && !UNIX
  1552.     BSTR ime98GetPhonetic(OLECHAR* wszKanji);
  1553. #endif
  1554. void hwndSetFontDefault(HWND hwnd);
  1555. BOOL hbitmapGetSize(HBITMAP hBitmap,SIZE* s);
  1556. BOOL iskanjifont(mchar *lfFaceName);
  1557. void TreeView_Hook(HWND hwnd);
  1558. int TreeView_GetItemNest(HWND hwnd,HTREEITEM tvitem);
  1559. BOOL TreeView_ExpandToggleOnVK_RETURN(TV_DISPINFO* nm);
  1560. #endif // !__TXC__
  1561.  
  1562. int TXAPI_(979) dtcx(int dtcx);
  1563. int TXAPI_(980) dtcy(int dtcy);
  1564. mchar* TXAPI_(1111) systemfontGetFaceName(void);
  1565. int    TXAPI_(1112) systemfontGetHeight(void);
  1566.  
  1567. #ifdef UNICODE
  1568. int TXAPI_(1117) vsprintf_A(LPSTR szDst,LPCSTR szFormat,void** arg);
  1569. #else
  1570. BOOL TXAPI_(978) SetWindowText_W(HWND hwnd,LPCWSTR lpsz);
  1571.     #if __TXC__
  1572.     HANDLE TXAPI_(1006) FindFirstFile_W(LPCWSTR wszpath,LPVOID ffd);
  1573.     HANDLE TXAPI_(1007) FindNextFile_W(HANDLE hFindFile,LPVOID ffd);
  1574.     #else
  1575.     HANDLE TXAPI_(1006) FindFirstFile_W(LPCWSTR wszpath,WIN32_FIND_DATAW* ffd);
  1576.     HANDLE TXAPI_(1007) FindNextFile_W(HANDLE hFindFile,WIN32_FIND_DATAW* ffd);
  1577.     #endif
  1578. #endif    // !UNICODE
  1579. #if __TXC__
  1580.     #if WINDOWSCE
  1581.         #define IsDlgButtonChecked(hwnd,idd)    SendMessage(GetDlgItem(hwnd,idd),BM_GETCHECK,0,0)
  1582.         #define CheckDlgButton(hwnd,idd,f)        SendMessage(GetDlgItem(hwnd,idd),BM_SETCHECK,f,0);
  1583.     #endif
  1584. HWND TXAPI_(111) CreateWindow_W(LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
  1585. HWND TXAPI_(1120) CreateWindowEx_W(DWORD dwExStyle,LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
  1586. WORD TXAPI_(816) RegisterClass_W(LPVOID lpwc);
  1587. int TXAPI_(926) sprintf_W(LPWSTR szDst,LPCWSTR szFormat,...);
  1588. #endif
  1589.  
  1590. //##GDI拡張
  1591.  
  1592. void myRectangle(HDC hdc,int left,int top,int right,int bottom);
  1593. void DrawXorBox(HDC hdc,RECT* r,HBRUSH hbrush);
  1594. int GetTextTurn(HDC hdc,tchar* sz,int lchSz,int cx);
  1595. int TXAPI_(761) pointsToMmtext(HDC hdc,int points);
  1596. int TXAPI_(762) pixelsToMcm(HDC hdc,int pixels);
  1597. int mmtextToPoints(HDC hdc,int mmtext);
  1598. int TXAPI_(763) mcmToPixels(HDC hdc,int mcm);
  1599. void TXAPI_(765) hdcDrawFrame(HDC hdc,RECT *r,UINT mode);
  1600.     // hdcのrに3次元で枠を描きます
  1601.     //   DF_BUTTON            ふくらんだボタン
  1602.     //   DF_PUSHEDBUTTON    へこんだボタン
  1603.     //   DF_INFO            ステータスバー内の枠
  1604.     //   DF_INFOWHITE        ステータスバー内の枠(中身白)
  1605.     //   DF_BORDER            境界線で枠
  1606.     //   DF_ROUNDBORDER        境界線で角が丸い枠
  1607.     //   DF_BUTTONSHADOW    ボタンの影
  1608.     //   DF_BUTTONFACE        ボタンベース色
  1609.     #define DF_PUSHEDBUTTON        0
  1610.     #define DF_BUTTON            1
  1611.     #define DF_BORDER            2
  1612.     #define DF_INFO                3
  1613.     #define DF_ROUNDBORDER        4
  1614.     #define DF_BUTTONSHADOW        5
  1615.     #define DF_BUTTONFACE        6
  1616.     #define DF_INFOWHITE        7
  1617.     #define DF_FILLBUTTONFACE    8    // 塗りつぶす    //WZ4.00Ca 991214 new
  1618.     enum {
  1619.         DF_FRAMEOUTSIDE=110,
  1620.         DF_FRAMEINSIDE,
  1621.         DF_FRAME,                // DF_FRAMEOUTSIDE+DF_FRAMEINSIDE    //WZ3.90O 981202 
  1622.     };
  1623. void TXAPI_(764) hdcSelectObjectDefault(HDC hdc);
  1624. //
  1625. #if !__TXC__
  1626. #if WINDOWSCE
  1627. void MoveTo(HDC hdc,int x,int y);
  1628. void LineTo(HDC hdc,int x,int y);
  1629. BOOL TextOut(HDC hdc,int x,int y,LPCTSTR lpString,int cbString);
  1630. #else
  1631.     #define MoveTo(hdc,x,y)    MoveToEx(hdc,x,y,NULL)
  1632. #endif
  1633. #endif // !__TXC__
  1634.  
  1635. //##メニュー操作
  1636.  
  1637. HMENU TXAPI_(387) menuNew(void);
  1638. void TXAPI_(388) wmenuStr(HMENU hmenu,wchar* szStr,int id);
  1639. void TXAPI_(810) menuStr(HMENU hmenu,mchar* sz,int id);
  1640. void TXAPI_(245) wmenuPopup(HMENU hmenu,wchar *szStr,HMENU hmenuPopup);
  1641. void TXAPI_(811) menuPopup(HMENU hmenu,mchar* sz,HMENU hmenuPopup);
  1642. void TXAPI_(389) menuSepa(HMENU hmenu);
  1643. void TXAPI_(390) menuDelete(HMENU hmenu);
  1644. BOOL TXAPI_(874) menuTx(HMENU hmenu,mchar* szCaption,mchar* szMacro);    //WZ3.90L 981122 TX-C互換
  1645. int TXAPI_(391) menuOpenEx(HMENU hmenu,UINT flag,int x,int y,HWND hwndParent);
  1646.     #define MENU_CMD        0x0001    // ウィンドウプロシジャを経由せず、コマンドを返す。
  1647.     #define MENU_CENTER        0x0002    // 画面中央に表示。x,yにはlcx,lcyを指定。
  1648.     #define MENU_MOUSE        0x0004    // マウス位置に表示。
  1649.     #define MENU_TXCUR        0x0008    // textのカーソル位置に表示。
  1650.     #define MENU_TRAY        0x0010    // タスクトレイの位置に表示。
  1651.     #define MENU_DELETE        0x0020    // オープン後にhmenuを削除する。
  1652.     #define MENU_GETPARENT    0x0040    // hwndParentに関わらずsysApGetFocusする。//WZ4.00Bk 990909 
  1653. // 以下、TX-Cからも利用可能
  1654. #define txHmenuSelect(text,hmenu)    menuOpenEx(hmenu,MENU_CMD|MENU_DELETE|MENU_TXCUR,0,0,text->hwndtext)
  1655. #define txHmenuOpenKey(text,hmenu)    menuOpenEx(hmenu,MENU_TXCUR,0,0,text->hwndbase)    //WZ4.00A 981229 new hwndtextを渡すのは×、hwndbaseが○
  1656. #define menuSelectMouse(hmenu)        menuOpenEx(hmenu,MENU_CMD|MENU_DELETE|MENU_MOUSE,0,0,NULL)
  1657. #define menuOpenMouse(hmenu)        menuOpenEx(hmenu,MENU_MOUSE,0,0,NULL)
  1658. #define menuOpenXY(hmenu,x,y)        menuOpenEx(hmenu,0,x,y,NULL)
  1659. // 以下、内部用
  1660. #define menuSelectXY(hmenu,x,y)        menuOpenEx(hmenu,MENU_CMD|MENU_DELETE,x,y,NULL)
  1661. #define menuOpenCenter(hmenu,lx,ly)    menuOpenEx(hmenu,MENU_CENTER,lx,ly,NULL)
  1662. #define menuOpenTray(hmenu,hwnd)    menuOpenEx(hmenu,MENU_TRAY,0,0,hwnd)
  1663. HMENU menuLoadMouseR(mchar* szApp,mchar* szName);
  1664. HMENU TXAPI_(956) menuLoad(mchar* szApp,mchar* szName);
  1665. HMENU TXAPI_(1119) menubarLoad(mchar* szApp,mchar* szName);
  1666. void TXAPI_(559) menuFlushAccesskey(HMENU hmenu,struct tagKEY* key);
  1667. HMENU myGetSubMenu(HMENU hmenu,int i);
  1668.  
  1669. //##キー/IDM操作
  1670.  
  1671. #define CCHKEY                20    // キーボードのキー表記を文字列で表した時の最大長
  1672. #define TXVK_MAX_2STROKE    10    // 2ストロークキーMAX
  1673.  
  1674. typedef int WZKEY;
  1675. typedef WORD WZCMD;
  1676.  
  1677. #define TXVK_NULL        0x00    // NULL
  1678. #define TXVK_ASCIITOP    0x01    // ASCII(0x40)
  1679. #define TXVK_ASCIIBASEEND 0x20    // ASCII(0x5F)
  1680. #define TXVK_ASCIIEND    0x26    // ASCII(0x5F) + 6
  1681.                                 //WZ3.90I 981103 +6 : '-'など、他のキーも使えるようにした。
  1682. #define TXVK_NUMTOP        0x27    // 数字先頭'0'
  1683. #define TXVK_NUMEND        0x30    // 数字末尾'9'
  1684. #define TXVK_CONTROLTOP    0x31    // コントロールコード先頭
  1685. #define TXVK_NEXT        0x31
  1686. #define TXVK_PRIOR        0x32
  1687. #define TXVK_INSERT        0x33
  1688. #define TXVK_DELETE        0x34
  1689. #define TXVK_UP            0x35
  1690. #define TXVK_LEFT        0x36
  1691. #define TXVK_RIGHT        0x37
  1692. #define TXVK_DOWN        0x38
  1693. #define TXVK_HOME        0x39
  1694. #define TXVK_END        0x3A
  1695. #define TXVK_ESCAPE        0x3B
  1696. #define TXVK_TAB        0x3C
  1697. #define TXVK_BACK        0x3D
  1698. #define TXVK_RETURN        0x3E
  1699. #define TXVK_SPACE        0x3F
  1700. #define TXVK_MOUSEL        0x40
  1701. #define TXVK_MOUSEL2    0x41
  1702. #define TXVK_MOUSEL3    0x42
  1703. #define TXVK_MOUSEL4    0x43
  1704. #define TXVK_MOUSER        0x44
  1705. #define TXVK_F1            0x45
  1706. #define TXVK_F15        (TXVK_F1 + 15 - 1)
  1707. #define TXVK_CONTROLEND    TXVK_F15// コントロールコードこれまで
  1708. #define TXVK_SIZE        (TXVK_CONTROLEND + 1)
  1709. #define TXVK_ADD_SHIFT                (TXVK_SIZE * 1)
  1710. #define TXVK_ADD_CONTROL            (TXVK_SIZE * 2)
  1711. #define TXVK_ADD_SHIFTCONTROL        (TXVK_SIZE * 3)
  1712. #define TXVK_ADD_MENU                (TXVK_SIZE * 4)
  1713. #define TXVK_ADD_SHIFTMENU            (TXVK_SIZE * 5)
  1714. #define TXVK_ADD_CONTROLMENU        (TXVK_SIZE * 6)
  1715. #define TXVK_ADD_SHIFTCONTROLMENU    (TXVK_SIZE * 7)
  1716. #define TXVK2_ASCII20    0x01    //WZ4.00Ca 991212 
  1717. #define TXVK2_ASCII5F    0x40    //WZ4.00Ca 991212 
  1718. #define TXVK2_CTRLA        0x41    //WZ4.00Ca 991212 
  1719. #define TXVK2_CTRLZ        0x5A    //WZ4.00Ca 991212 
  1720. #define TXVK_ADD_2STROKE(i)            (TXVK_SIZE * 8 + (TXVK2_CTRLZ + 1) * (i))
  1721.  
  1722. typedef struct {
  1723.     FBOOL fInUse;            // 使用中
  1724.     mchar szPre[CCHKEY];
  1725.     int lchPre;
  1726. } PREKEY;
  1727.  
  1728. enum {
  1729.     FKEY_NORMAL=0,FKEY_SHIFT,FKEY_CTRL,FKEY_SHIFTCTRL,FKEY_N,
  1730. };
  1731. #define FKEY_SIZE        13    // 登録できる文字数+1
  1732. #define FKEY_NKEY        12    // 最大キー数
  1733.  
  1734. typedef struct tagKEY {
  1735. // 2ストロークキー
  1736.     int nPre;    // 使用中の数
  1737.     PREKEY tPre[TXVK_MAX_2STROKE];
  1738. // キーに割り当てられたコマンド
  1739.     WZCMD tWzcmd[TXVK_ADD_2STROKE(TXVK_MAX_2STROKE)];
  1740. #if !WINDOWSCE
  1741. // ファンクションキー表示内容    //WZ3.90I 981107 
  1742. //WZ4.00Bl 990909 ファンクションキー表示バッファが足りなかったので拡大。
  1743.     #define CCH_CSZFKEY    (FKEY_NKEY*(FKEY_SIZE+3))    //WZ4.00Bl 990909 
  1744.     mchar tcszFkey[FKEY_N][CCH_CSZFKEY];    // タブ区切りcsz
  1745. #endif
  1746. // 設定
  1747.     HWND hwnd;        // このキー入力がなされるウィンドウ    //WZ4.00Ca 991212 
  1748.     UINT message;    // hwndへの通知メッセージ番号    //WZ4.00Ca 991212 
  1749.         #define KEYN_2STROKE_CLEAR    1
  1750.         #define KEYN_2STROKE_SET    2
  1751. // 現在の内部情報
  1752.     IDM f2Stroke;        // 2ストローク中
  1753.     BYTE fImeWasOn:1;    // 2ストローク中はIMEをoffするので、以前の状態を保持
  1754.     BYTE f2Stroked:1;    // 2ストロークが終わった    //WZ4.00Dd 000531 
  1755. // keyProcMessageの結果
  1756.     IDM idm;            // 実行するIDM。なければ0
  1757.     BYTE nRepeat;        // リピート数
  1758. } KEY;
  1759.  
  1760. typedef struct {
  1761.     BYTE lch;
  1762.     mchar *sz;
  1763.     WORD idm;
  1764. } SZCMDTOWZCMD;
  1765. extern SZCMDTOWZCMD _tSzcmdToWzcmd[];
  1766.  
  1767. // key
  1768. KEY* TXAPI_(560) keyNew(void);
  1769. void TXAPI_(561) keyDelete(KEY* key);
  1770. BOOL TXAPI_(562) keySetIdm(KEY* key,mchar* szKey,int idm);
  1771. void TXAPI_(563) keyClear(KEY* key);
  1772. BOOL TXAPI_(564) keyProcMessage(KEY* key,UINT message,WPARAM wParam,LPARAM lParam);
  1773. BOOL TXAPI_(565) keyLoad(KEY* key,mchar* szApp,mchar* szName);
  1774. BOOL TXAPI_(622) keyIdmToSzkey(KEY* key,WZCMD wzcmd,mchar szstr[CCHWORD]);
  1775. mchar* TXAPI_(403) keyWzkeyToSzkey(KEY* key,WZKEY wzkey,mchar szkey[CCHKEY]);
  1776. // idm
  1777. int    TXAPI_(825) idmRegister(void);    //WZ3.90I 981027 new
  1778. mchar* TXAPI_(557) idmToString(int idm,mchar szCmd[CCHWORD]);
  1779. IDM    TXAPI_(558) idmFromString(mchar* szIdm);
  1780.  
  1781. //##パス検索(GREP)
  1782.  
  1783. typedef struct tagFOLDER_WALK {
  1784.     BBOOL fSearchSubFolder;            // サブフォルダも検索
  1785.     BBOOL fNoSearchWindows;            // Windowsフォルダは検索しない
  1786.     BBOOL fNoSearchBinaryFiletype;    // バイナリ拡張子のファイルは検索しない
  1787.     BBOOL fNoSearchBigFile;            // 巨大なファイルは検索しない
  1788.     int (*appProc)(LPVOID appContext,wchar* wszfilename);
  1789.     LPVOID appContext;                // appProcに渡すクライアント定義コンテキスト
  1790.     BYTE fTXC:1;                    //WZ4.00Ca 991130 TX-Cからの利用?
  1791. // appProc用
  1792.     BOOL fAborted;                    // 中止する
  1793. // 内部用
  1794.     wchar wszPath[CCHPATHNAME];        // 検索パス
  1795.     mchar szReject[CCHPATHNAME];    //WZ4.00Bj 990823 除外用
  1796. } FOLDER_WALK;
  1797. int TXAPI_(1067) folderWalk(FOLDER_WALK* walk,wchar* wszPath);
  1798.  
  1799. //##ディレクトリ操作
  1800. //WZ4.00Ca 991023 new
  1801.  
  1802. typedef struct {
  1803.     BYTE fIgnoreReadonly:1;        // ReadOnly属性を無視
  1804.     BYTE fSilent:1;                // メッセージを出さない
  1805.     BYTE fConfirmOverwrite:1;    // 上書き時に確認する?
  1806.     BYTE fNoStopOnError:1;        // エラーが起きても続行する?(未完成)
  1807. // 状況レポート
  1808.     int (*appProc)(LPVOID appContext,wchar* wszFrom,wchar* wszTo);
  1809.     LPVOID appContext;            // appProcに渡すクライアント定義コンテキスト
  1810. // result
  1811.     BYTE fBreaked:1;            // コピー/削除が中止された?
  1812. } DIRECTORY_ARG;
  1813.  
  1814. BOOL TXAPI_(1123) directoryRemove_W(wchar* wszfilename,DIRECTORY_ARG* arg);    //WZ4.00Ca 991023 new
  1815. BOOL TXAPI_(1124) directoryCopy_W(wchar* wszfilename,wchar* wszdst,DIRECTORY_ARG* arg);    //WZ4.00Ca 991023 new
  1816.  
  1817. //##ファイル入出力
  1818.  
  1819. #define FILEHANDLE_ERROR    ((HANDLE)0xFFFFFFFF)    // replace HFILE_ERROR
  1820.                                                     // 0じゃない!
  1821. #define SEEK_SET        0
  1822. #define SEEK_CUR        1
  1823. #define SEEK_END        2
  1824.  
  1825. #define _llseekTop(hf)            _llseek(hf,0,SEEK_SET)
  1826. #define _llseekSet(hf,ifile)    _llseek(hf,ifile,SEEK_SET)
  1827. #define _llseekEnd(hf)            _llseek(hf,0,SEEK_END)
  1828. #define _llseekCur(hf)            _llseek(hf,0,SEEK_CUR)
  1829.  
  1830. #if WINDOWSCE
  1831.     //WZ4.00Bl 990915 !WINDOWSCEのTX-Cでは、_lread/_lwrite/_llseekは#include <windows.h>して使用し_wz.hでは定義しない。そうしないと#include <windows.h>したときにエラーになる。
  1832.     UINT TXAPI_(451) _lread(HANDLE hfile,LPVOID lpBuffer,UINT cbRead);
  1833.     UINT TXAPI_(452) _lwrite(HANDLE hfile,LPVOID lpBuffer,UINT cbWrite);
  1834.     LONG TXAPI_(453) _llseek(HANDLE hfile,LONG lOffset,int nOrigin);
  1835. #endif
  1836. BOOL TXAPI_(454) _lreduce(HANDLE hf,IFILE cbReduce);
  1837. BOOL TXAPI_(455) fileIsReadonlyW(wchar* szfilename);
  1838. BOOL TXAPI_(456) TXAPIBASE fileIsExistW(wchar *_szfilename);
  1839. BOOL TXAPI_(457) TXAPIBASE fileIsExist(mchar *szfilename);
  1840. BOOL TXAPI_(458) filetimeFromFileNameW(FILETIME* filetime,wchar* szfilename);
  1841. // open/close
  1842. #define FILE_SHARE_READWRITE    (FILE_SHARE_READ|FILE_SHARE_WRITE)
  1843. HANDLE TXAPI_(1096) _lopenex(wchar* wszfilename,DWORD fdwAccess,DWORD fdwShareMode);
  1844. HANDLE TXAPI_(1097) _lopenex_A(mchar* szfilename,DWORD fdwAccess,DWORD fdwShareMode);
  1845. HANDLE TXAPI_(1098) _lcreatex(wchar* wszfilename,DWORD fdwShareMode);
  1846. HANDLE TXAPI_(1099) _lcreatex_A(mchar* szfilename,DWORD fdwShareMode);
  1847. void TXAPI_(1100) _lcloseex(HANDLE hfile);
  1848.  
  1849. #if !__TXC__
  1850. BOOL _lreadPara(HANDLE hf,mchar* buff,int cch);
  1851. BOOL _lreadParaContent(HANDLE hf,mchar* buff,int cch);
  1852. BOOL _llseekLf(HANDLE hf);
  1853. #define _lclose(h)    _lcloseex(h)
  1854. BOOL _lwriteString(HANDLE hf,mchar* szstr);
  1855. BOOL _lwriteStringWtoA(HANDLE hf,wchar* wszstr);
  1856. BOOL _lwriteStringInt(HANDLE hf,int num);
  1857. BOOL _lwriteStringReturn(HANDLE hf,mchar* szstr);
  1858. BOOL _lwriteStringSpace(HANDLE hf,mchar* szstr);
  1859. BOOL _lwritef(HANDLE hf,mchar* szformat,...);
  1860. BOOL _lwriteReturn(HANDLE hf);
  1861. BOOL _lwriteFromFile(HANDLE hf,HANDLE hfSrc,IFILE size);
  1862. BOOL hfLastIsReturn(HANDLE hf);
  1863. BOOL hfLastSetReturn(HANDLE hf);
  1864. HANDLE _lopenAlways(wchar* wszfilename,DWORD fdwShareMode);
  1865. HANDLE _lcreatexNew(wchar* wszfilename,DWORD fdwShareMode);
  1866. HANDLE _lcreatexTrunc(wchar* wszfilename,DWORD fdwShareMode);
  1867. #ifdef UNICODE
  1868. HANDLE CreateFile_A(LPCSTR lpszName,DWORD fdwAccess,DWORD fdwShareMode,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwCreate,DWORD fdwAttrsAndFlags,HANDLE hTemplateFile);
  1869. HANDLE LoadLibrary_A(mchar* szfilename);
  1870. FARPROC myGetProcAddress_A(HINSTANCE hinstance,mchar* szFunction);
  1871. #else
  1872. HANDLE CreateFile_W(LPCWSTR lpszName,DWORD fdwAccess,DWORD fdwShareMode,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwCreate,DWORD fdwAttrsAndFlags,HANDLE hTemplateFile);
  1873. BOOL CopyFile_W(LPCWSTR lpszSrc,LPCWSTR lpszDst,BOOL fFailIfExists);
  1874. BOOL MoveFile_W(LPCWSTR lpszSrc,LPCWSTR lpszDst);
  1875. BOOL DeleteFile_W(LPCWSTR lpszFileName);
  1876. BOOL SetFileAttributes_W(LPCWSTR lpszFileName,DWORD dwFileAttributes);
  1877. BOOL RemoveDirectory_W(LPCWSTR wszDir);
  1878. BOOL CreateDirectory_W(LPCWSTR lpszPath,LPSECURITY_ATTRIBUTES lpsa);
  1879. HANDLE CreateFileMapping_W(HANDLE hFile,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCWSTR lpszMapName);
  1880. HANDLE CreateMutex_W(LPSECURITY_ATTRIBUTES lpsa,BOOL fInitialOwner,LPCWSTR lpszMutexName);
  1881. #if !UNIX && !__TXC__
  1882. BOOL ShellExecuteEx_W(SHELLEXECUTEINFOW* info);
  1883. #endif
  1884. HANDLE LoadLibrary_W(wchar* wszfilename);
  1885. #endif
  1886. #endif // !__TXC__
  1887.  
  1888. //##文字列
  1889.  
  1890. int TXAPI_(297) strsize(mchar* szstr);
  1891. int _cdecl TXAPI_(99) sprintf(mchar* szdst,mchar* szformat,...);
  1892. int TXAPI_(460) formstr(mchar *str);
  1893. #ifndef __OLECPP__
  1894. mchar* TXAPI_(986) itoa(int value,mchar* string,int radix);
  1895. #endif
  1896. mchar* itoaZ(int value,mchar* string,int radix);
  1897. int TXAPI_(100) wstrtostr(wchar* src,int lchSrc,mchar* dst,int cchDst);
  1898. int TXAPI_(101) strtowstr(mchar* src,int lchSrc,wchar* dst,int sizeDst);
  1899. int TXAPI_(888) strtowstrsz(mchar* src,int lchSrc,wchar* dst,int cchDst);
  1900. int TXAPI_(889) wstrtostrsz(wchar* src,int lchSrc,mchar* dst,int cchDst);
  1901. int TXAPI_(886) pathtowpath(mchar* szpath,wchar* wszpath);
  1902. int TXAPI_(887) wpathtopath(wchar* wszpath,mchar* szpath);
  1903. wchar* TXAPI_(102) TXAPIBASE wstrcpylen(wchar *dst,wchar *src,int len);
  1904. wchar* TXAPI_(103) wstrcpylenmax(wchar *dst,wchar *src,int len,int lcxmax);
  1905. wchar * TXAPI_(104) wstrcpymax(wchar *szdst,wchar *szsrc,int lchmax);
  1906. int TXAPI_(461) formstrex(mchar *str,BOOL fCurWestern);
  1907. int strread(mchar* sz,TXCHAR* ch,IBUFF len);
  1908. wchar* wstristr(wchar* str1,wchar* str2);
  1909. extern mchar* _tszMonth[];
  1910. extern mchar* _tszYoubi[];
  1911. void TXAPI_(1005) strToFiletime(mchar* p,int len,FILETIME* filetime,int dHourAdd);
  1912. #if !__TXC__
  1913. mchar* strSkipRe(mchar* p,int* pnRe);
  1914. int strlensize(mchar *szstr);
  1915. void sprintfAfnEx(mchar* szdst,mchar* szAf,TX* text,BOOL fSkipTopClm);
  1916. void wi10toa(int value,wchar* buff);
  1917. long watoi10(wchar* buff);
  1918. mchar* TXAPIBASE strGetWordTopLch(mchar* szStr,int lch);
  1919. int yearAdjust2000(int year);
  1920. int atoi2(mchar* p);
  1921. int atoiLen(mchar* p,int len);
  1922. IBUFF SearchParaTop(LPBYTE buff,IMEM off,IMEM _size);
  1923. IBUFF SearchParaTopEx(LPBYTE buff,IMEM off,IMEM size,IBUFF ibuffAtError);
  1924. IBUFF SearchCharTop(LPBYTE buff,IBUFF off,IBUFF _size);
  1925. IBUFF SearchParaEnd(LPBYTE buff,IMEM off,IMEM _size);
  1926. mchar* TXAPI strnext(mchar* szstr);
  1927. BOOL issepastr(mchar* str);
  1928. mchar* sepastrGetIndexStr(mchar* str,int i,int* pLch);
  1929. mchar* csstrGetInclude(mchar* csstr,int size,mchar* szName);
  1930. mchar* strGetTailSpacePrev(mchar* sz,mchar* szEnd);
  1931. void strDeleteTailSpace(mchar* sz);
  1932. void strDeleteTailSpaceTab(mchar* sz);
  1933. #if WINDOWSCE||UNIX
  1934. mchar* strnset(mchar* s,int ch,size_t n);
  1935. mchar* strupr(mchar* s);
  1936. mchar* strlwr(mchar* s);
  1937. #endif
  1938. void sprintDate(mchar* szdst);
  1939. void sprintfDate(mchar szdst[CCHWORD],mchar* szDateFormat,TX* text);
  1940. void sprintFiletime(mchar* szbuff,FILETIME* filetime);
  1941. void sprintFiletimeDate(mchar* szbuff,FILETIME* filetime);
  1942. void sprintFiletimeTime(mchar* szbuff,FILETIME* filetime);
  1943. void sprintSizeKB(mchar* szbuff,IFILE size);
  1944. void sprintSizePrim(mchar* szbuff,UINT size);
  1945. #if UNIX    //XZ0.1 990516 標準ライブラリのwcsXXXはint*なので使用できない。
  1946.     wchar* wstrcpy(wchar* dst,wchar* src);
  1947.     int wstrcmp(wchar* sz1,wchar* sz2);
  1948.     int wstrlen(wchar *str);
  1949.     wchar* wstrcat(wchar* dst,wchar* src);
  1950.     wchar* wstrstr(wchar* sz1,wchar* sz2);
  1951.     int wstrncmp(wchar* sz1,wchar* sz2,int lch);
  1952. #else
  1953.     #if WINDOWSCE
  1954.         //WZ4.00Ac 990206 A-60でpermanentを含むマクロがコンパイル&実行できない。permanentinitのwcscpyでハングするので、wstrcpyを自分で実装した。
  1955.         wchar* wstrcpy(wchar* dst,wchar* src);
  1956. //        #define wstrcpy        wcscpy
  1957.     #else
  1958.         #define wstrcpy        wcscpy
  1959.     #endif
  1960.     #define wstrlen        wcslen
  1961.     #define wstrcat        wcscat
  1962.     #define wstrstr        wcsstr    //3.90H 980910 
  1963.     #ifdef _WIN32_WCE_EMULATION
  1964.         int wstrcmp(wchar* sz1,wchar* sz2);
  1965.     #else
  1966.         #define wstrcmp        wcscmp
  1967.     #endif
  1968. #endif
  1969. #endif    // __TXC__
  1970. // for ANSI(!UNICODE) version
  1971. mchar* TXAPI_(904) strdupW(wchar* wsz);
  1972. wchar* TXAPI_(905) wstrdupA(mchar* sz);
  1973. wchar* wstrdupLenA(mchar* sz,int lch);
  1974. wchar* wstrset(wchar* dst,int ch,int lch);
  1975. // safety strcpy op.
  1976. // szdstがmcharの配列の場合のみ使用可能。mcharへのポインタの場合は不可能
  1977. #define sstrcpy(szdst,szsrc)            strcpymax(szdst,szsrc,cchof(szdst))
  1978. #define wsstrcpy(szdst,szsrc)            wstrcpymax(szdst,szsrc,wcchof(szdst))
  1979. #define sstrcpylen(szdst,szsrc,lch)        strcpylenmax(szdst,szsrc,lch,cchof(szdst))
  1980. #define wsstrcpylen(szdst,szsrc,lch)    wstrcpylenmax(szdst,szsrc,lch,wcchof(szdst))
  1981. #define sstrcat(szdst,szsrc)            strcpymax(szdst + strlen(szdst),szsrc,cchof(szdst) - strlen(szdst))
  1982. #define wsstrcat(szdst,szsrc)            wstrcpymax(szdst + wstrlen(szdst),szsrc,wcchof(szdst) - wstrlen(szdst))
  1983. #define strcatmax(szdst,szsrc,cch)        strcpymax(szdst + strlen(szdst),szsrc,cch - strlen(szdst))
  1984. #define strcatlenmax(szdst,szsrc,lch,cch) strcpylenmax(szdst + strlen(szdst),szsrc,lch,cch - strlen(szdst))    //WZ3.90M 981129 
  1985. #define wstrcatmax(szdst,szsrc,cch)        wstrcpymax(szdst + wstrlen(szdst),szsrc,cch - wstrlen(szdst))
  1986. #define sstrcatlen(szdst,szsrc,lch)        strcpylenmax(szdst + strlen(szdst),szsrc,lch,cchof(szdst) - strlen(szdst))
  1987. #define wsstrcatlen(szdst,szsrc,lch)    wstrcpylenmax(szdst + wstrlen(szdst),szsrc,lch,wcchof(szdst) - wstrlen(szdst))
  1988. #define wstrsize(szstr)                    ((wstrlen(szstr) + 1) * sizeof(wchar))
  1989. #define wstrlensize(szstr)                (wstrlen(szstr) * sizeof(wchar))
  1990. mchar * TXAPI_(462) strcpymax(mchar *szdst,mchar *szsrc,int lchmax);
  1991. BOOL TXAPI_(463) TXAPIBASE txchIsKanji(TXCHAR c);
  1992. BOOL TXAPI_(464) TXAPIBASE txchIsReturn(TXCHAR c);    // 0x0D0A,0x0A,0x1A
  1993. BOOL txchIsSubtitleIllegal(TXCHAR ch);
  1994. #ifndef __WZRAS__
  1995.     #define txchIsAlpha(c)    (c < 256 && isalpha(c))    //WCE1.01 971229 new
  1996.     #define txchIsAlnum(c)    (c < 256 && isalnum(c))    //WCE1.01 971229 new
  1997.     #define txchIsDigit(c)    (c < 256 && isdigit(c))    //WCE1.01 971229 new
  1998. #endif
  1999. wchar* wstrdup(wchar* wszstr);
  2000. wchar* wszConnectAlloc(wchar* wsz1,wchar* wsz2);
  2001. mchar* szConnectAlloc(mchar* sz1,mchar* sz2);
  2002. //WZ4.00Eb 010103 TX-C for XZでstrdupを使えるようにした。
  2003. #if !__OLECPP__ && !(UNIX && !__TXC__) && !__MEMORYDEBUG__
  2004. mchar* TXAPI_(1062) strdup(mchar* szstr);
  2005. #endif
  2006. mchar* TXAPI_(910) strdupLen(mchar* str,int lch);
  2007. mchar* stristrword(mchar *szstr,mchar *szfind);
  2008. mchar* strchrs(mchar *str1,mchar *chrs);
  2009. mchar* strchrlast(mchar *str,WORD c);
  2010. mchar* strchrex(mchar* p,int ch);
  2011. wchar* wstrchrex(wchar* p,int ch);
  2012. BOOL strisidi(mchar* szstr,mchar* szId);
  2013. // 標準のstrstr/strchr/strichrはTXCHARに対応してないので、
  2014. // __strstr/__strchr/__strichrとは動作が異なるので、overrideする
  2015. mchar* __strstr(mchar *str1,mchar *str2);
  2016. #define strstr    __strstr
  2017. mchar* __strchr(mchar *str1,WORD c);
  2018. #define strchr __strchr
  2019. mchar* __strichr(mchar *str1,WORD c);
  2020. #define strichr __strichr
  2021. mchar* __stristr(mchar *str1,mchar *str2);    //WCE1.01B 980615 
  2022. #define stristr __stristr    //WCE1.01B 980615 
  2023. mchar* strchrex(mchar* p,int ch);
  2024. wchar* wstrchrex(wchar* p,int ch);
  2025. mchar* strchrtail(mchar* p,int ch);
  2026. wchar* wstrchrtail(wchar* p,int ch);
  2027. BOOL strismsgheader(mchar* sz);
  2028. mchar* TXAPIBASE strGetNextWordTop(mchar* szStr);
  2029. mchar * TXAPI_(477) TXAPIBASE strGetWordTop(mchar* szStr);
  2030. int TXAPI_(478) TXAPIBASE strGetWordLen(mchar* szStr);
  2031. mchar* TXAPI_(845) strGetWord(mchar* szbuff,mchar* szstr);
  2032. int TXAPI strGetLineLen(mchar* szStr);
  2033. int strGetQuoteLen(mchar* szStr);
  2034. mchar * TXAPI_(479) TXAPIBASE strcpylen(mchar *dst,mchar *src,int len);
  2035. mchar * TXAPI_(480) strcpylenmax(mchar *dst,mchar *src,int len,int lcxmax);
  2036. #ifndef __OLECPP__
  2037. int TXAPI_(481) stricmp(mchar* sz1,mchar* sz2);
  2038. int TXAPI_(482) strnicmp(mchar* sz1,mchar* sz2,int maxlen);
  2039. #endif
  2040. mchar* sjis_strupr(mchar* s);
  2041. int sjis_strnicmp(mchar* sz1,mchar* sz2,int maxlen);
  2042. mchar * TXAPI_(485) strGetLast(mchar *szstr);
  2043. mchar* TXAPI strGetLastAscii(mchar* szstr);
  2044. int strisidi(mchar* szstr,mchar* szId);
  2045. wchar* TXAPI_(466) wstrGetLast(wchar* szstr);
  2046. int TXAPI_(467) wstricmp(wchar* sz1,wchar* sz2);
  2047. int wstrncmp(wchar* sz1,wchar* sz2,int lch);
  2048. int TXAPI_(468) wstrnicmp(wchar* sz1,wchar* sz2,int lch);
  2049. wchar* TXAPI_(469) wstrchr(wchar* sz,int c);
  2050. wchar* TXAPI_(470) TXAPIBASE wstrGetWordTop(wchar *szStr);
  2051. int TXAPI_(471) TXAPIBASE wstrGetWordLen(wchar* szStr);
  2052. mchar* TXAPIBASE szwordtop(mchar* sz);
  2053. int TXAPIBASE szwordlen(mchar* sz);
  2054. #define watoi(sz)    watol(sz)
  2055. long TXAPI_(472) watol(wchar* sz);
  2056. UINT TXAPI_(473) formcharex(mchar* str,UINT offset);
  2057. int TXAPI_(474) hextoint(mchar *szhex);
  2058. int TXAPI_(475) _hextoint(int c);
  2059.  
  2060. #if __TXC__
  2061. int _cdecl TXAPI_(105) strlen(mchar *str);
  2062. pmchar _cdecl TXAPI_(106) strcpy(mchar *str1,mchar *str2);
  2063. pmchar _cdecl TXAPI_(107) strncpy(mchar *str1,mchar *str2,size_t len);
  2064. pmchar _cdecl TXAPI_(108) strcat(mchar *str1,mchar *str2);
  2065. pmchar _cdecl TXAPI_(109) strnset(mchar *str,int ch,size_t len);
  2066. int _cdecl TXAPI_(110) strcmp(mchar *str1,mchar *str2);
  2067. int _cdecl TXAPI_(112) strncmp(mchar *str1,mchar *str2,size_t len);
  2068. pmchar _cdecl TXAPI_(114) strstr(mchar *str1,mchar *str2);
  2069. pmchar _cdecl TXAPI_(115) stristr(mchar *str1,mchar *str2);
  2070. pmchar _cdecl TXAPI_(116) stristrword(mchar *str1,mchar *str2);
  2071. pmchar _cdecl TXAPI_(117) strchr(mchar *str1,WORD c);
  2072. pmchar _cdecl TXAPI_(118) strichr(mchar *str1,WORD c);
  2073. pmchar _cdecl TXAPI_(119) strchrs(mchar *str1,mchar *found);
  2074. pmchar _cdecl TXAPI_(120) strupr(mchar *str);
  2075. pmchar _cdecl TXAPI_(121) strlwr(mchar *str);
  2076. long _cdecl TXAPI_(122) atoi(const mchar *str);
  2077. void TXAPI_(123) vsprintf(mchar *szdst,mchar *_format,void *pparam);
  2078. // unicode string
  2079. int _cdecl TXAPI_(775) wstrlen(wchar *str);
  2080. wchar* _cdecl TXAPI_(776) wstrcpy(wchar *str1,wchar *str2);
  2081. wchar* _cdecl TXAPI_(777) wstrcat(wchar *str1,wchar *str2);
  2082. int _cdecl TXAPI_(778) wstrcmp(wchar *str1,wchar *str2);
  2083. #endif    // __TXC__
  2084.  
  2085. //##タブカンマ区切り文字列
  2086.  
  2087. #if !__TXC__
  2088. int cvszGetWordLen(mchar* csz);
  2089. mchar* cvszGetWordTop(mchar* csz);
  2090. mchar* cszGetWordTop(mchar* csz);
  2091. int cszGetWordLen(mchar* csz);
  2092. mchar* cszFindNosensecase(mchar* csz,mchar* sz);
  2093. BOOL cszItemDel(mchar* csz,mchar* sz);
  2094. mchar* cszItemAddAlloc(mchar* csz0,mchar* sz);
  2095. mchar* csszGetInclude(mchar* cssz,mchar* szName);
  2096. mchar* csszGetWordTop(mchar* csz);
  2097. int csszGetWordLen(mchar* cssz);
  2098. int clmsToTclm(mchar* szClms,mchar* tClm,int cchClm,int iClm,int maxClm);
  2099. mchar* clmsFromTclmAlloc(mchar* tClm,int cchClm,int iClm,int maxClm,mchar* szFirstClm);
  2100. #endif // !__TXC__
  2101.  
  2102. //##メッセージID
  2103. //WZ4.00Ee 010409 new
  2104.  
  2105. typedef struct {
  2106.     DWORD tNumber[4];    //WZ3.90M 981128 2->4に拡大。2では短すぎた。
  2107. } MESSAGEID;
  2108. BOOL midIsZero(MESSAGEID* p);
  2109. #define messageidIsZero(p)    midIsZero(p)
  2110. BOOL midIsGened(MESSAGEID* mid);
  2111. BOOL midMatch(MESSAGEID* mid1,MESSAGEID* mid2);
  2112. MESSAGEID* TXAPI_(1140) midGen(MESSAGEID* mid);
  2113. MESSAGEID* TXAPI_(1141) midFromString(MESSAGEID* mid,mchar* sz);
  2114. mchar* TXAPI_(1142) midToString(MESSAGEID* mid,mchar buff[CCHWORD]);
  2115. mchar* midToStringShort(MESSAGEID* mid,mchar buff[CCHWORD]);
  2116. BOOL txMsghdrGetsetMid(TX* text,mchar* szHeader,MESSAGEID* mid,BOOL fSet);
  2117. BOOL txMsghdrGetsetMidGen(TX* text,mchar* szHeader,MESSAGEID* mid,BOOL fSet);
  2118. BOOL txMsghdrGetsetMidStd(TX* text,MESSAGEID* mid,BOOL fSet);
  2119.  
  2120. // 規定メッセージID(tNumber[0]==2000000000)
  2121. //WZ4.00Ee 010416 new
  2122. #define midLpstylePlug            {2000000000,0,0,0}    // 「埋め込み」
  2123. #define midWzcfg                {2000000000,0,0,1}    // WZ共通設定
  2124. #define midTxcfgCommon            {2000000000,0,0,2}    // TX共通設定
  2125. #define midTxcfgStd                {2000000000,0,0,3}    // 標準の設定(StdCfg)
  2126. #define midTxcfgEh                {2000000000,0,0,4}
  2127. #define midTxcfgGrep            {2000000000,0,0,5}
  2128. #define midTxcfgMemo            {2000000000,0,0,6}
  2129. #define midTxcfgNote            {2000000000,0,0,7}
  2130. #define midTxcfgNotePv            {2000000000,0,0,8}
  2131. #define midTxcfgMail            {2000000000,0,0,9}
  2132. #define midTxcfgMailPv            {2000000000,0,0,10}
  2133. #define midTxcfgMailTemplate    {2000000000,0,0,11}
  2134. #define midTxcfgMbTemplate        {2000000000,0,0,12}
  2135. #define midLpstyleTemp            {2000000000,0,0,13}    // 「一時設定」
  2136. //
  2137. extern MESSAGEID _midZero;
  2138. extern MESSAGEID _midTxcfgStd;
  2139.  
  2140.  
  2141. //{###TEXT/WZ構造体
  2142.  
  2143. //##テキストバッファ基本定義
  2144.  
  2145. #define TEXTBUFFSIZE    16384U            //1.00F (IBUFF) -> U , 65536U-16U -> 65520U
  2146.     // テキストバッファの初期サイズ
  2147.     // 16の倍数であること。
  2148.     // これはあくまで確保するサイズ。
  2149.     // バッファに入っているテキストデータのバイト数は、
  2150.     // text->sizebuffに入っている。
  2151.     // WINDOWSCEはメモリが少ないので少な目に確保
  2152. #define MAXPARASIZE        8192U            //1.00F (IBUFF) -> U
  2153.     // 論理行の最大サイズの目安
  2154.     // これを越える論理行も何ら問題なく編集できる
  2155. #define STDGAPSIZE        2048U            //1.00F (IBUFF) -> U
  2156.     // 最低2048、最大8192程度
  2157. #define TEXTBUFFSIZE_MARGIN        8U        // WINDOWSCE
  2158.     // EOF追加,ターミネータのため、8bytes余計に取る
  2159.     // 最低3バイト余計に取らないといけない
  2160.     // 追加EOF1バイト分と、ターミネータ2+1バイト分(+1:WCE)
  2161.  
  2162. #define TC_SJIS            0        // ShiftJIS (1byte or 2bytes)
  2163.                                 // 拡張ASCIIコード(欧文文字:0x80-0xFF)は
  2164.                                 // iskanjiと重なるコードは0x80を追加して
  2165.                                 // 2bytesで表現する。
  2166.                                 // (!TEXTCHAR_UNICODE時のみ)
  2167. #define TC_SINGLEBYTE    1        // 1バイト文字(ASCII+拡張ASCII)
  2168.                                 // 日本語は使えない
  2169.                                 // (!TEXTCHAR_UNICODE時のみ)
  2170. #define TC_UNICODE        2        // UNICODE(all 2bytes)
  2171.                                 // UNICODEで定義された16bitで表現できる文字が
  2172.                                 // 使用可能
  2173.                                 // (TEXTCHAR_UNICODE時のみ)
  2174. #define TC_EUC            3        // EUC    //XZ0.1 990528 
  2175.  
  2176. #if TB_EUC
  2177.     #define iseuc(c)        (c & 0x80)    // cがEUCの1バイト目かどうか返す
  2178.     #define tbiskanji(c)    iseuc(c)    // 半角カナの場合もTRUE
  2179.     #define tbisideo(c)    (iseuc(c) && c != CHAR_EUC_KANA)    // 半角カナは除く
  2180.     #define h_tbiskanji(c)    iseuc(c)
  2181.     #define h_tbiskanji2(c)    iseuc(c)
  2182.     #define tbkanjisize(p)    eucGetCharSize(p)
  2183.     #define txchIsJspace(ch)    (ch == 0xA1A1)    //XZ0.1 990613 new
  2184. #else
  2185.     #define tbiskanji(c)    iskanji(c)
  2186.     #define tbisideo(c)        iskanji(c)
  2187.     #define h_tbiskanji(c)    h_iskanji(c)
  2188.     #define h_tbiskanji2(c)    h_iskanji2(c)
  2189.     #define tbkanjisize(p)    2
  2190.     #define txchIsJspace(ch)    (ch == 0x8140)    //XZ0.1 990613 new
  2191. #endif
  2192.  
  2193. #if UNIX
  2194.     #define CHAR_CMDLINESW        '-'
  2195.     #define CHAR_TXE_CMDLINESW    '='
  2196.     #define CHAR_PATH_SEPA        '/'        //WZ4.00Bj 990814 
  2197. #else
  2198.     #define CHAR_CMDLINESW        '/'
  2199.     #define CHAR_TXE_CMDLINESW    '-'
  2200.     #define CHAR_PATH_SEPA        '\\'    //WZ4.00Bj 990814 
  2201. #endif
  2202.  
  2203. #if TEXTCHAR_UNICODE
  2204.     typedef unsigned short TEXTCHAR;    // textbuff char set is UNICODE
  2205.     #define TEXTSTR(quote)            L##quote
  2206.     #define textvsprintf            vsprintf_W
  2207.     #define textsprintf                sprintf_W
  2208.     #define textstrlen                wstrlen
  2209.     #define textstrcpy                wstrcpy
  2210.     #define textstrcpylen            wstrcpylen
  2211.     #define textstricmp                wstricmp
  2212.     #define textcchof                wcchof
  2213.     #define textsprintf                sprintf_W
  2214.     #define textatol                watol
  2215.     #define textstrchr                wstrchr
  2216.     #define textstrncmp(s1,s2,n)    memcmp(s1,s2,(n)*2)
  2217.     #define textstrnicmp(s1,s2,n)    wstrnicmp(s1,s2,n)
  2218.     #define textmemcmp(s1,s2,n)        memcmp(s1,s2,(n)*2)
  2219.     #define textmemcpy(s1,s2,n)        memcpy(s1,s2,(n)*2)
  2220.     #define textmemmove(s1,s2,n)    memmove(s1,s2,(n)*2)
  2221.     #define textitoa(n,s,r)            itow(n,s,r)
  2222.     #define textstrcpylenmax        wstrcpylenmax
  2223. #else
  2224.     typedef unsigned char TEXTCHAR;        // textbuff char set is ShiftJIS(ANSI)
  2225.     #define TEXTSTR(quote)            quote
  2226.     #define textvsprintf            vsprintf_A
  2227.     #define textsprintf                sprintf_A
  2228.     #define textstrlen                strlen
  2229.     #define textstrcpy                strcpy
  2230.     #define textstrcpylen            strcpylen
  2231.     #define textstricmp                stricmp
  2232.     #define textcchof                cchof
  2233.     #define textsprintf                sprintf_A
  2234.     #define textatol                atol
  2235.     #define textstrchr                strchr
  2236.     #define textstrncmp(s1,s2,n)    memcmp(s1,s2,n)
  2237.     #define textstrnicmp(s1,s2,n)    strnicmp(s1,s2,n)
  2238.     #define textmemcmp(s1,s2,n)        memcmp(s1,s2,n)
  2239.     #define textmemcpy(s1,s2,n)        memcpy(s1,s2,n)
  2240.     #define textmemmove(s1,s2,n)    memmove(s1,s2,n)
  2241.     #define textmemchr(s,c,n)        memchr(s,c,n)
  2242.     #define textitoa(n,s,r)            itoa(n,s,r)
  2243.     #define textstrcpylenmax        strcpylenmax
  2244. #endif
  2245.  
  2246. //##TXF定義
  2247. // 詳しくは"txf.txt"を参照。
  2248. // TXF_PARA_xxx : 段落先頭のみに存在。段落属性を表す。
  2249. // 971106 start
  2250.  
  2251. #define CHAR_TXF            0x1F    // TXF_xxxが続く
  2252.                                     // この後にタグ名、アトリビュートが続く。
  2253.                                     // タグにはバイナリデータは使わない。0x00や0x0Dなどが入ると混乱するため。
  2254. #define CHAR_TXFEND            0x1E    // タグの終わり
  2255. #define CHAR_ATRDELI        0x1D    // 一つのアトリビュートの終わり
  2256. //// CHAR_TXF,CHAR_TXFEND,CHAR_ATRDELIのコードはまだ確定していない
  2257. //// ESCシーケンスなどとの整合性を調べる
  2258. //// 問題が少なそうなコードとして0x08(BS),0x0B(VT),0x18(CAN)も候補
  2259. // CHAR_TXFの直後に置く
  2260. #define CHAR_TXFTAG_END        '/'        // 閉タグ
  2261. #define CHAR_TXFTAG_CHAR    '*'        // 文字タグ
  2262. #define CHAR_TXFTAG_PARA    '#'        // 段落タグ
  2263.                                     // CHAR_TXFTAG_SINGLEが続くと、改行操作で次行に引き継がない
  2264. #define CHAR_TXFTAG_SINGLE    '!'        // 単独タグ
  2265. // 文字数
  2266. #define CCHTAG                30        // タグ名の最大文字数+1
  2267. #define CCHTXFTAG            500        // アトリビュートも含めて最大文字数+1
  2268.  
  2269. // タグが閉じているか調べる時のコンテキスト
  2270. typedef struct tagTAGNEST {
  2271.     BYTE lchTag;
  2272.     TEXTCHAR szTag[CCHTAG];    // タグ名 アトリビュートは除く
  2273.     TEXTCHAR* pTag;            //WCE1.01 980308 タグアドレス
  2274.     TEXTCHAR* szAtr;        // malloced
  2275.                             // for tagnestNext
  2276.     SIGNED_BYTE nNest;        // 現在のネストレベル
  2277.     FBOOL fParaTag;            // 段落タグ?
  2278.     DWORD lParam;            // ユーザデータ
  2279.     FBOOL fPreTagIsTop;        // (ユーザデータ)直前のタグが開タグだった?
  2280.     FBOOL fClearTag;        // タグのクリア?
  2281.                             //WCE1.01 980308 for for tagnestNext
  2282.     int nTag;                // 現在までのタグ数
  2283.     struct tagTAGNEST* prev;
  2284.     struct tagTAGNEST* next;
  2285. } TAGNEST;
  2286.  
  2287. // タグ解析コンテキスト
  2288. typedef struct {
  2289.     BYTE lchTag;
  2290.     TEXTCHAR szTag[CCHTAG];
  2291.     BOOL fSingle;        // 単独タグか?
  2292.     BOOL fPara;            // 段落タグか?
  2293.     BOOL fParaSingle;    // 段落単独タグか?
  2294.     BOOL fEnd;            // 閉タグか?
  2295.     BOOL fChar;            // 文字タグか?
  2296.     BOOL fUser;            // ユーザ定義タグか?
  2297. } TAGANA;
  2298.  
  2299. // for "TD" atr analyze
  2300. typedef struct {
  2301.     int width;
  2302.     BOOL fWidthAuto;
  2303.     int lineTop;    // default:CELLLINE_LINE
  2304.     int lineLeft;    // default:CELLLINE_LINE
  2305.     int lineBottom;    // default:CELLLINE_NULL
  2306.     int align;        // default:CELLALIGN_LEFT
  2307.     int xbase;        // default:0
  2308. } CELLATR;
  2309. // atr align
  2310. #define CELLALIGN_LEFT        0    // 左揃え
  2311. #define CELLALIGN_CENTER    1    // 中央揃え
  2312. #define CELLALIGN_RIGHT        2    // 右揃え
  2313. // atr line
  2314. #define CELLLINE_NULL        0    // 線なし
  2315. #define CELLLINE_LINE        1    // 実線
  2316. #define CELLLINE_BOLD        2    // 太線
  2317. #define CELLLINE_CONNECT    3    // 連結
  2318.  
  2319. // for "IMG" atr analyze
  2320. typedef struct {
  2321.     wchar wszfilename[CCHPATHNAME];
  2322.     int modeDisp    ;        // 表示モード
  2323.         #define IMGDISP_WYSIWYG        0    // (default)画面上のサイズと同じサイズで印刷
  2324.         #define IMGDISP_TEXTRATE    1    // テキストの横幅に対するパーセンテージで印刷
  2325.         #define IMGDISP_RATE        2    // 図のサイズをパーセンテージで拡大/縮小して印刷
  2326.     int rate;                // (default=100)パーセンテージ
  2327.     BBOOL fAbsolutePath;    //WZ3.90I 981106 絶対パス?
  2328. #ifdef WINVER
  2329.     BITMAPFILEHEADER* dib;    // (default=NULL)埋め込みの場合はそのDIBデータ(malloced)
  2330. #else
  2331.     LPVOID dib;
  2332. #endif
  2333. } IMGATR;
  2334.  
  2335. // for "BEAM" atr analyze
  2336. typedef struct {
  2337.     int lx;                // lx
  2338.     BOOL fSpace;        // 余白数を指定する
  2339.     int nSpace;            // fSpaceの場合、このBEAMで空ける余白数
  2340. } BEAMATR;
  2341.  
  2342. // 図
  2343. #if !__TXC__
  2344. typedef struct tagIMGSET {
  2345.     wchar wszfilename[CCHPATHNAME];
  2346.     FBOOL fHeadAlloced;
  2347.     #if !UNIX
  2348.     BITMAPFILEHEADER* head;
  2349.     BITMAPINFOHEADER* info;
  2350.     BITMAPINFO* bitmapinfo;
  2351.     #endif
  2352.     LPBYTE bitmap;
  2353.     struct tagIMGSET* prev;    // for Cache link
  2354.     struct tagIMGSET* next;    // for Cache link
  2355. } IMGSET;
  2356.  
  2357. BOOL imgCreateDIB(IMGSET* img,int cx,int cy,int bits);
  2358. BOOL imgSave(IMGSET* img,BOOL fCreateAlways);
  2359. void imgFreeContents(IMGSET* img);
  2360. #endif
  2361.  
  2362. // リンクヒストリ
  2363. typedef struct {
  2364.     #define MAX_LINKHIST    100
  2365.     IFILE tAdr[MAX_LINKHIST];
  2366.     int n;
  2367.     int index;
  2368. } LINKHIST;
  2369.  
  2370. //##paraatr/見出し
  2371. //WCE1.01 980205 new    //WZ4.00Bl 990920 全面変更。
  2372. // この情報はキャッシュ的に用いること。必ずあると仮定して依存してはいけない。
  2373.  
  2374. typedef struct {
  2375.     IFILE paratop1;    // 段落先頭ifile+1(0:無効)
  2376. // 段落内のBEAMタブ桁情報(PARAATR_TEXT_BEAMTABは廃止してこれに統合した)
  2377.     WORD* tlxTab;
  2378.     int allocTab;    // アロケートした要素数
  2379. // 数KBを越える長い段落の折り返し計算キャッシュ(GplCache)
  2380.     IBUFF* tibuff;
  2381.     UINT paraoff;    // 現在tibuffに格納されている中で最大のparatopからのoffsetを保持
  2382.     int nCache;        // 現在の要素数
  2383.     int allocCache;    // アロケートした要素数
  2384. } PARAATREX;    //WZ4.00Bl 990918 new
  2385.  
  2386. enum {
  2387.     CPARA_NORMAL=1,
  2388.     CPARA_DIVMUL,CPARA_MULDIV,
  2389.     CPARA_IF_0,CPARA_IF_1,CPARA_IF_A,CPARA_ELSE,CPARA_ENDIF,
  2390.     CPARA_USER1_TOP,CPARA_USER1_END,
  2391.     CPARA_USER2_TOP,CPARA_USER2_END,
  2392. };
  2393.  
  2394. #if !WINDOWSCE
  2395. #pragma pack(push,1)    //WZ4.00Bl 990918 メモリ節約
  2396. #endif
  2397. typedef struct {
  2398.     PARAATREX* pex;            // 拡張情報                //WZ4.00Bl 990918 
  2399.     IFILE len;                // 段落の長さ(0:不明)    //WZ4.00Bl 990920 
  2400.     WORD fEdited:1;            // 編集が加えられた?
  2401.     WORD nline:6;            // この段落の表示行数(0:不明,PARA_NLINE_BIG:多すぎるのでカウントを中止した for 長大段落)
  2402.         #define PARA_NLINE_BIG    63
  2403.     WORD cpara:4;            // この段落の色分け属性(広範囲色分け用)(0:不明)
  2404.     WORD fCparaElif:1;        // "elif"の段落か?
  2405.     WORD reserved:4;
  2406. } PARAATR;
  2407. #if !WINDOWSCE
  2408. #pragma pack(pop)
  2409. #endif
  2410.  
  2411. #define MAX_NEST_CPARA    10
  2412.  
  2413. typedef struct {
  2414.     PARAATR* buff;            // PARAATR buff
  2415.     NPARA cur0;                // gap start
  2416.     NPARA cur;                // gap end + 1
  2417.     NPARA size;                // buff size
  2418.     BYTE fPsbOK:1;            // EOFまで数え終わり、数え直す必要はない?
  2419.     BYTE fPsbSetNlineall:1;    // PSBによってtext->nlineAllがセットされた?
  2420.     BYTE fPsbCountedAll:1;    // すべての段落をカウントし終えた?
  2421.     BYTE fPsbOnProc:1;        // 計算処理中?
  2422.     BYTE fNoSetGplCashe:2;    // 一時的にGplキャッシュに追加しない?
  2423.     NPARA nparaTopLast;        // paratop1を保持している最終段落
  2424.     NPARA nparaCparaLast;    // tCparaCond/nestCparaキャッシュを保持しているnpara
  2425.     BYTE tCparaCond[MAX_NEST_CPARA];
  2426.         #define CPARA_1        0x01    // 条件TRUE?
  2427.         #define CPARA_A        0x02    // #elseで反転しない?
  2428.     BYTE nestCpara;            // 
  2429. } PARAATR_CONTEXT;
  2430.  
  2431. #define HEADLINE_N        6        // 見出し数
  2432. #define CCHHEADLINE    CCHWORD        // 見出しの最大長さ    //WZ4.00Bj 990824 CCHSWORDから拡大 for 正規表現
  2433.  
  2434. typedef struct {
  2435.     mchar sz[CCHHEADLINE];
  2436.     BYTE lch;                    // 見出し文字列の長さ(無効な場合もあるので注意)
  2437.     BBOOL fDelete;
  2438.     BBOOL fCfunc;                // C関数定義を見出しとする?
  2439.     struct tagRE_CONTEXT* re;    // 正規表現見出しの場合は、!=NULL
  2440. } HEADLINE;
  2441.  
  2442. typedef struct {
  2443.     HEADLINE t[HEADLINE_N];
  2444. } HEADLINE_SET;
  2445.  
  2446. //##先割り原稿(評価中)(WZFUNC_WRITING用)
  2447.  
  2448. typedef struct {
  2449.     NLINE* tNline;    // [npara]のnline数
  2450.     UINT size;        // tNlineのアロケートn
  2451.     UINT npara;        // tNline[npara]まで有効。
  2452.     NLINE nlineCur;    // 内部用
  2453. } PLT_CONTEXT;
  2454.  
  2455. void txPltFree(TX* text);
  2456. NLINE txPltGetNline(TX* text,IBUFF ibuff,NPARA npara);
  2457.  
  2458. //##TX用ウィンドウメッセージ
  2459. // ユーザが間違えてWM_TXUSER以下を使った場合でも影響が出にくい様に800-900番台を使用
  2460.  
  2461. // 700-719:イベント・フック
  2462. #define WM_TXEVENT                (WM_USER+700)    //    id            arg        WZ3.90I 981024 
  2463.     // textから自分自身(text->hwndtext)へのイベント通知
  2464.     #define TXEVENT_INPUT        1    // IMEを介さないキーボードからの入力。arg:挿入される文字列
  2465.                                     // txSetHookWndproctextResultを使って1を返すと入力を行わない
  2466.     #define TXEVENT_INPUTIME    2    // IMEからの入力。arg:挿入される文字列
  2467.                                     // txSetHookWndproctextResultを使って1を返すと入力を行わない
  2468.     #define TXEVENT_OPEN        3    // (fFrameのみ)オープンされた
  2469.     #define TXEVENT_OPENED        4    // (fFrameのみ)オープン後
  2470.     #define TXEVENT_SAVE        5    // (fFrameのみ)保存前。arg:ファイル名
  2471.     #define TXEVENT_SAVED        6    // (fFrameのみ)保存後。arg:ファイル名
  2472.     #define TXEVENT_CLOSE        7    // (fFrameのみ)閉じる前
  2473.     #define TXEVENT_IDMEXEC        10    // IDMの実行前。arg:idm
  2474.                                     // txSetHookWndproctextResultを使って1を返すとIDMの処理を行わない
  2475.     //WZ4.00Cb 000117 TXEVENT_2STROKE廃止
  2476.     #define TXEVENT_JUMPLINK    12    // リンク先へジャンプ
  2477.                                     // arg:リンク先
  2478.     #define TXEVENT_JUMPURL        13    // URL/E-Mailへジャンプ
  2479.                                     // arg:ジャンプ先
  2480.     #define TXEVENT_CURSORMOVE    14    //WZ4.00Aa 990109 new
  2481.                                     // ユーザ操作でカーソル位置が変化した可能性がある
  2482.     #define TXEVENT_IDMEXECED    15    // IDMの実行後。arg:idm。    //WZ4.00Ab 990112 new
  2483. // 720-739: TXE用。アプリケーションで、アプリケーションに送られたキーのキャプチャーetc用
  2484. #define WM_TX_KEYDOWN            (WM_USER+720)    //    vk            hwnd
  2485.                                                 // キーをキャプチャーするかどうか返す
  2486. #define WM_TX_SYSKEYDOWN        (WM_USER+721)    //    vk            hwnd
  2487.                                                 // キーをキャプチャーするかどうか返す
  2488. #define WM_TX_LBUTTONDBLCLK        (WM_USER+722)    //    vk            hwnd
  2489.                                                 // キーをキャプチャーするかどうか返す
  2490. #define WM_TX_CHAR                (WM_USER+723)    //    vk            hwnd
  2491.                                                 // キーをキャプチャーするかどうか返す
  2492.                                                 //PWZ2BETA0.3A 980526 new
  2493. #define WM_TX_GET                (WM_USER+724)    //WZ4.00Db 000304 new
  2494.     #define TXGET_STATUSBAR        1
  2495. // 740-759: ダイアログウィンドウプロシジャ専用。wndprocText/Baseには無関係
  2496. #define WM_TXDIALOG_WRITEITEM    (WM_USER+740)    //    id            0
  2497. #define WM_TXDIALOG_PAGECHANGED    (WM_USER+741)    //    iPage        0
  2498. #define WM_TXDIALOG_WIZNEXT        (WM_USER+742)    //    iPage        0
  2499.                                                 //WZ3.90G 980830 返り値(移動できないなら-1)を返すこと
  2500. #define WM_TXDIALOG_WIZBACK        (WM_USER+743)    //    iPage        0
  2501.                                                 //WZ3.90G 980830 返り値(移動できないなら-1)を返すこと
  2502. #define WM_TXDIALOG_NOTIFY        (WM_USER+744)    //    id            arg
  2503.     #define TXDLGN_REFERED        100    // dialogControlIDによる参照が行われた。arg = idd。
  2504.     #define TXDLGN_PSN_APPLY    101    // プロパティシートでOKされた。arg = iPage    返り値(OKできないなら-1)を返すこと    //WZ4.00Ab 990119 new
  2505.     #define TXDLGN_PSN_WIZFINISH 102// ウィザードが終了した。
  2506. // 800-829: WZ内部用
  2507. #define WM_TXIDLEEXEC            (WM_USER+800)    //    id            lParam
  2508.                                                 // アイドル時に実行する内部動作 for wndprocBase
  2509.                                                 // IDLE_XXX
  2510.     #define IDLE_FIRST            100    // wndprocBase
  2511.     #define IDLE_REG            101    // wndprocBase
  2512.     #define IDLE_EXECFIND        102    // wndprocText
  2513.     #define IDLE_FLUSHWINDOW    103    // wndprocBase
  2514.     #define IDLE_CHECKFILETIME    104    // wndprocBase    //WZ4.00A 981227 
  2515.     #define IDLE_EXECREPLACESA    105    // wndprocBase    //WZ4.00Bl 990916 
  2516. #define WM_TXDRAGDROP            (WM_USER+801)    //    TXDD_xxx    arg
  2517.                                                 //WZ3.90I 981103 for D&D
  2518.     #define TXDD_START        1    // 開始
  2519.     #define TXDD_DROP        2    // ドロップ            arg = TXDD_DROP_ARG*
  2520.         typedef struct {
  2521.             HGLOBAL hGlobal;
  2522.             TX* text;            // !=NULLならtextのデータを挿入
  2523.         } TXDD_DROP_ARG;
  2524.     #define TXDD_DRAGOVER    3    // ドロップ先指定中    arg = MAKELONG(x,y)
  2525.     #define TXDD_SETDISP    4    // txSetDispする
  2526.     #define TXDD_ACTIVATE    5    // SetForegroundWindowする
  2527. #define WM_TXEMACS_TXCMD        (WM_USER+802)    //WZ4.00A 981230 new
  2528. #define WM_TXHTML_TXCMDPOST        (WM_USER+803)    //WZ4.00A 981230 new emacsライクキー定義でHTML編集ができるようにした。両者でWM_TXUSERを使っていてバッティングしていた。
  2529. #define WM_WKLBUTTON3            (WM_USER+804)    //WZ4.00Bl 990909 
  2530. #define WM_WKLBUTTON4            (WM_USER+805)    //WZ4.00Bl 990909 
  2531. #define WM_TXKEYN                (WM_USER+806)    //WZ4.00Ca 991212 
  2532. #define WM_TXCEVENT                (WM_USER+807)    //WZ4.00Db 000215 
  2533.     #define TXCEVENT_PRMSAVE1    1    // sh->szModuleで、__prmSaveされた
  2534.     #define TXCEVENT_PRMSAVE2    2    // sh->szModuleで、__prmSaveされた
  2535. // 830-849: WZ MAIL EDITOR専用
  2536. #define WM_MAILEDITN_CLOSE        (WM_USER+830)    //    id            fEnglish
  2537.                                                 //WZ3.90G 980902 fEnglish:英文
  2538. #define WM_MAILEDITN_SAVE        (WM_USER+831)    //    id            ヘッダ部分のサイズ
  2539. // 850-899: wndprocBase専用。他インスタンスのWZ窓の操作用/PostMessage用
  2540. #define WM_TXGETEDIT            (WM_USER+850)    //    0            0
  2541. #define WM_TXUISAVE                (WM_USER+851)    //    0            0
  2542. #define WM_TXQUIT                (WM_USER+852)    //    0            0
  2543. #define WM_TXSETACTIVE            (WM_USER+853)
  2544. #define WM_TXSETWINDOWLIST        (WM_USER+854)    //    hctrl        TXSWL_LPARAM
  2545.     enum {TXSWL_HISTMENU,TXSWL_WINDOWLIST,TXSWL_PRJ};
  2546.     typedef struct {
  2547.         UINT id:8;            // 0オリジン、番号指定
  2548.         UINT mode:2;        // モード
  2549.         UINT iMenuPos:8;    // InsertMenuに渡す挿入場所
  2550.         UINT fCur:1;        // この項目はカレント?
  2551.     } TXSWL_LPARAM;
  2552. #define WM_TXKEYMACROCONTINUE    (WM_USER+855)    //    0            0
  2553. #define WM_TXNEXTPARA            (WM_USER+856)    //    0            0
  2554. #define WM_TXSETUNDISP            (WM_USER+857)    //    fSetUndisp
  2555. #define WM_TXJUMPADDRESS        (WM_USER+858)    //    0            address
  2556. #define WM_TXJUMPFILEEND        (WM_USER+859)    //    void        void
  2557.                                                 //WZ3.90I 981023 new
  2558. #define WM_TXSPLITPARA            (WM_USER+860)    //    void        void
  2559.                                                 //WZ3.90I 981023 new
  2560.                                                 // カーソル位置の前文字が改行でなければ改行を挿入。
  2561. #define WM_TXCLOSEEVERY            (WM_USER+861)    //    fForce        0        WCE0.99
  2562. #define WM_TXQUERYCLOSE            (WM_USER+862)    //    0            0        フックを可能にすることも兼ねている
  2563. #define WM_TXWNDSETPOSSIZE        (WM_USER+863)    //    x,y            cx,cy    //WZ4.00A 981227 
  2564. #define WM_TXQUITMT                (WM_USER+864)    //    0            0        //WZ4.00Ec 010124 
  2565. // 900-949: WM_TERM_xxx,WM_MAIL_xxx
  2566. // 950-990: WM_OUTLINE_xxx
  2567. #define SBLISTN_FLUSHLIST        (WM_USER+996)
  2568. #define SBLISTN_FLUSHCONTENT    (WM_USER+997)
  2569. #define SBLISTN_SET                (WM_USER+998)
  2570. #define SBLISTN_ADD                (WM_USER+999)
  2571. // 1000: for user macro
  2572. #define WM_TXUSER                (WM_USER+1000)    // これ以下、user用
  2573.  
  2574. //##WM_NOTIFY/WM_TIMER/WM_COPYDATA/IDM
  2575. // text->hwndtextから親ウィンドウへの通知
  2576. //WZ3.90I 981026 WM_TXNOTIFYを廃止し、WM_NOTIFYによる通知に変更。
  2577.  
  2578. //WM_NOTIFY
  2579. #if UNIX&&defined(__TXC__)
  2580. typedef struct {
  2581.     HWND hwndFrom;
  2582.     int code;
  2583.     int idFrom;
  2584. } NMHDR;    //// まだ仮定義
  2585. #endif
  2586. #if defined(WINVER) || UNIX    // NMHDRが定義されている場合のみ
  2587. typedef struct {
  2588.     NMHDR hdr;    // hdrが先頭
  2589. } TXNOTIFY;
  2590. #endif
  2591. #define TXN_CHANGENPARA        1    // ユーザ操作でy座標が変化した
  2592. #define TXN_CHANGEX            2    // ユーザ操作でx座標が変化した(未完成)
  2593. #define TXN_IDMEXECPRE        3    //WCE1.01 980421 idmExec前か、文字挿入前
  2594. #define TXN_IDMEXECPOST        4    //WCE1.01 980421 idmExec後か、文字挿入後
  2595. #define TXN_CONTEXTMENU        5    //WZ4.00Ea 001202 !fFrame時、コンテキストメニュー要求
  2596.  
  2597. //WM_TIMER id
  2598. #define WM_TIMER_TXSCROLLMOUSE    900
  2599. #define WM_TIMER_TXAUTOSAVE        901
  2600. #define WM_TIMER_TXFLUSHTABLE    902                //WCE1.01 971222 
  2601. #define WM_TIMER_TXFLUSHDISPBOX    903                //WCE1.01 980209 
  2602. #define WM_TIMER_TXBRINKCURSOR    904                //WCE1.01 980409 
  2603. #define WM_TIMER_TXDRAGCHECK    905                //WZ3.90G 980827 new
  2604. #define WM_TIMER_TXCLICKACTIVE    906                //WZ3.90I 981104 
  2605. #define WM_TIMER_TXFLUSHDETAIL    907                //WZ3.90I 981106 
  2606. #define WM_TIMER_TXAUTOSCROLL    908                //WZ3.90J 981110 
  2607. #define WM_TIMER_TXFLUSHBEAMTAB    909                //WZ3.90L 981115 
  2608. #define WM_TIMER_HISTSAVE        910                //WZ4.00Bj 990808 for PWZ
  2609. #define WM_TIMER_SCROLLBARPROP    911                //WZ4.00Bl 990920 for プロポーショナルスクロールバー
  2610. #define WM_TIMER_TXUSER            1000            // これ以下、user用
  2611.  
  2612. //WM_COPYDATA id
  2613. // ユーザが間違えてWM_COPYDATA_TXUSER以下を使った場合でも影響が出にくい様に900番台を使用
  2614. #define WM_COPYDATA_CMPFILENAME        901        // CD_BOOL    //WZ4.00Bp 991014 仕様変更
  2615.     typedef struct {
  2616.         wchar wszfilename[CCHPATHNAME];
  2617.         wchar wszShort[CCHPATHNAME];    // 短い名前がある場合は、その名前。
  2618.     } CMPFILENAMEARG;    //WZ4.00Bp 991014 new
  2619. #define WM_COPYDATA_CMDLINE            902        // 
  2620. #define WM_COPYDATA_CMPBUFF            903        //WCE1.01 980202 
  2621.                                             // マッチしたバイト数+1を返す
  2622. #define WM_COPYDATA_ACCOUNT            904        // ACCOUNT受け渡し
  2623. #define WM_COPYDATA_INSERT            905        // 挿入する    //WZ3.90I 981023 
  2624. //#define WM_COPYDATA_CMPFILEID        906        //WZ4.00Bj 990825 new    //WZ4.00Bp 991014 廃止
  2625. #define WM_COPYDATA_GETFILENAME        907        //WZ4.00Bl 990908 new
  2626. #define WM_COPYDATA_FORK            908        //WZ4.00Bl 990914 new
  2627. #define WM_COPYDATA_TXUSER            1000    // これ以下、user用
  2628. // WM_COPYDATAは返り値0は返しちゃいけないみたいなので...
  2629. #define CD_TRUE        2
  2630. #define CD_FALSE    1
  2631.  
  2632. //IDM(id menu)
  2633. #define IDM_TXUSER                1000        // これ以下、30000までuser用
  2634.  
  2635. //##検索
  2636.  
  2637. typedef DWORD SEARCHMODE;        //1.92 検索モード
  2638.  
  2639. #define SEARCH_FORWARD            0x00000000L    // テキスト末尾方向へ検索(デフォルト)
  2640. #define SEARCH_PREV                0x00000001L    // テキスト先頭方向へ検索
  2641. #define SEARCH_AREA                0x00000002L    // 範囲内のみ検索する
  2642. #define SEARCH_NOESC            0x00000004L    // 検索文字列中の'\'の特別な意味を消して検索
  2643. #define SEARCH_CUR                0x00000008L    // カーソル位置の文字から検索
  2644.                                             // 以前は、置換時、前方検索時は
  2645.                                             // 無効でしたが、1.99Aから
  2646.                                             // 有効になりました。
  2647. #define SEARCH_SELECT            0x00000010L    // 見つけた文字列を選択する(置換時は無効)
  2648. #define SEARCH_ALL                0x00000020L    // テキスト全体で検索(置換時のみ)
  2649. #define SEARCH_PARATOP            0x00000040L    //1.00H2 論理行頭のみ検索
  2650. #define SEARCH_NOSENSECASE        0x00000080L    // 大文字・小文字を区別しない
  2651. #define SEARCH_NOSENSEZENHAN    0x00000100L    // 全角/半角文字を区別しない
  2652. #define SEARCH_WORD                0x00000200L    // ワードサーチ
  2653. #define SEARCH_RE                0x00000400L    // 正規表現による検索(text->modeReで動作が変わる)
  2654.                                             // 正規表現による検索では、SEARCH_NOESC,
  2655.                                             // SEARCH_NOSYMBOL,SEARCH_WORD,SEARCH_NOSENSEZENHANの指定は無効
  2656.                                             // SEARCH_NOSENSECASEはOK
  2657. #define REPLACE_CONFIRM            0x00000800L    // 置換確認を行う(置換時のみ)
  2658. #define REPLACE_ONCE            0x00001000L    //1.96 最初の1つだけ置換
  2659. #define SEARCH_NOSYMBOL            0x00002000L    //2.98 970309 テキストの改行や空白や記号を無視して検索
  2660. #define SEARCH_NOSELECT            0x00004000L    // 検索で見つけた文字列の選択を行わない
  2661. #define SEARCH_ALLTEXT            0x00008000L    //1.01A オープン中の全てのテキストを対象として検索
  2662.                                             // (検索するtextが裏テキストの場合は無効)(内部用)
  2663. #define SEARCH_PARA1            0x00010000L    //PWZ2BETA0.5 980617 現在の段落内のみ検索する
  2664.                                             // TXHIGH時には対応しない
  2665. #define SEARCH_REWZ                0x00020400L    //WZ3.90H 980908 正規表現による検索。必ずWZ標準で検索
  2666. #define SEARCH_REVWXW            0x00040400L    //WZ3.90H 980908 正規表現による検索。必ずVWXW互換で検索
  2667. #define SEARCH_REVWXWEX            0x00080400L    //WZ3.90H 980908 正規表現による検索。必ず拡張VWXW互換で検索
  2668. /*    //WZ3.90H 980908 廃止。SEARCHMODEは32bitしかないので、関係ないものは割り当てない
  2669. #define GREP_BACKUP                0x01000000L    //2.92 バックアップファイル内も検索(WZ Grepのみ)
  2670. #define REPLACE_CONFIRMMODAL    0x02000000L    //2.92 REPLACE_CONFIRMをモーダルで実行
  2671. #define SEARCH_NEXTTEXT            0x04000000L    //2.00B WZ.EXE内部用
  2672. #define SEARCH_OLDDIALOG        0x08000000L    // search.c
  2673. #define SEARCH_REPLACE            0x10000000L    // search.c
  2674. #define SEARCH_DIALOGCOMPACT    0x20000000L    //2.97 970225 search.c
  2675. #define GREP_DIRECTORY            0x20000000L    // サブディレクトリ内も検索(WZ Grepのみ)
  2676. #define SEARCH_DIALOGSLIST        0x40000000L    //2.97 970225 search.c
  2677. #define GREP_BINARY                0x40000000L    // バイナリファイル内も検索(WZ Grepのみ)
  2678. */
  2679.  
  2680. // 正規表現用追加検索モード
  2681. typedef DWORD SEARCHRE;
  2682. #define SEARCHRE_NOTOPPARA        0x00000001L    // メモリブロックの先頭は段落先頭でない
  2683. #define SEARCHRE_NOTOPWORD        0x00000002L    // メモリブロックの先頭は単語先頭でない
  2684. #define SEARCHRE_NOENDPARA        0x00000004L    // メモリブロックの末尾は段落末尾でない
  2685. #define SEARCHRE_NOENDWORD        0x00000008L    // メモリブロックの末尾は単語末尾でない
  2686. #define SEARCHRE_VWXW            0x00000010L    // VWXWとできるだけ互換性を持つモード
  2687. #define SEARCHRE_VWXWEX            0x00000020L    // VWXWの拡張表現を使用。SEARCHRE_VWXWのときだけ指定すること。
  2688. #define SEARCHRE_BINARY            0x00000040L    // バイナリ検索
  2689. #define SEARCHRE_TXF            0x00000080L    // CHAR_TXFを特別扱い?
  2690.  
  2691. typedef struct {
  2692.     BOOL fWord;
  2693.     BOOL fSenseCase;
  2694.     BOOL fSearchNoSymbol;
  2695.     BOOL fFuzzy;
  2696.     BOOL fPrev;
  2697.     BOOL fAll;
  2698.     BOOL fArea;
  2699.     BOOL fReplaceConfirm;
  2700.     BOOL fRe;        //WZ3.90G 980905 
  2701.     BOOL fNoEsc;    //WZ4.00Bl 990908 
  2702.     BOOL fAllText;    //WZ4.00Bl 990916 
  2703. // 以下、SEARCHMODEに関係ない
  2704.     BOOL fSearchSet;
  2705.     BOOL fOpenTempWindow;    //WZ3.90H 980914 
  2706.     BOOL fReplace;            //WZ3.90H 980914 
  2707.     int mode;                //WZ3.90J 981112 基本/曖昧/単語/正規
  2708.         #define SEARCHOPT_DIALOG_NEW    1
  2709.     TX* text;
  2710. } SEARCHOPT;
  2711.  
  2712. typedef struct {
  2713.     mchar szfind[CCHSEARCH];
  2714.     mchar szreplace[CCHSEARCH];
  2715.     SEARCHMODE searchmode;
  2716. } SEARCH_PACKET;        //WZ3.90H 980910 new
  2717.  
  2718. typedef struct {
  2719.     TX* text;
  2720.     TX* textExpandTag;            //WZ3.90L 981123 NULL以外ならfExpandTag時にこちらに展開する。
  2721.     int cbFind;
  2722.     int nReplace;
  2723.     SEARCHMODE searchmode;        //WZ3.90H 980907 
  2724.     mchar* szreplace0;            //WZ3.90H 980907 オリジナルのszreplace
  2725.     mchar szreplace[CCHTXSTR];    //WZ3.90H 980907 置換文字列の'\'対応
  2726.                                 //WZ3.90L 981123 CCHWORD->CCHTXSTRに拡大
  2727.     int lchReplace;
  2728.     BOOL fExistTag;                //WZ3.90H 980907 正規表現置換でタグ指定がある?
  2729.         #define RETAG_EXIST        0x01
  2730.         #define RETAG_FIND        0x02    // $+
  2731.         #define RETAG_FINDPREV    0x04    // $`
  2732.         #define RETAG_FINDNEXT    0x08    // $'
  2733.     IFILE cliptop;                //WZ3.90H 980908 for 範囲内の確認置換
  2734.                                 //WZ3.90H 980908 範囲内の置換で確認がONだと1回しか置換されなかった
  2735. } TXSEARCH_CONTEXT;    //WZ3.90L 981123 検索置換実行時コンテキスト
  2736. BOOL rcReplaceInit(TXSEARCH_CONTEXT* rc,BOOL fExpandTag);
  2737.  
  2738. //##コマンドライン解析
  2739.  
  2740. typedef struct tagWZMAILEDITORFLAGS {
  2741.     DWORD modeMailAddress:2;    //WCE1.01 980409 アドレス帳モード
  2742.         #define MODEMAILADDRESS_EMAIL    0
  2743.         #define MODEMAILADDRESS_NIFTY    1
  2744.     DWORD category:3;            //PWZ2BETA0.3 980522 種類
  2745.         #define MAILEDIT_MAIL        0    // メール
  2746.         #define MAILEDIT_MESSAGE    1    // メッセージ
  2747.         #define MAILEDIT_NOTE        2    // WZ NOTE
  2748.     DWORD categoryMailbox:3;    //PWZ2BETA0.3 980522 
  2749.                                 // MAILBOX_INTERNET etc
  2750.     DWORD charset:3;            //WZ3.90M 981129 旧fEnglish
  2751.     DWORD fSendButton:1;        //WZ4.00Bj 990812 「送信」ボタンを付ける?
  2752.     DWORD fDispToCc:1;            //WZ4.00Bo 991011 ToとCcを表示?
  2753.     DWORD reserved:19;            //WZ4.00Bj 990812 合計が32bitになってなかったので修正
  2754. } WZMAILEDITORFLAGS;    //PWZ2BETA0.3 980510 
  2755. typedef struct {
  2756.     BOOL fNeedCreateInstance;    // このコマンドラインの実行には、
  2757.                                 // 新しいインスタンスを生成する必要がある
  2758.     wchar wszfilename[CCHPATHNAME];    // 編集ファイル名
  2759.                                 // 複数指定の場合は、先頭に指定されたファイル名
  2760.                                 // 後続のファイル名は無視される
  2761.     wchar wszMacro[CCHWORD];    // オープン後、このマクロを実行
  2762.     wchar wszExt[CCHNAME];        // この拡張子をデフォルトで付ける
  2763.     wchar wszMacroFork[CCHPATHNAME];
  2764.                                 // WZ Editorではなく、Filerなど
  2765.                                 // PWZ apを起動
  2766.     mchar szPluginMacro[CCHWORD];//WZ4.00Ca 991203 このプラグインマクロを組み込む(標準のプラグインは組み込まれない)。
  2767.     mchar szFind[CCHSEARCH];        // 検索文字列
  2768.     MESSAGEID midConfig;        //WZ4.00Ee 010417 使用する文書の設定
  2769.     #if WZFUNC_PRINT
  2770.     MESSAGEID midLpstyle;        //WZ4.00Ee 010417 使用する印刷スタイル
  2771.     #endif
  2772. #if 0    //WZ4.00Ee 010417 廃止
  2773.     mchar szcfg[CCHSTYLENAME];    //WZ3.90J 981112 使用する設定名
  2774. #if WZFUNC_PRINT
  2775.     mchar szlpstyle[CCHLPSTYLE];//WZ4.00Bj 990830 印刷スタイル名
  2776. #endif
  2777. #endif
  2778.     int nCmdShow;                // nCmdShow
  2779. __BITFIELD_BORDER__
  2780.     WORD fViewer:1;                // viewモードで起動
  2781.     WORD fMulti:1;                // 複数のファイル名が指定されている
  2782.     WORD fSingleFileName:1;        // コマンドラインに空白を含むファイル名をそのまま指定
  2783.                                 // このオプション指定は、ファイル名の指定の前に行なうこと
  2784.     WORD fNoCheckDuplicate:1;    // 多重化でもなく、二重化でもなく、
  2785.                                 // ファイルを複数窓でオープンする
  2786.     WORD fNoAddHist:1;            // 起動時にファイル名をヒストリに追加しない
  2787.     WORD fNoTextPathSearch:1;    // テキストファイルのパス検索をしない
  2788.     WORD fNoProfile:1;            // txOpenTextでプロファイルを参照しない
  2789.     WORD fNoProfileJump:1;        // txOpenTextでプロファイルによるジャンプをしない?    //WZ4.00Bl 990922 
  2790.     WORD fClipPaste:1;            //PWZ2BETA0.3 980512 起動後にペーストする
  2791.     WORD fNoFileShareControl:1;    //PWZ2BETA0.4 980604 排他制御をかけない?
  2792.     WORD fNoPluginMacro:1;        //WZ4.00Ca 991201 プラグインマクロを組み込まない?
  2793.     WORD fReload:1;                //PWZ2BETA0.4 980607 既に起動されているときは、再読み込みする
  2794.     WORD fTags:1;                //PWZ2BETA0.4 980612 タグファイルとして開く
  2795.     WORD fOpenMulti:1;            //WZ3.90H 980915 もし既にオープンされていたら多重化する。
  2796.     WORD fKcOpenAuto:1;            //WZ4.00Bl 990915 漢字コードを自動判別?
  2797.     WORD fKcOpen:1;                //WZ3.90H 980927 kcOpenの漢字コードで開く
  2798. __BITFIELD_BORDER__
  2799.     WORD kcOpen:3;                //WZ3.90H 980927 
  2800.     WORD fPrjOpen:1;            //WZ3.90I 981030 プロジェクトを開く?
  2801.     WORD fSetWindowPos:1;        //WZ3.90I 981030 ウィンドウ位置を指定?
  2802.     WORD fDuptext:1;            //WZ3.90I 981103 2重化?
  2803.     WORD fOpenQuit:1;            //WZ3.90I 981103 ファイルオープンダイアログを出して終了
  2804.     WORD fJumpAddress:1;        //WZ3.90L 981123 adrJumpにジャンプ?
  2805.     WORD fJumpAnchor:1;            //WZ4.00Ca 991208 adrJumpのアンカーにジャンプ?
  2806.     WORD fIDM_UINEW:1;            //WZ3.90N 981202 IDM_UINEWする?
  2807.     WORD fNeedCreateWindow:1;    //WZ4.00Ab 990204 このコマンドラインの実行には新しいウィンドウを作成する必要がある
  2808.                                 // 空テキスト上からの実行の場合でも、空テキストはそのままで、新しいウィンドウを作成する必要がある
  2809.     WORD fLpPrint:1;            //WZ4.00Bj 990830 印刷する?ダイアログを表示
  2810.     WORD fLpPrintExec:1;        //WZ4.00Bj 990830 印刷する?直ちに実行。
  2811.     WORD fMailEditorForked:1;    //WZ4.00Ca 991126 内部用
  2812.     HWND ehHwnd;                // キャプチャ中の他プロセスの"EDIT"クラスウィンドウハンドル
  2813.     HWND ehHwndBase;            // ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
  2814.     BYTE ehTarget;                //WZ3.90I 981031 ehTarget
  2815.     NPARA nparaJump;            // ジャンプ先(0:指定なし)
  2816.     int offset1Jump;            // ジャンプ先のバイトオフセット+1(0:指定なし)
  2817.     int fJumpLy;                // 't':lyを0に
  2818.                                 // 'c':lyを中央に
  2819.                                 // n:lyをn-1に
  2820.     IFILE adrJump;                //WZ3.90L 981123 ジャンプ先アドレス
  2821.     FBOOL fUiReg;                // レジストリメンテ?
  2822.     WORD igene1;                //WCE1.01 980201 (gene1 - 1)の世代を開く
  2823.     HWND hwndMailer;            //WCE1.01 980327 メーラのhwnd
  2824.     WORD idMail;                //WCE1.01 980327 このメールのID
  2825.     BYTE modeMail;                //WCE1.01 980327 モード
  2826.     WZMAILEDITORFLAGS mailflags;//PWZ2BETA0.3 980522 
  2827.     RECT rect;                    //WZ3.90I 981030 ウィンドウ位置(fSetWindowPos時に有効)
  2828. } CMDLINECONTEXT;
  2829.  
  2830. BOOL cmdlineAnalyzeW(CMDLINECONTEXT* cc,wchar* szcmdline,int nCmdShow);
  2831. void cmdlineDeleteOneFilenameW(wchar* szcmdline);
  2832. void SendMessageCmdline(HWND hwnd,wchar* wszcmdline);
  2833.  
  2834. typedef struct {
  2835.     HWND hwnd;                //  fAlreadyOpen : 既にオープンされていたテキストのhwndbase
  2836.                             // !fAlreadyOpen : オープンしたテキストのhwndbase
  2837.     TX* text;                // オープンしたtext(同一プロセスWZの場合)
  2838.                             // fAlreadyOpenで、同一プロセスWZなら、
  2839.                             // 既にオープンされているtext
  2840.     FBOOL fAlreadyOpen;        // 既にオープンされていた
  2841.                             //WZ4.00Bl 990916 スペルミス修正fAlrearyOpen->fAlreadyOpen
  2842.     FBOOL fWzexec;            // WZを起動した
  2843.     BYTE reserved[32];
  2844. } TXFORKRESULT;
  2845.  
  2846. //##印刷/FONTSET
  2847.  
  2848. // 標準の文字の高さ
  2849. #if WINDOWSCE
  2850.     #if WINDOWSCE2
  2851.         #define lfHeightDefault            10
  2852.         #define lfHeightDialogDefault    10
  2853.     #else
  2854.         #define lfHeightDefault            8
  2855.         #define lfHeightDialogDefault    8
  2856.     #endif
  2857. #else
  2858.         #define lfHeightDefault            12
  2859.         #define lfHeightDialogDefault    9
  2860. #endif
  2861.  
  2862. #define CXY_LPREVIEW_FRAMEBASE        4
  2863.  
  2864. // ユーザフォントセット定義    //WZ4.00Bl 990920 new
  2865. #define USERFONTSET_N    3    //WZ4.00Bl 990919 ユーザ定義できる数。
  2866. typedef struct {
  2867.     mchar lfFaceName[LF_FACESIZE];
  2868.     mchar lfFaceName2[LF_FACESIZE];
  2869.     mchar szHeight2[5];    // lfFaceName2のサイズ
  2870.                         // 0:標準、+n,-n:増減、n%:比率指定
  2871.     BBOOL fFont2_5C;    // 文字コード5C(\)にhfont2を用いる?        //WZ4.00Bl 990920 
  2872.     BYTE reserved[40];    // 拡張用
  2873. } USERFONTSET;
  2874.  
  2875. typedef struct tagFONTSET {
  2876. BYTE configTop;
  2877. // ユーザ指定 - LOGFONTに影響する部分、CACHEのタグとして使用
  2878.     mchar lfFaceName[LF_FACESIZE];
  2879.     int lfHeight;
  2880.     FBOOL lfItalic;        // イタリック?
  2881.     FBOOL lfUnderline;    // アンダーライン?
  2882.     FBOOL lfStrikeOut;    // 打ち消し線?
  2883.     WORD lfWeight;        //WCE1.01 980302 太字も使える様に
  2884.                         // 0:標準 1-1000: 太さを指定。1000が一番太い
  2885. // ユーザ指定 - LOGFONTに影響しない部分、CACHEのタグとしては使用しない
  2886.     FBOOL lfEuro;        // SJIS中の欧文処理をする?
  2887.     WORD lfSup;            // 上付き表示する?
  2888.                         // しない場合は0
  2889.                         // する場合は基準フォントのcyAscent
  2890. BYTE configEnd;
  2891. // 内部情報
  2892.     HFONT hfont;
  2893.     HFONT hfont2;        // フォント2(半角英字表示に用いる)(通常はなし)    //WZ4.00Bl 990919 
  2894.     int cxChar;            // 文字幅
  2895.     int cyChar;            // 文字の高さ
  2896.     int cyAscent;        // 文字のベースラインより下の部分の高さ
  2897.     int cyDescent;        // 文字のベースラインより下の部分の高さ
  2898.     int tcyAscent[2];    // hfont2がある場合、hfont,hfont2それぞれのAscent    //WZ4.00Bl 990920 
  2899.     int tcyDescent[2];    // hfont2がある場合、hfont,hfont2それぞれのDescent    //WZ4.00Bl 990920 
  2900.     int cxCharKanji;    // 漢字の文字幅(fKanji時のみ)
  2901.     #if TB_EUC
  2902.     int cxCharKana;        // カナの文字幅(fKanji時のみ)
  2903.     #endif
  2904.     int lfHeightIme;    // IMEに渡す用    //WZ4.00Bn 991005 
  2905.     FBOOL fProp;        // プロポーショナルフォント?
  2906.                         // 漢字は固定ピッチとして扱う
  2907.                         // ひらがな、カタカナをプロポーショナルとする
  2908.     FBOOL fKanji;        // TRUE:漢字を含むフォント(ShiftJIS)、FALSE:漢字を含まないフォント(文字コード0-255まで)
  2909.     CBOOL fLock;        //WZ3.90O 981203 キャッシュアウトされないようにロックされている?
  2910.     FBOOL fFont2_5C;    // 文字コード5C(\)にhfont2を用いる?        //WZ4.00Bl 990920 
  2911.     WORD* tcxChar;        // fPropの場合、文字幅の配列
  2912.     struct tagFONTSET* prev;    // for Cache link
  2913.     struct tagFONTSET* next;    // for Cache link
  2914. } FONTSET;
  2915.  
  2916. enum {FRAME_NONE,FRAME_LINE,FRAME_DOUBLELINE};
  2917. typedef struct {
  2918.     mchar lfFaceName[LF_FACESIZE];
  2919.     int lfHeight;        // フォントの高さ(perHeight != 0ならperHeightに従う)
  2920.     WORD perHeight;        // !=0なら、フォント高さを本文フォント基準の%で指定
  2921.     FBOOL lfItalic;        // イタリック?
  2922.     FBOOL lfUnderline;    // アンダーライン?
  2923.     WORD lfWeight;        // 太字
  2924.                         // 0:標準 1-1000: 太さを指定。1000が一番太い
  2925.     BYTE modeAlign;        // 配置
  2926.                         // (ALIGN_NONE,ALIGN_LEFT,ALIGN_CENTER,ALIGN_RIGHT)
  2927.     WORD perNline;        // 行どり(%)
  2928.     COLORREF rgbColor;    // 文字の色
  2929.     BYTE modeFrameLeft;    // 枠線のなし/あり
  2930.     BYTE modeFrameTop;
  2931.     BYTE modeFrameRight;
  2932.     BYTE modeFrameBottom;
  2933.         #define pointToDpt(pt)    (pt * 10)
  2934.     WORD dptFrameLeft;    // 枠線の太さ(0.1ポイント単位)
  2935.     WORD dptFrameTop;
  2936.     WORD dptFrameRight;
  2937.     WORD dptFrameBottom;
  2938.     BYTE perFrameAmi;    // 枠線の網掛け(%)
  2939. } HEADLINESTYLE;    // 見出しスタイル
  2940.  
  2941. typedef struct {
  2942. BYTE configTop;
  2943. // 以下、ユーザ設定
  2944. // configEndまでバイナリ出力
  2945. // dm:プリンタオプション
  2946. // twips:1/1440inch = 0.01764mm  (最大32767twipsまでであることに注意)
  2947. // mcm:0.1mm
  2948. //     設定値はmcmで持つ。twipsで持って、ダイアログ設定時にmcmに変換すると
  2949. //     割り算の誤差によってダイアログで何も変更しないでOKしても設定値が変わった。
  2950. // lpx:プリンタピクセル座標
  2951.     // プリンタ
  2952.     SIGNED_WORD dmPaperSize;        // 用紙サイズ
  2953.     SIGNED_WORD dmOrientation;        // 用紙の向き
  2954.     SIGNED_WORD dmScale;            // スケーリング(100=等倍)(未完成)
  2955.     SIGNED_WORD dmScaleFont;        // フォント(本文と見出し)と図のスケーリング(100=等倍)
  2956.     SIGNED_WORD dmDefaultSource;    // 用紙供給元
  2957.     SIGNED_WORD dmTTOption;            // TrueTypeフォントの印刷方法
  2958.     SIGNED_WORD dmPrintQuality;        // 印字品質(マイナス値の場合もある)
  2959.     BBOOL fPrinterName;                // プリンタ名を指定するか
  2960.     mchar szPrinterName[CCHWORD];    // プリンタ名
  2961.     // 余白
  2962.     SIGNED_WORD mcmMarginTop;        // 上余白
  2963.     SIGNED_WORD mcmMarginLeft;        // 左余白
  2964.     SIGNED_WORD mcmMarginBottom;    // 下余白
  2965.     SIGNED_WORD mcmMarginRight;        // 右余白
  2966.     SIGNED_WORD mcmPaperWidth;        // 用紙サイズ
  2967.     SIGNED_WORD mcmPaperHeight;        // 用紙サイズ
  2968.     SIGNED_WORD mcmCharInt;            // 字間(未完成)
  2969.     SIGNED_WORD mcmLineInt;            // 行間
  2970.     SIGNED_WORD mcmClmInt;            // 段組間の空白
  2971.     BBOOL fMarginSymmetry;            // 左右ページでマージンを対称に
  2972.     BBOOL fLineInt;                    // 行間を指定?
  2973.     // 文字数・行数
  2974.     BYTE modeLcxLcy;                // 文字数・行数の指定方法
  2975.         #define MODELCXLCY_TEXT        0    // 文書の設定を使用
  2976.         #define MODELCXLCY_SPECIFY    1    // 指定
  2977.         #define MODELCXLCY_PAPER    2    // 用紙サイズから自動計算
  2978.     SIGNED_WORD lcx;                // 文字数
  2979.     SIGNED_WORD lcy;                // 行数
  2980.     SIGNED_WORD nClm;                // 段組数
  2981.     BYTE modeVertical;                // 縦書き/横書き    //WZ3.90O 981204 
  2982.     // ヘッダ・フッタ
  2983.     SIGNED_WORD mcmMarginHeader;    // ヘッダ上余白
  2984.     SIGNED_WORD mcmMarginFooter;    // フッタ下余白
  2985.     BBOOL fHeader;                    // ヘッダを印刷
  2986.     BBOOL fFooter;                    // フッタを印刷
  2987.     BBOOL fSpecifyHeader2;            // 偶数ページのヘッダ/フッタを指定する?
  2988.     BBOOL fHeaderSymmetry;            // 左右ページでヘッダフッタを対称に
  2989.     mchar szHeader[CCHWORD];        // ヘッダ文字列
  2990.     mchar szFooter[CCHWORD];        // フッタ文字列
  2991.     mchar szHeader2[CCHWORD];        // 偶数ページのヘッダ文字列
  2992.     mchar szFooter2[CCHWORD];        // 偶数ページのフッタ文字列
  2993.     mchar lfHeaderFaceName[LF_FACESIZE];// ヘッダのフォント名
  2994.     SIGNED_BYTE lfHeaderHeight;            // ヘッダのフォントサイズ
  2995.     // フォント
  2996.     BBOOL fUsePrintFontstyle;        // TRUE        本文、見出しをLPRINTのフォントで印刷
  2997.                                     // FALSE    文書の設定のフォントで印刷
  2998.     mchar lfFaceName[LF_FACESIZE];    // フォント名
  2999.     SIGNED_BYTE lfHeight;            // フォントサイズ
  3000.     // その他
  3001.     BBOOL fDispLineNo;                // 行番号を印刷?
  3002.     BBOOL f2pages;                    // 袋とじ?
  3003.     mchar szTemplateHeader[CCHWORD];// レターヘッダ用テンプレート
  3004.     mchar szTemplateFooter[CCHWORD];// レターフッタ用テンプレート
  3005.     BBOOL fColor;                    //WZ3.90H 980926 カラー印刷を行う?
  3006.     BYTE charatr;                    //WZ4.00Bo 991012 文字装飾(太字,下線,斜体)の印刷を行う?
  3007.         // Bold   mask:0x01(COLORING_BOLD)
  3008.         // Under  mask:0x02(COLORING_UNDER)
  3009.         // Italic mask:0x08(COLORING_ITALIC)
  3010.     // スタイル
  3011.     BBOOL fUseHeadlineStyle;        //WZ3.90I 981103 見出しのスタイルを使うか?
  3012.     HEADLINESTYLE tHeadlineStyle[HEADLINE_N];    //WZ3.90I 981030 見出しのスタイル
  3013. BYTE configEnd;
  3014.     mchar szstyle[CCHWORD];    // スタイル名
  3015.     MESSAGEID mid;            // メッセージID    //WZ4.00Ee 010411 
  3016. // 以下、内部情報。設定ファイルには出力しない
  3017.     TX* text;
  3018.     HANDLE hDevNames;        // デバイス名
  3019.     HANDLE hDevMode;        // デバイスモード
  3020.     int cbDevMode;            // sizeof DEVMODE
  3021.     CBOOL fHoldDev;            //WZ3.90O 981203 txLpFlushPreviewでhDevNames,hDevModeを保持?
  3022.                             //WZ4.00Ec 010201 廃止
  3023.     mchar szPrinterNameDefault[CCHWORD];//WZ3.90P 981206 現在の通常のプリンタ名
  3024.                                     // 空ならWindowsから通常のプリンタ名を取得
  3025.                                     // 空でなければ印刷ダイアログで選ばれたプリンタ名。
  3026.                                     // これをszPrinterNameよりも優先して使用し、印刷ダイアログでのプリンタの切り替えをサポート。
  3027.     // 各種サイズ
  3028.     SIGNED_DWORD logPixelsX;        // 1インチあたりのデバイスピクセル数 X
  3029.     SIGNED_DWORD logPixelsY;        // 1インチあたりのデバイスピクセル数 Y
  3030.     SIGNED_WORD lpxMarginTop;        // 上余白
  3031.     SIGNED_WORD lpxMarginLeft;        // 左余白
  3032.     SIGNED_WORD lpxMarginBottom;    // 下余白
  3033.     SIGNED_WORD lpxMarginRight;        // 右余白
  3034.     SIGNED_WORD lpxMarginLeftAdd;    // 縦書き & 袋とじ印刷用
  3035.     SIGNED_WORD lpxMarginHeader;    // ヘッダ上余白
  3036.     SIGNED_WORD lpxMarginFooter;    // ヘッダ下余白
  3037.     SIGNED_WORD lpxPaperWidth;        // 用紙幅(用紙の向きdmOrientationの影響は受けない)
  3038.     SIGNED_WORD lpxPaperHeight;        // 用紙サイズ(用紙の向きdmOrientationの影響は受けない)
  3039.     SIGNED_WORD lpxLineInt;            // 行間
  3040.     SIGNED_WORD lpxCharInt;            // 字間(未完成)
  3041.     SIGNED_WORD lpxClmInt;            // 段組間の空白
  3042.     SIGNED_WORD lpcxClm;            // 1段の幅
  3043.     SIGNED_WORD lpcxClient;            // 紙のサイズ(左右マージンの分も含む)
  3044.                                     // 用紙の向きが縦なら、lpxPaperWidthと同じ
  3045.                                     // 用紙の向きが横なら、lpxPaperHeightと同じ
  3046.     SIGNED_WORD lpcyClient;            // 紙のサイズ(上下マージンの分も含む)
  3047.                                     // 用紙の向きが縦なら、lpxPaperHeightと同じ
  3048.                                     // 用紙の向きが横なら、lpxPaperWidthと同じ
  3049.     // 印刷可能域
  3050.     SIGNED_WORD mcmMarginMinTop;    // 印刷マージンの最小値
  3051.     SIGNED_WORD mcmMarginMinLeft;
  3052.     SIGNED_WORD mcmMarginMinBottom;
  3053.     SIGNED_WORD mcmMarginMinRight;
  3054.     SIGNED_WORD lpxOffsetX;            //WZ3.90H 980926 
  3055.     SIGNED_WORD lpxOffsetY;            //WZ3.90H 980926 
  3056.     SIGNED_WORD lpxMarginMinRight;    //WZ3.90I 981014 for 縦書き
  3057.     // HDC
  3058.     HDC hdc;                // プリンタデバイスコンテキスト
  3059.     HDC hic;                // プリンタ情報コンテキスト
  3060.     int fGetHdc;            // GetHdcカウンタ
  3061.     int fGetHic;            // GetHicカウンタ
  3062.     BBOOL fNoPrinter;        //WZ3.90N 981130 プリンタがない。この場合hdc,hicは画面のDCになる
  3063.     // 印刷中ワーク
  3064.     int fPrint;                // 印刷モードフラグカウンタ
  3065.     NPARA npara;            // 印刷モードに入ったときのnpara
  3066.     IFILE ich;                // ich
  3067.     int ly;                    // ly
  3068.     SIGNED_WORD xbase;        // xbase
  3069.     WORD nSpaceTop;            // 
  3070.     WORD cySpace;            // 
  3071.     IFILE adr0;
  3072.     NPAGE npageStart;        // 印刷開始ページ
  3073.     NPAGE npageEnd;            // 印刷終了ページ
  3074.     NPAGE npageAll;            // 全ページ
  3075.     FILETIME time;            // 印刷開始時間
  3076.     BBOOL flpPreview;
  3077.     IFILE lpAdr0;            // 印刷プレビュー中に印刷した場合の位置保持
  3078.     FBOOL fVertical;        //WZ3.90O 981204 
  3079.     // プレビュー
  3080.     BYTE fNoViewportOrg;    // ViewportOrgを変更しない?
  3081.     int xViewportOrg;        // 原点X
  3082.     int yViewportOrg;        // 原点Y
  3083.     SIGNED_WORD cxWindow;    // hwndtextの幅
  3084.     SIGNED_WORD cyWindow;    // hwndtextの高さ
  3085.     // 設定保存しない、印刷時の設定
  3086.     BBOOL fNpagenum;        // 開始ページのページ番号を指定?
  3087.     NPAGE npagenum;            // 開始ページのページ番号
  3088.     BYTE modePrintPage;        // 0:全てのページを印刷,1:奇数ページを印刷,2:偶数ページを印刷
  3089.     BBOOL fLpSelect;        // 選択範囲を印刷?
  3090.     int nCopy;                // 部数
  3091.                             // プリンタが複数部数をサポートしている場合は1
  3092.     BBOOL fCollate;            // 部単位で印刷
  3093.                             // プリンタがサポートしている場合はFALSE
  3094.     // 範囲内の印刷
  3095.     BBOOL fLpClip;            // 範囲内の印刷モード中?
  3096.     IFILE adrClipEnd;        // 範囲の末尾アドレス
  3097.     int fClip0;
  3098.     IFILE cliptop0;
  3099.     IFILE texttopClip0;
  3100.     IFILE adrClip0;
  3101.     int lyClip0;
  3102.     NLINE nlineClip;        // 範囲先頭のnline
  3103.     NPARA nparaClip;        // 範囲先頭のnpara
  3104.     // 内部ワーク
  3105.     FBOOL fInsideSetupLcxLcyLineint;
  3106.     struct tagDIALOG* hd;
  3107.     BYTE errorLpstyle;        //WZ3.90H 980926 lpSetupLcxLcyLineintでのエラー
  3108.         #define ERROR_LPSTYLE_LCX            1
  3109.         #define ERROR_LPSTYLE_LCY            2
  3110.         #define ERROR_LPSTYLE_MARGIN_LEFT    3
  3111.         #define ERROR_LPSTYLE_MARGIN_TOP    4
  3112.         #define ERROR_LPSTYLE_MARGIN_RIGHT    5
  3113.         #define ERROR_LPSTYLE_MARGIN_BOTTOM    6
  3114.         #define ERROR_LPSTYLE_MARGIN_HEADER    7
  3115.         #define ERROR_LPSTYLE_MARGIN_FOOTER    8
  3116.         #define ERROR_LPSTYLE_LINEINT        9
  3117.         #define ERROR_LPSTYLE_NOPRINTER        10
  3118.     BYTE errorLpstyle0;        //WZ3.90H 980926 前回の表示
  3119.     CBOOL fHeadlinestylePreview;    //WZ3.90I 981030 見出しスタイルのプレビュー用?
  3120.     CBOOL fNoLpInit;        //WZ4.00Ec 010207 
  3121. } LPRINT;
  3122.  
  3123. //ページ
  3124. #define NPAGE_MAX    9999
  3125. typedef struct {
  3126.     IFILE ifilePagetop;        // ページ先頭のIFILE
  3127.     WORD lcy;                // ページ内の表示行数
  3128.     WORD yAdd;                //WCE1.01 980301 カラム2段目以降に付加したy
  3129.                             // 0 <= y <= yAddは1段組である
  3130.     BYTE nClm;                // このページの最大段組数
  3131. } PAGEATR;
  3132.  
  3133. // for 印刷プレビュー
  3134. // 現在ページ内の各行の情報
  3135. // 印刷プレビュー時もlyをメインに使うことにする
  3136. // 試しにyをメインで使ったら大変だった
  3137. #define LINE_N        1000    //WZ4.00Bj 990831 1頁に最大で印刷できる行数を500から1000行に拡大。588行で印刷したい方が居た。
  3138. typedef struct {
  3139.     WORD y;            // 行のy座標(nSpaceTopは含まない)
  3140.                     // 段組の場合は通しy座標。cyLineを取得するためにも使用
  3141.     BYTE iClm;        // この行の段番号(0:左端)
  3142.                     // gls_nClmとは異なる
  3143.     WORD off;        // curscreenからのオフセット
  3144.     BYTE fLF:1;        // 改行の行?
  3145.     BYTE gls_iHeadline;    //WZ3.90H 980924 
  3146.     WORD gls_cyChar;    //WZ3.90H 980924 
  3147.     WORD gls_cyAscent;    //WZ3.90H 980924 
  3148.     WORD gls_cyDescent;    //WZ3.90H 980924 
  3149.     WORD gls_yFootnote;    //WZ3.90H 980924 
  3150. } LINEATR;
  3151.  
  3152. typedef struct {
  3153.     NPARA npara;
  3154.     IFILE offset;    // 段落先頭からのオフセット
  3155.     WORD size;        // 行の長さ
  3156.     LINEATR lineatr;// lineatr
  3157.     WORD cy;        // cyLine
  3158. } LINESIZE_ENTRY;    //WZ3.90H 980919 
  3159.  
  3160. typedef struct {
  3161.     NPARA nparaTop;        // lsc内の最小npara
  3162.     NPARA nparaEnd;        // lsc内の最大npara
  3163.     int n;                // エントリ数
  3164.     LINESIZE_ENTRY* lsc;
  3165. } LINESIZE_ENTRY_ROOT;    //WZ3.90H 980919 
  3166.  
  3167. //##多重化
  3168.  
  3169. #if !WINDOWSCE
  3170.  
  3171. typedef struct tagMT {
  3172.     HWND hwndbase;
  3173.     HWND hwndtext;
  3174.     HWND hwndOutline;
  3175.     HWND hwndOutlinePartition;    //WZ4.00Bj 990824 
  3176.     FBOOL fOutlineHide;
  3177.     FBOOL fOutlineSplited;
  3178.     HWND hwndCBCB;            // コマンドバーコンボボックス
  3179.     HWND hwndStatusbar;        // ステータスバー
  3180.     HWND hwndFunctionbar;    // ファンクションキー
  3181.     HWND hwndRuler;            // ルーラー
  3182.     TOOLBARCONTEXT* toolbar;
  3183.     STATUSBAR_PANE* tStatusbarPane;
  3184.     IFILE adr;
  3185.     int ly;
  3186.     WORD idMt;                // ID
  3187.     struct tagMT* prev;
  3188.     struct tagMT* next;
  3189. } MT;
  3190.  
  3191. #if 0
  3192. typedef struct {
  3193. // backup text
  3194.     TX* text;
  3195.     HWND hwndtext;
  3196.     RECT rHwndtext;
  3197.     IFILE adr;
  3198.     int ly;
  3199.     BOOL fClip;
  3200.     IFILE cliptop;
  3201.     DWORD nEdit;
  3202.     HWND hwndOutline;
  3203.     FBOOL fOutlineHide;
  3204.     FBOOL fOutlineSplited;
  3205.     BOOL fOutlineSplitWindow;
  3206. // dialog item
  3207.     HWND hwndDialog;
  3208.     BBOOL fOutline;
  3209. // work
  3210.     CBOOL fRedraw;
  3211.     FBOOL fFirst;
  3212.     SEARCHOPT* opt;
  3213. } TXMULTI_CONTEXT;
  3214. #endif
  3215.  
  3216. typedef struct {    // 前回の一時ウィンドウのコンテキスト
  3217.     IFILE adr;
  3218.     int ly;
  3219.     BBOOL fOutline;
  3220.     RECT rectTempWindow;
  3221. } TXMULTI_CONTEXT_TEMP;
  3222.  
  3223. #endif
  3224.  
  3225. //##HTML
  3226.  
  3227. typedef struct {    //WZ3.90I 981029 
  3228.     HBITMAP hbitmapBr;        // <BR>のビットマップ
  3229.     HBITMAP hbitmapP;        // <P>のビットマップ
  3230.     HBITMAP hbitmap_P;        // </P>のビットマップ
  3231.     HBITMAP hbitmapTr;        // <TR>のビットマップ
  3232.     HBITMAP hbitmap_Tr;        // </TR>のビットマップ
  3233.     HBITMAP hbitmapTd;        // <TD>のビットマップ
  3234.     HBITMAP hbitmap_Td;        // </TD>のビットマップ
  3235.     HBITMAP hbitmapInline;    // <インラインコンテナ>のビットマップ
  3236.     HBITMAP hbitmap_Inline;    // </インラインコンテナ>のビットマップ
  3237.     HBITMAP hbitmapControlblock;    // <コントロールコンテナ>のビットマップ
  3238.     HBITMAP hbitmap_Controlblock;    // </コントロールコンテナ>のビットマップ
  3239.     HBITMAP hbitmapSingle;    // <IMG,シングルエレメント>のビットマップ
  3240.     HBITMAP hbitmapItem;    // <アイテムエレメント>のビットマップ
  3241.     HBITMAP hbitmap_Item;    // </アイテムエレメント>のビットマップ
  3242.     HBITMAP hbitmapBlock;    // <ブロックコンテナ>のビットマップ
  3243.     HBITMAP hbitmap_Block;    // </ブロックコンテナ>のビットマップ
  3244.     TX* textcfgTag;            // "htmltag.cfg"の内容
  3245.     IFILE adr0;                //WZ3.90O 981203 
  3246. } HTMLATR;
  3247.  
  3248. typedef enum {
  3249.     VALIGN_NONE,VALIGN_TOP,VALIGN_CENTER,VALIGN_BOTTOM
  3250. } VALIGN;
  3251.  
  3252. //##ウィンドウプロシジャーのフック
  3253. //WZ3.90I 981026 多重フックができるようにした。これができないとマクロがつくれない。
  3254.  
  3255. typedef DWORD HOOKRESULT;
  3256. #define HOOK_CONTINUE    0
  3257. #define HOOK_CAPTURE    1
  3258. #define HOOK_ERROR        2
  3259. typedef HOOKRESULT (CALLBACK *WNDTEXTHOOKPROC)(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
  3260.  
  3261. #define txSetHookWndproctextResult(text,result)    (text->resultWndtextHook = result)
  3262. #define txSetHookWndprocbaseResult(text,result)    (text->resultWndbaseHook = result)
  3263.  
  3264. typedef struct tagTXWNDHOOK {
  3265.     BYTE fTxpcode:1;        // TX-PCODEからのフック
  3266.     WNDTEXTHOOKPROC lpHook;    // フックプロシジャ
  3267.     struct tagTXWNDHOOK* prev;
  3268.     struct tagTXWNDHOOK* next;
  3269. } TXWNDHOOK;
  3270.  
  3271. //##その他のサブ構造体
  3272.  
  3273. typedef struct {
  3274.     int ly;            //
  3275.     NPARA npara;    //
  3276.     IFILE address;    //
  3277.     IFILE ich;        //
  3278. } UNDISPCONTEXT;
  3279. #define UNDISPCONTEXT_N    5
  3280. // 裏テキストなど、fUndispがマイナス値の場合もある。
  3281. #define txGetUndispContextPre(text)    \
  3282.     ((1 <= text->fUndisp && text->fUndisp <= UNDISPCONTEXT_N) ? &text->tUndispContext[text->fUndisp - 1] : NULL)
  3283.  
  3284. typedef struct {
  3285.     SIGNED_BYTE fPacking;    // for クライアント動作チェック
  3286.     IFILE adrPackTop;        // pack開始時text->pundo
  3287.     WORD nPacked;            // packされたコマンド数
  3288. } UNDOPACK_CONTEXT;
  3289.  
  3290. #define TXWS_SZCLASS    L"txText"
  3291. #define TXWS_SZCLASSA    "txText"
  3292. #define TXWS_TEXT            0x0001L        // TEXT構造体をアロケートする
  3293.                                         // すなわちWZコントロールであることを示す
  3294. #define TXWS_OPENTEXT        0x0002L        // いきなりtxOpenTextする
  3295. #define TXWS_ENABLEUNDO        0x0008L        // undo可
  3296. #define TXWS_TEXTINHERIT    0x0080L        // textを丸ごと(text contextそのものを)引き継ぐ
  3297.  
  3298. #define WzBox_GetTx(hwnd)    ((LPVOID)GetWindowLong(hwnd,0))
  3299. extern WCHAR wszclassBase[];
  3300. extern WCHAR wszclassText[];
  3301. extern wchar wszclassWzicon[];
  3302. #if __TXC__
  3303.     #define _fwin40    TRUE
  3304. #else
  3305.     #if WINDOWSCE
  3306.         #define _fwin2k    (FALSE)    //WZ4.00Cc 000124 
  3307.     #else
  3308.     extern BOOL _fwin40;
  3309.     extern BOOL _fwin2k;        //WZ4.00Cc 000124 
  3310.     #endif
  3311. #endif
  3312.  
  3313. typedef struct {
  3314.     //WCE 970819 
  3315.     BYTE lcxIndent;                // インデント数(0-255)
  3316.         #define LCXINDENT_MAX    255
  3317.     //WCE 970817 custmize
  3318.     int lchSymbol;                // 行頭文字のバイト数
  3319.     mchar szSymbol[CCHSWORD];    // 行頭文字
  3320.     //
  3321. BYTE articleTop;
  3322.     mchar szArticle[CCHSWORD];    // 見出し文字列
  3323.     SIGNED_WORD lchArticle;        // 0なら無効
  3324.     SIGNED_WORD cxArticle;
  3325.     WORD fArticleNum:1;            // szArticleは番号付きか?
  3326.     WORD fArticleSub:1;            // szArticleは小見出しか?
  3327.     WORD fArticleJnumber:1;        // szArticleは全角番号付きか?
  3328.     WORD fReserved:13;
  3329.     SIGNED_WORD nArticle;        // 先頭番号(0なら番号指定なし)
  3330.     SIGNED_WORD ichNum;            // szArticleの番号のオフセット
  3331.                                 // -1なら番号なし
  3332.     SIGNED_WORD lchNum;            // szArticleの番号の長さ
  3333. BYTE articleEnd;
  3334.     //WCE 970817 custmize
  3335.     SIGNED_WORD lcxSpace;        // szArticleと本文の間の余白
  3336.     // PARAATR custmize
  3337.     BYTE width;                    // 折り返し幅
  3338.     BYTE modeAlign:3;            // 文字揃え
  3339.         // align(3bit)
  3340.         #define ALIGN_NONE        0    // なし
  3341.         #define ALIGN_LEFT        1    // 左揃え
  3342.         #define ALIGN_CENTER    2    // 中央寄せ
  3343.         #define ALIGN_RIGHT        3    // 右揃え
  3344.     BYTE fApfScenarioSerifu:2;    //PWZ2BETA0.5 980617 せりふ段落かどうか?
  3345.                                 // 改行付きに変換中の場合は2になる
  3346. } PARAFORM_ARTICLE;
  3347.  
  3348. // size = 4bytes fixed
  3349. // 記号のうち、"、'、“”、‘’は変換しない
  3350. typedef struct {
  3351.     WORD fJkataToKana:1;    // 全角カタカナ->半角カナ
  3352.     WORD fJkanaToKana:1;    // 全角ひらがな・カタカナ->半角カナ
  3353.     WORD fJankToAnk:1;        // 全角ANK->半角ANK
  3354.     WORD fJalphabetToAnk:1;    // 全角アルファベット->半角ANK
  3355.     WORD fJnumberToAnk:1;    // 全角数字->半角ANK
  3356.     WORD fJkigouToAnk:1;    // 全角記号->半角ANK
  3357.     WORD fJspaceToAnk:1;    // 全角空白->半角ANK
  3358.     WORD fKanaToJhira:1;    // 半角カナ->全角ひらがな
  3359.     WORD fKanaToJkata:1;    // 半角カナ->全角カタカナ
  3360.     WORD fAnkToJank:1;        // 半角ANK->全角ANK
  3361.     WORD fAlphabetToJank:1;    // 半角アルファベット->全角ANK
  3362.     WORD fNumberToJank:1;    // 半角数字->全角ANK
  3363.     WORD fKigouToJank:1;    // 半角記号->全角ANK
  3364.     WORD fSpaceToJank:1;    // 半角空白->全角ANK
  3365.     WORD fJhiraToKana:1;    // 全角ひらがな->半角カナ
  3366.     WORD reserved:1;
  3367. __BITFIELD_BORDER__
  3368.     WORD fAc:1;                // オートコレクト
  3369.     WORD fJbraceToBrace:1;    // 「」を[]へ変換
  3370.     WORD fZenHanKanaAll:1;    // (独立フラグ)全角ひらがな・カタカナ<->半角カナですべて変換    //WZ3.90N 981130 
  3371.                             // これと一緒にfJkataToKanaなども指定してください。
  3372.     WORD reserved2:13;
  3373. } CHARCONVERT;
  3374.  
  3375. // for CHARCONVERT ui
  3376. typedef struct {
  3377.     BOOL fAutoCollect;
  3378.     BOOL fJbraceToBrace;
  3379.     int modeKata;
  3380.     int modeHira;
  3381.     int modeAlphabet;
  3382.     int modeNumber;
  3383.     int modeSpace;
  3384.     int modeKigou;
  3385. } CCCONTEXT;
  3386.  
  3387. // 段落体裁解析用
  3388. typedef struct {
  3389.     BYTE align;
  3390.     BYTE headline;
  3391.     SIGNED_BYTE indent;
  3392.     BYTE nClm;        //WZ3.90I 981106 0:標準
  3393.     DWORD anchor;    //WZ3.90L 981117 アンカー(0:なし)
  3394.     mchar szTag[CCHTXFTAG];
  3395.     BBOOL fPP;        //WZ4.00Db 000222 プリプロセッサ段落?
  3396. } CONTEXT_PARAPROPERTY;
  3397.  
  3398. #define LCX_CLMGAP        5    //WCE0.95 970923 
  3399.  
  3400. // 文字装飾解析用
  3401. typedef struct {
  3402.     BBOOL fBold;
  3403.     BBOOL fUnderline;
  3404.     BBOOL fItalic;
  3405.     BBOOL fIndex;
  3406.     BBOOL fSup;
  3407.     BBOOL fSub;
  3408.     BBOOL fDots;    //WZ3.90I 981030 
  3409.     int cxRate;
  3410.     DWORD anchor;                //WZ3.90L 981117 ジャンプ先のアンカー番号(0:なし)
  3411.     mchar szAnchor[CCHWORD];    //WZ3.90L 981117 ジャンプ先のアンカー
  3412.     FONTSET fontset;
  3413.     mchar szTag[CCHTXFTAG];
  3414. } CONTEXT_CHARPROPERTY;
  3415.  
  3416. typedef struct {
  3417.     LPBYTE pBuff;    // バッファ
  3418.                     // BYTE:cchName , mchar*:szName , WORD cchContent , LPVOID content
  3419.                     // 末尾はcchName = 0
  3420.     int sizeBuff;    // pBuffの現在のサイズ
  3421.     int sizeExpand;    // pBuffを拡大するとき、少なくともこの分のサイズで拡大
  3422. } VAR;
  3423. void varDelete(VAR* var);
  3424. VAR* varNew(int sizeInit,int sizeExpand);
  3425. BOOL varSetString(VAR* var,mchar* szName,mchar* szContent);
  3426. mchar* varReadString(VAR* var,mchar* szName,mchar* szDefault);
  3427.  
  3428. typedef struct tagTXCTEXTVAR {
  3429.     mchar szModule[CCHWORD];
  3430.     FILETIME filetime;        // for バージョンチェック
  3431.     LPBYTE pTextvar;
  3432.     struct tagTXCTEXTVAR* prev;
  3433.     struct tagTXCTEXTVAR* next;
  3434. } TXCTEXTVAR;
  3435.  
  3436. //インクリメンタルサーチ用
  3437. //WZ4.00Ca 991212 new
  3438.  
  3439. typedef struct {
  3440.     mchar szIsearch[CCHSEARCH];
  3441.     mchar szIsearch0[CCHSEARCH];
  3442.     SEARCHMODE Isearchmode;
  3443.     BYTE fIsearching:1;
  3444.     BYTE fIsearchWrapped:1;
  3445.     BYTE fIsearchLastFail:1;
  3446.     IFILE adrIsearch;
  3447.     IFILE adrIsearch0;
  3448. } TX_ISEARCH;
  3449.  
  3450. //##TEXT(テキストコンテキスト)
  3451. // TX-CとEXEで構造体メンバオフセットを同一にするため、WZFUNC_xxxによってメンバを変えないこと。
  3452. // maileditをWZFUNC_MAILBASE時に1bit値、!WZFUNC_MAILBASE時に構造体にしたら、maileditがTX-Cから構造体としてアクセスできなくなった。
  3453.  
  3454. struct tagtx {
  3455. // 以下、[変更可]まで、変更してはいけません。
  3456. // テキストが破壊されるおそれがあります。
  3457.     WORD sizeStruct;
  3458.     // textbuff
  3459.     TEXTCHAR* buff;            // テキストバッファ
  3460.     wchar wszfilename[CCHPATHNAME];
  3461.                             // ファイル名(UNICODE)
  3462.                             // 新規のときは、wszfilename[0] == 0
  3463.     mchar szfilename[CCHPATHNAME];
  3464.                             //PWZ2BETA0.4 980604 new
  3465.                             // ファイル名(SJIS)
  3466.                             // 新規のときは、szfilename[0] == 0
  3467.                             // szfilenameはマクロ用。
  3468.                             // wszfilenameがマスターである。
  3469.     MESSAGEID mid;            // (あれば)この文書のMESSAGEID    //WZ4.00Ee 010414 new
  3470.     IBUFF sizebuff;            // テキストバッファの現在のサイズ
  3471.     // new textbuff pointer
  3472.     IFILE curgap;            // gapの先頭
  3473.                             // fHigh時は、無効&不定
  3474.     IBUFF curpara;            // カレント段落の先頭。(gapの末尾+1)に等しい。
  3475.                             // fHigh時は、無効&不定
  3476.     // textbuff pointer
  3477.     IBUFF cur;                // カーソル位置のテキストバッファオフセット
  3478.                             // fHigh時は、(gapの末尾+1)と等しい。
  3479.     IBUFF cur0;                // curと同じ。
  3480.                             // fHigh時は、(gapの先頭)と等しい。
  3481.     IBUFF cury;                // カーソル表示行の先頭
  3482.                             // (cury >= curpara)である。
  3483.                             // fHigh時は、無効&不定
  3484.     IBUFF curysize;            // 表示行のサイズ
  3485.                             // fHigh時は、無効&不定
  3486.     IBUFF curscreen;        // 画面先頭のテキストバッファオフセット
  3487.                             // IBUFF_ERRORのときは内容無効
  3488.                             // fHigh時は、無効&不定
  3489.     IBUFF ibuff;            //WZ3.90J 981110 任意使用可
  3490.     // view mode
  3491.     FBOOL fEditViewMode;    // 現在、view mode ?
  3492.                             // fSemiViewModeも見てください。
  3493.                             // あるいはtxGetViewmodeで調べるのが良いです。
  3494.     FBOOL fSemiViewMode;    // セミViewMode
  3495.     // textfile
  3496.     HANDLE hf;                // ファイルハンドル
  3497.     IFILE sizefileReal;        // ファイルサイズ(txatrを含む実際のサイズ)
  3498.     IFILE sizefile;            // ファイルサイズ(テキストデータの分のみ)
  3499.     IFILE sizeload;            // ファイルから読み込んだバイト数
  3500.     BBOOL fOpen;            // Openされている?
  3501.     BBOOL fQuit;            //PWZ2BETA0.3 980510 txQuit中?
  3502.     BBOOL fReadAll;            // ファイルを読み終えた
  3503.     BBOOL fAddEof;            // textbuffにEOFを追加した?
  3504.                             // ファイル末尾がEOFの場合はFALSE。
  3505.                             // ファイル末尾がEOFでなければTRUE。
  3506.     FILETIME timeFile;        // ファイルの日付
  3507.     FILETIME timeFile0;        //1.97 前回チェックしたときのファイルのタイムスタンプ
  3508.     BYTE crOpen;            // オープン時の改行コードの形式
  3509.         #define RETURNCODE_CRLF    0    //1.95 'D'から変更
  3510.         #define RETURNCODE_CR    1    //1.95 'M'から変更
  3511.         #define RETURNCODE_LF    2    //1.95 'U'から変更
  3512.         #define RETURNCODE_UNKNOWN    98    //WZ4.00Bl 990913 不明(internal)
  3513.         #define RETURNCODE_THROUGH    99    //XZ0.1 990614 そのまま(internal)
  3514.     BYTE crSave;            // 保存するときの改行コード
  3515.     BYTE kcOpen;            //1.95 オープン時のファイルの文字コード
  3516.         #define KC_SJIS            0
  3517.         #define KC_JIS            1
  3518.         #define KC_EUC            2
  3519.         #define KC_UNICODE        3
  3520.         #define KC_UNICODEBETA    4    // ヘッダなしのUNICODEファイル
  3521.         #if TB_EUC
  3522.             #define KC_DEFAULT    KC_EUC    //XZ0.1 990530 new
  3523.         #else
  3524.             #define KC_DEFAULT    KC_SJIS    //XZ0.1 990530 new
  3525.         #endif
  3526.         // 内部コード
  3527.         #define KC_INTERNAL_TOP    100
  3528.         #define KC_EUC_SJIS        100    // EUC or SJIS
  3529.         #define KC_ASCII        101    // no kanji
  3530.         #define kcIsUnicode(kc)    (kc == KC_UNICODEBETA || kc == KC_UNICODE)
  3531.     BYTE kcSave;            //1.95 保存するときの文字コード
  3532.     // textbox capture
  3533.     HWND ehHwnd;            // キャプチャ中の他プロセスの"EDIT"クラスウィンドウハンドル
  3534.     HWND ehHwndBase;        // ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
  3535.     BYTE fEhHwndUndisp:2;    // ehHwndをUndisp中?
  3536.     BYTE ehTarget;            // キャプチャ対象のアプリケーション
  3537.         #define EHTARGET_VC4        10    // VC++ 4.2/VC++ 5.0(テキストの取得の対応。書出しはできない)
  3538.         #define EHTARGET_MSMAIL4    11    // Outlook Express 4.71(IE4.0付属)
  3539.     // WZ MAIL EDITOR
  3540.     // このEDITORでは、RFC822のヘッダも付いている。
  3541.     struct tagMAILEDIT* mailedit;    //WCE1.01 980327 WZ MAIL EDITOR ?
  3542.     struct tagMBEDIT* mbedit;        //WZ4.00Ea 001108 WZFUNC_MAILBASE:MB EDITOR コンテキスト
  3543.     // 行編集の取消
  3544.     TEXTCHAR* buffUndopara;    // 行バッファ
  3545.     IBUFF sizebuffUndopara;    // バッファサイズ
  3546.     IBUFF lchUndopara;        // バッファ内の文字数
  3547.     BBOOL fUndoparaEffect;    //WCE1.01 980124 バッファに有効なデータがある?
  3548.     CBOOL fUndoparaing;        // Undopara中。再入防止フラグ
  3549.     CBOOL fNoUndoparaPrepare;//2.98 970307 txUndoparaPrepareしない?
  3550.     // instance information
  3551.     HANDLE hInstance;        // インスタンスハンドル
  3552.     HANDLE hInstanceParent;    //2.90 親モジュールのインスタンスハンドル
  3553.     wchar* wszCmdLine;        // コマンドライン(malloced)
  3554.     // window
  3555.     HWND hwndbase;            // ベースウィンドウ(with menubar)のハンドル
  3556.                             // text->fFrameのtextのみセットされる。
  3557.                             // WZ Controlや裏テキストではNULL
  3558.     HWND hwndtext;            // テキストウィンドウのハンドル
  3559.                             // 裏テキストではNULL
  3560.     HWND hwndCB;            // コマンドバー
  3561.     HWND hwndCBCB;            // コマンドバーコンボボックス
  3562.     HWND hwndStatusbar;        // ステータスバー
  3563.                             // MYSTATUSBARでコモンコントロール/独自になる。
  3564.     HWND hwndRuler;            // ルーラー
  3565. #if WINDOWSCE
  3566.     HWND hwndMB;            // PocketPC menu bar    //WZ4.00Ea 001125 new
  3567. #else
  3568.     TOOLBARCONTEXT* toolbar;//WZ3.90E 980806 ツールバー(コモンコントロール)
  3569.     RECT rectWindowClosed;    // DestroyWindow(text->hwndbase)したときの位置
  3570.     HWND hwndFunctionbar;    //WZ3.90I 981107 ファンクションキー
  3571. #endif
  3572.     STATUSBAR_PANE* tStatusbarPane;
  3573.     int cxClient;            // hwndTextのサイズ(ピクセル単位)
  3574.                             // 印刷時は右マージンの分を除く紙のサイズ(lpx)
  3575.     int cyClient;            // hwndTextのサイズ(ピクセル単位)
  3576.                             // 印刷時は下マージンの分を除く紙のサイズ(lpx)
  3577.     int cxBase;                // テキスト表示開始位置
  3578.     int cxCaretNow;            // 現在画面に表示しているキャレットの幅
  3579.     int cyCaretNow;            // 現在画面に表示しているキャレットの高さ
  3580.     int nOpenDC;
  3581.     int xCaret;                //WCE1.01 980409 
  3582.     // display/printer
  3583.     int cxWidth;            //1.00F テキストの横幅(ディスプレイドット座標)
  3584.     int cxWidthWhole;        //2.96 970206 テキストの横幅(ディスプレイ座標)
  3585.                             // 1段組の場合はcxWidthと同じ。
  3586.                             // n段組の場合は、1段目の左端からn段目の右端までの幅
  3587.     int lx;                    // カーソルX座標 (文字座標)
  3588.                             // lfProp時は、近似値(text->x / text->cxChar)
  3589.     int lx0;                // 縦移動時に使用
  3590.     int x;                    // カーソルX座標 (ドット座標)
  3591.     int x0;                    // 縦移動時に使用
  3592.     int xAlign;                //WCE1.01 971116 センタリング、右寄せ
  3593.     int cxCursor;            //WCE1.01 980223 カーソルの幅
  3594.     FBOOL fNoAddAlign;        //WCE1.01 971117 offsetFromCx,cxFromOffsetでxAlignを加えない?
  3595.     int xbase;                // basex
  3596.     int cxCharMax;            // 1文字の最大幅
  3597.     int ly;                    // カーソルy座標
  3598.     int lyUnder;            // アンダーラインy座標(非表示中は-1)
  3599.     int lyAtMinimized;        // 最小化したときのly    //WZ3.90M 981128 
  3600.     int hideUnder;            // fListboxのフォーカス表示がHideされているか?
  3601.     int lcySmupper;            // 現在のスクロールマージンTopY
  3602.     int lcySmlower;            // 現在のスクロールマージンTailY
  3603.     FBOOL fAddSmlower;        //WCE0.92 970918 最下行に半端行を表示している?
  3604.     int lcywindow;            // 表示行数
  3605.                             // 印刷プレビュー、印刷時は動的に変化します
  3606.                             // 0になることはない。必ず1以上になる
  3607.                             // 行の内容が全て表示できる分の値に設定されます。
  3608.                             // 但し、1に設定されている時は必ずしもこの通りではありません
  3609.                             // 画面下端の隙間にテキストを表示する場合は、その分も含みます。
  3610.                             // 必ずLINE_Nより5程度少なくなる
  3611.     int lcywindowClm;        //WCE0.95 970923 1段の表示行数
  3612.     int xCell;                //WCE1.01 971221 for fTxf 表
  3613.     int xCellSepa;            //WCE1.01 971221 for fTxf 表
  3614.     int lxCell;                //WCE1.01 971221 for fTxf 表
  3615.     int lcxCell;            //WCE1.01 971221 for fTxf 表
  3616.     BYTE CelllineTop;        //WCE1.01 971221 for fTxf 表 直前のセルのlineTop
  3617.     BYTE CelllineBottom;    //WCE1.01 971221 for fTxf 表 直前のセルのlineBottom
  3618.     FBOOL fCellExist;        // 「表がある段落は折り返しなし」に使用
  3619.     BBOOL fCellFlushing;    //WCE1.01 971226 表の幅計算中?
  3620.                             // 2:Undisp中?
  3621.     FBOOL fWestern;            //WCE1.01 980224 欧文表示
  3622.                             // 1バイト文字(ASCII+拡張ASCII)
  3623.                             // !TEXTCHAR_UNICODE時のみ有効
  3624.     //
  3625.     HDC hdc;
  3626.         #define HDC_PAINT    999    // WM_PAINTで確保したHDC
  3627.     HDC hdcMem;
  3628.     HDC hdcPrinter;            // これがNULLでなければ、このhdcに出力する
  3629.     // キー定義
  3630. //    KEY* key;                // キー定義
  3631.     mchar *tszfkey;            // ファンクションキーの文字列
  3632.                             // size = FKEY_N * FKEY_NKEY * FKEY_SIZE
  3633. // ツールバー
  3634. //    TXTOOLBAR *ttxtoolbar;    // ツールバーデータ
  3635.     int ntoolbar;            // ttxtoolbarの数
  3636.     HBITMAP hbitmapToolbar;    // ツールバービットマップ
  3637.     int cxToolbar;
  3638.     int cyToolbar;
  3639.     // for display
  3640.     HFONT hfont;            // フォントハンドル
  3641.                             // fontsetBase->hfontのコピー
  3642.     HFONT hfont2;            // fontsetBase->hfont2のコピー    //WZ4.00Bl 990920 
  3643.     BYTE fSelectFont2;        // hfont2をSelectObject中?        //WZ4.00Bl 990920 
  3644.     HFONT hfontSearch;        //WZ3.90K 981112 欧文編集時の検索ダイアログ、検索ボックス用のフォントハンドル
  3645.     //WCE1.01 980222 マルチフォント、プロポーショナルフォントサポート
  3646.     FONTSET* fontset;        // カレントfontset
  3647.     FONTSET* fontsetBase;    // 本文のfontset
  3648.                             // 常に開きっぱなし
  3649.     FONTSET* fontsetCache;    // fontsetのキャッシュ
  3650.     //WCE1.01 980225 図の表示・印刷サポート
  3651. #if __TXC__
  3652.     LPVOID txbitmapCache;    // IMGキャッシュ
  3653. #else
  3654.     IMGSET* txbitmapCache;    // IMGキャッシュ
  3655. #endif
  3656.     //
  3657.     HBRUSH hbrushBack;        // WZのブラシ
  3658.     HBRUSH hbrushText;        // WZのブラシ
  3659.     HBRUSH hbrushBlock;        // 範囲選択時、反転表示用
  3660. #if !WINDOWSCE
  3661.     HBRUSH hbrushImeBack;    //WZ3.90O 981202 
  3662.     HBRUSH hbrushImeHiBack;    //WZ3.90O 981202 
  3663. #endif
  3664.     HPEN hpenUnderline;        // アンダーライン
  3665.     HPEN hpenNline;            // WZのペン
  3666.     HPEN hpenText;
  3667.     HPEN hpenBack;            // WZのペン
  3668.     HBITMAP hbitmapLf;        // LF記号のビットマップ
  3669.     HBITMAP hbitmapTab;        // TAB記号のビットマップ
  3670.     HBITMAP hbitmapEof;        // EOF記号のビットマップ
  3671.     HBITMAP hbitmapSpace;    // 全角空白のビットマップ
  3672.     HBITMAP hbitmapBeta;    // ベタのビットマップ
  3673.     HBITMAP hbitmapFf;        //WCE1.01 980225 フォームフィードのビットマップ
  3674.     LPVOID pbitmapLf;        // LF記号のビットマップデータ
  3675.     LPVOID pbitmapTab;        // TAB記号のビットマップデータ
  3676.     LPVOID pbitmapEof;        // EOF記号のビットマップデータ
  3677.     LPVOID pbitmapSpace;    // 全角空白のビットマップデータ
  3678.     LPVOID pbitmapBeta;        // ベタのビットマップデータ
  3679.     LPVOID pbitmapFf;        //WCE1.01 980225 フォームフィードのビットマップデータ
  3680. #if WINDOWSCE
  3681.     HBRUSH hbrushPendot;    // WINDOWSCEにはPS_DOTがないのでBRUSHで作る
  3682.     LPVOID pbrushPendot;    // PS_DOTのメモリデータ
  3683. #else
  3684.     HPEN hpenPendot;
  3685. #endif
  3686.     SIGNED_BYTE color;        // 現在設定中の色コード
  3687.     COLORREF rgb;            // 現在表示中の色RGB
  3688.     BYTE fColorReverse:1;    // 反転表示中?
  3689.     BYTE fColorIme:1;        //WZ3.90O 981202 IME変換文字描画中?
  3690.     // GetLineSize/DispLineコンテキスト
  3691.     //WCE1.01 980216 GetLineSizeの処理結果
  3692.     BYTE gls_iHeadline;        // 見出しコード
  3693.     WORD gls_cyChar;        // 行の高さ(行間を除く)
  3694.     WORD gls_cyAscent;        // 行のベースラインより上の部分の高さ
  3695.     WORD gls_cyDescent;        // 行のベースラインより下の部分の高さ
  3696.     WORD gls_cyLine;        // 行の高さ(行間を含む)
  3697.     BYTE gls_nClm;            //WCE1.01 980301 この段落の段組数
  3698.                             // 通常はtext->nClmだが、<CLM>タグで段組数が指定されている場合に対応
  3699.     WORD gls_yFootnote;        //WCE1.01 980302 ページ内脚注表示位置(cyClientベース)
  3700.     WORD gls_cxCursor;        // LSOP_OFFSET_TO_X,LSOP_X_TO_OFFSET時のx位置の文字幅
  3701. //##TEXT - 現在の内部情報
  3702.     mchar* szexedir;        //WZ3.90I 981027 WZEDITOR.EXEの存在するパスが入っています。
  3703.                             // "a:\wz\"や"b:\"のように入っています。
  3704.                             // マクロからは、次の様にして、WZ.EXEと同じディレクトリにあるファイルの
  3705.                             // フルパスを得ることができます
  3706.                             //         text->szexedir + "myfile"
  3707.     FBOOL fTXWS_TEXT;        // TXWS_TEXTのtext?
  3708.     FBOOL fFrame;            // 表テキスト?
  3709.                             // 裏テキスト、WZコントロールのtextの場合はFALSE
  3710.     FBOOL fReadOnly;        // 修正はできるがセーブできない。
  3711.     FBOOL fCurWestern;        // 現在のカーソル行が欧文フォントかどうか示す。
  3712.                             // txDispCursorでフラッシュされるので、いつも必ずしも
  3713.                             // 正しいとは限らない。
  3714.     int idmPrev;            // 前回実行したidmコマンド        //WZ4.00Ca 991119 new
  3715. __BITFIELD_BORDER__
  3716.     WORD wtmIdmPrevD:11;    // idmExec用 前回実行idmコマンドから経過した時間(max2047) //WZ4.00Ca 991126 new
  3717.     WORD nRepeatKey:4;        // idmExec用 キーリピート数(max15) //WZ4.00Ca 991126 new
  3718. __BITFIELD_BORDER__
  3719.     WORD nSameIdm:8;        // 特定idmコマンドのリピート    //WZ4.00Ca 991119 new
  3720.     WORD nrepeat:8;            // 特定idmコマンドのリピート    //WZ4.00Ca 991119 new
  3721. __BITFIELD_BORDER__
  3722.     WORD fNoApfExitAtNparaChange:1;    // idmExec用            //WZ4.00Ca 991119 new
  3723.     WORD fNoCheckEdit:1;    // idmExec用                    //WZ4.00Ca 991119 new
  3724.     WORD fReopenInternaling:1;// txReopenInternal中?
  3725.     WORD fShared:1;            // WZプロセス間で共有されているtext?
  3726.                             // WINDOWSCE
  3727.     WORD fNoFlushBaseDisp:2;// txFlushBaseでtxDispAllしない
  3728.     WORD fFlushBaseDisped:1;// fNoFlushBaseDisp中にtxDispAllがあった
  3729.     WORD fEnableUndo:1;
  3730.     WORD fNewFile:2;        // 新規ファイル?(1か2なら真なので注意)
  3731.     WORD fOpenLockedFile:1;    // 排他制御がかかっているファイルを開いた
  3732.     WORD fDispEofed:1;        // 最後に表示を行ったときにEOFを表示した?
  3733.     WORD fHaveFocusLine:1;  // フォーカスラインを持っている?
  3734.     WORD fNoCaret:1;        // キャレットを表示しない
  3735.     WORD fOriginalCaret:1;    //WCE1.01 980409 独自のキャレットを表示
  3736.                             // 普通のキャレットは主スレッドしか対応しないが、
  3737.                             // これはマルチスレッド対応。
  3738. __BITFIELD_BORDER__
  3739.     WORD fMouseJumpx:2;        // txJumpXで文字の中心を基準とする
  3740.     WORD nlineByPage:1;        // dummy
  3741.     WORD lpy:1;                // dummy
  3742.     WORD fNoFlushSelectNow:1;//txFlushSelectNowしない
  3743.     WORD fDestorying:1;        // textを破棄中?
  3744.     WORD fStatprintfing:1;    // statprintfが表示されている状態?
  3745.     WORD fUndispLinenum:2;    // 行番号を表示しない
  3746.     DWORD FlushCuryResult;    // 内部ワーク
  3747.     BBOOL fNomoveBase;        // 画面の横スクロールをしない(text->basexを動かさない)
  3748. __BITFIELD_BORDER__
  3749.     WORD ftxuiSaveNamed:1;    // txuiSaveで名前を付けたときにONになり、txuiSaveを抜けるとOFFになる
  3750.     WORD fSaveCanceled:1;    // (text->lasterror == TXERROR_SAVECANCELED)
  3751.     WORD fInsideIsClose:1;    // ehHwndでtxuiIsClose()中
  3752.     WORD fClipMouseStart:1;    // マウスによる範囲選択開始時?
  3753.     WORD fCursorSeted:1;    // WINDOWSCE カーソルが変更されている
  3754.     WORD fNoFileShareControl:1;    //PWZ2BETA0.4 980604 排他制御をかけない?
  3755.     WORD fReplaceCanceled:1;// 直前のReplaceがキャンセルされた?
  3756.     WORD fGetDownAble:2;    //WZ3.90H 980923 現在txGetDownAble中?
  3757.     WORD fPageChanged:1;    //WZ3.90H 980923 txBuffNextLineN/txBuffPrevLineNでページを越えた
  3758.     WORD fError:1;            //WZ3.90H 980925 エラー状態
  3759.     WORD fNoInitScrollBar:2;//WZ3.90I 981030 _InitScrollBarしない。
  3760.     WORD fPageScrollBarV:2;    //WZ3.90I 981030 印刷プレビュー時に縦スクロールバーをページ内のプロポーショナルスクロールバーにする?
  3761. __BITFIELD_BORDER__
  3762.     WORD fGetXAlign:2;        //WZ3.90I 981106 
  3763.     WORD fAutoScrolling:1;    //WZ3.90J 981110 自動スクロール中?
  3764.     WORD fAutoScrollPause:1;//WZ3.90J 981110 自動スクロール一時停止中?
  3765.     WORD fAutoScrollPrev:1;    //WZ3.90L 981125 自動スクロール前方向中?
  3766.     WORD fApfuBeamtabFlush:1;//WZ3.90L 981115 タブ桁揃えフラッシュ中?
  3767.     WORD fLpFlushPreviewing:1;//WZ3.90L 981117 
  3768.     WORD fIdmExecing:3;        //WZ4.00Aa 990107 //WZ4.00Ac 990207 ネストする場合があるので1bitでは足りなかった
  3769.     WORD fUserInserting:2;    //WZ4.00Bn 991007 
  3770.     WORD fNoPushDeleteString:2;    //WZ4.00Aa 990107 削除バッファに入れない?
  3771.     WORD fPushDeleteString:2;    //WZ4.00Bj 990825 txDeleteParaで削除した分も削除バッファに入れる?
  3772. __BITFIELD_BORDER__
  3773.     WORD fSaving:2;            //WZ4.00Ab 990202 保存中?
  3774.     WORD fSaveAsDoing:1;    //WZ4.00Ab 990202 txuiSaveAs中?
  3775.     WORD fEndSessioning:1;    //WZ4.00Ac 990205 WM_QUERYENDSESSION中?
  3776.     WORD fHistAddAtSave:1;    //WZ4.00Ac 990206 txSave時にhistAddし、このフラグをクリア?
  3777.     WORD fWindowClosedMax:1;//WZ4.00Ad 990211 DestroyWindow(text->hwndbase)したとき最大化されていたかどうか?
  3778.     WORD fByMouse:1;        //WZ4.00Bl 990909 マウスによるコマンド実行時かどうか?
  3779.     WORD fNetnewsList:1;    //WZ4.00Bl 990916 for SPEAK
  3780.     WORD fQueryBigEdited:1;    //WZ4.00Bl 990918 
  3781.     WORD fResultXtoOffset:1;//WZ4.00Bl 990918 
  3782.     WORD fNoFreeCursorXtoOffset:1;    //WZ4.00Ca 000104 
  3783.     WORD fOpenFrame:1;        //WZ4.00Ca 991203 フレームウィンドウを開き終えた?
  3784.     WORD fOnDeletePrev:2;    //WZ4.00Bp 991014 
  3785.     WORD fTxmbxFlushOlded:1;//WZ4.00Ee 010416 for txMbx
  3786.     WORD fOnReplateText:1;    //WZ4.00Eg 010502 
  3787. __BITFIELD_BORDER__
  3788.     WORD fOnOpenFrame:1;    //WZ4.00Eg 010502 
  3789.     CBOOL fBusy;            //WCE1.01 980203 
  3790.     FBOOL fDispLineEdit;    // 変更行の表示を行う?    //WCE1.01 980205 変更行の表示
  3791.     PARAATR_CONTEXT paraatr;//WZ4.00Bl 990920 paraatrtextcontextから名称変更。
  3792.     PLT_CONTEXT* plt;        //WZ4.00Da 000206 先割り原稿
  3793.     // binary
  3794.     FBOOL fBinedit;            // バイナリ編集(16進表示バイナリエディタ)モード?
  3795.                             // ファイルをバイナリとして読み込む
  3796.                             // ファイル末尾のEOFをEOFコードとしてはみなさなず、text->buffロード時に必ずEOFを加える
  3797.                             // fBinaryもTRUEにセットすること。
  3798.                             // fBinedit時は、curparaはcuryと同じになり段落先頭を示さなくなる。
  3799.                             // また、nparaはnlineと同等になる。
  3800.     CBOOL fBinary;            // 全角文字を半角2文字として扱う
  3801.                             // !fBineditなら、ファイルはテキストファイルとして読み込む
  3802.                             // fBineditの場合は、fBinaryもTRUE。
  3803.     CBOOL fNoJumpChartop;    //WZ3.90P 981206 txJumpAddress,txJumpAddressNearで、アドレスが文字の先頭でない場合、文字の先頭ではなく、指定されたアドレスにジャンプ。
  3804. #if WZFUNC_MEMOEDIT    //WZ3.90L 981124 メモモード
  3805.     BYTE fMemoedit:1;                // メモ編集モード?
  3806.     struct tagMEMOEDIT* memoedit;    // メモ編集コンテキスト
  3807. #endif
  3808.     // undo
  3809.     TX* ttextUndo;            // undoバッファ textUndo[0],textUndo[1]が有効
  3810.     UNDOPACK_CONTEXT undopack[2];
  3811.     mchar* szGeneComment;    //WCE1.01 980201 世代管理:次の世代のコメント
  3812.     FBOOL fTextUndoInited;    // textUndo inited?
  3813.     FBOOL fUndoing;            // アンドゥとリドゥの区別
  3814.     FBOOL fUndoView;        // undoバッファのビューモード
  3815.     FBOOL fUndoExec;        // undo()中かどうか
  3816.     FBOOL fUndoResetTexttop;//PWZ2BETA0.3 980511 undo中にtexttopを0にしたか?
  3817.     HWND hwndUndo;            // 
  3818.     BBOOL fGene;            // 世代管理テキスト?
  3819.     FBOOL fGeneWalking;        // 世代管理テキストを作成中?    //WZ4.00Bl 990921 
  3820.     BYTE fNoUndoAdd;        // 0以外ならundoAddされない
  3821.     BYTE adrTextUndoTop;    // undoバッファのヘッダ長
  3822.     BYTE uc;                // UC
  3823.     FBOOL fUndoFindCellFlush;//WCE1.01 971226 
  3824.     SIGNED_WORD igene;        //WCE1.01 980201 現在の世代
  3825.     FBOOL fNoGeneDelete;    //WCE1.01 980206 
  3826.     BBOOL fUndoOverflowed;    //WZ4.00Bj 990825 
  3827.     // autosave
  3828.     int nAutoSaveCmdNow;    // 前回のオートセーブから現在までに実行された編集コマンド数
  3829.     BBOOL fAutoSaving;        // autosave中?
  3830.     BBOOL fAutoSaveValidTimer;    // 自動保存実行タイマセット中?
  3831.     //
  3832.     CMDLINECONTEXT* pcc;    // fFrameのみコマンドラインコンテキスト
  3833.                             // このオブジェクトはdeleteしてはいけないが、
  3834.                             // pcc=NULLにしてもいい
  3835.     DWORD nEdit;            // 編集が行われた回数をカウントしています
  3836.     IFILE adrLastEdit;        //WZ4.00Bj 990824 最後に編集した位置
  3837.     BYTE fNoCountNedit;        // nEditをカウントアップしない?
  3838.     BYTE fNoReduceGap;        // テキストバッファの縮小を一時的にしない
  3839.     // キー入力
  3840.     mchar key2;                // 2ストロークキー入力用.1ストローク目のキーコード
  3841.     FBOOL fTranslated;        //WCE1.00.1 970926 WM_KEYDOWN/SYSKEYDOWNの後にWM_CHAR/SYSCHARが来る?
  3842. //    FBOOL fKeyD;            // 次のWM_CHAR/WM_SYSCHARを無視?
  3843.     UINT idmLast;            //WZ3.90I 981102 最後にキーから実行したIDMコマンド
  3844.     TX_ISEARCH* isearch;    //WZ4.00Ca 991212 インクリメンタルサーチのコンテキスト(NULLの場合あり)(emacswzは廃止)
  3845.     BYTE lastfocus;            //WZ4.00A 981229 最後にSETFOCUSされた部位
  3846.         #define FOCUS_OUTLINE        1
  3847.         #define FOCUS_MAILTO        100    //WZ4.00Bj 990812 
  3848.         #define FOCUS_MAILCC        101    //WZ4.00Bj 990812 
  3849.         #define FOCUS_MAILSUBJECT    102    //WZ4.00Bj 990812 
  3850.         #define FOCUS_ISMAILEDIT(l)    (100<=l)    //WZ4.00Bj 990812 
  3851.     // 本文フォントの情報
  3852.     int cxChar;                // 文字幅
  3853.     int cxLetter;            // 字間をふくむ文字幅
  3854.     int cyChar;                // 文字高さ
  3855.     int cyLine;                // 行高さ
  3856.     FBOOL lfEditProp;        // プロポーショナルか?
  3857.     //
  3858.     BBOOL fUndispSelect;    // 範囲選択を表示しない
  3859.     SEARCHMODE searchmode;    // 現在の検索オプション
  3860.     int nCmdShow;            // 現在のtext->hwndbaseのShowWindowモード
  3861.     int fHigh;                // Highspeed flag
  3862.                             // カーソル位置(cury,curysize)の計算をしない。
  3863.                             // nparaは計算します。for 編集した行の強調表示
  3864.                             // nlineは計算しないのでズレます。
  3865.                             // <使用要注意>
  3866.                             // txSetHighで開始してください。
  3867.                             // 直接このフラグを操作しないでください。
  3868.                             // TXHIGHのAPIのみ使えます。
  3869.                             // それ以外のAPIは使えません。
  3870.                             // 使った場合の動作は保証しません。
  3871.                             // できるだけチェックをして回避していますが、
  3872.                             // テキストを破壊する恐れもあります。
  3873.                             // <使用後>
  3874.                             // txResetHighかtxResetHighFlagを使ってください。
  3875.     int lyHigh;                // txSetHigh()時、ly保存
  3876.     UINT nEditHigh;            // txSetHigh()時、nEdit保存。for paraatr
  3877.     UNDISPCONTEXT tUndispContext[UNDISPCONTEXT_N];
  3878.     int fUndisp;            // 非表示フラグ
  3879.     int fUndraw;            //2.00B 非描画フラグ
  3880.                             // fUndispだと描画しないだけでなく各種
  3881.                             // 計算なども行わないが、このフラグは単に
  3882.                             // 描画を行わない
  3883.     HCURSOR hcursor;        // マウス砂時計表示時、元の形状
  3884.     BBOOL fUndispCursor;    // txDispCursor/txDispLocateの処理をしない
  3885.                             // txDeletePara etc のちらつきをなくすため、
  3886.     BBOOL fNoCursor;        // マウス形状を変更しない
  3887.     FBOOL fCursorBold;        // カーソル位置強調?
  3888.     NPARA fUndispNpara;        // 0以外にすると、その段落のみ描画を行わない
  3889.     NPARA fUndispExceptNpara;// (内部用)0以外にすると、その段落以外の描画を行わない
  3890.     // scroll by scrollbar
  3891.     BBOOL fScrollSB;        // スクロールバーでスクロール中
  3892.     BBOOL fInvalidLySB;        // lySBは無効?    //WZ4.00Bl 990921 
  3893.                             // lySB=-1の時に無効の仕様だったが、スクロールすると増減されてしまい、問題があった。
  3894.     int lySB;                // カーソル位置(fInvalidLySBなら無効)
  3895.     // scrollbarによるスクロール開始時の情報
  3896.     NLINE nlineSB;            // npara/nline
  3897.     NLINE nparaSB;            // npara    //WZ3.90L 981123 
  3898.     IFILE adrSB;            // カーソル位置
  3899.     int lxSB;                // lx
  3900.     int cxCaretSB;            // カーソルの幅
  3901.     int fClipSB;            // fClip
  3902.                             // 途中でtxSelectXXXが実行されたときはリセットする
  3903.                             // そうしないと、以前はtxFlushSelectNowで、
  3904.                             // fScrollSBならスクロール開始時の情報を範囲選択エリアとして
  3905.                             // 返していたが、選択モードを変更したときに、
  3906.                             // そのモードの情報が返されず、テキスト<->高速モード変換で
  3907.                             // テキストが破壊されることがあった。
  3908.                             // txSelectAllしてコピーし、テキストを全削除してペースト
  3909.                             // すると元に戻らなかった
  3910.     SIGNED_WORD xSB;        // SB開始時x
  3911.     TXCHAR chSB;            // カーソル位置の文字    //WZ4.00Bl 990913 
  3912.     IFILE mark[MAXMARK];    // マーク
  3913.     IFILE tAdrRefer[MAXREFERPOS];    //WCE0.91 970910 最近参照した位置
  3914.     BYTE iAdrRefer;            // tAdrRefer参照ポインタ
  3915.     BBOOL fEdit;            // 編集された?
  3916.     BBOOL fEdit0;            // for txDoCaption
  3917.     BBOOL fEditable;        // 修正できる?
  3918.                             // txOpenTextでデフォルト値設定
  3919.                             // fEditViewModeならFALSE、そうでなければTRUE
  3920.     BBOOL fOverWrite;        // 上書きモード?
  3921.     DWORD sizefileMax;        // 0のときはファイルをすべて読み込む
  3922.                             // 1以上のときは、そのサイズまでしかファイルを読み込まない
  3923.                             // for preview
  3924.     NLINE npara;            // text->curの論理行番号
  3925.                             // nparaは高速/詳細モードでは大変重要な役割
  3926.                             // (段落書式indexとなる)を果たすので、
  3927.                             // 必ず正確な値にしておかないといけない。
  3928.     NLINE nline;            // 表示-行番号(fLineDが真の時しか数えない)
  3929.                             // fLineDが偽の時は、不定
  3930.                             //2.93 fCountNlineが真なら、常に数える
  3931.     BYTE fCountNline;        //2.93 !fLineDでもnlineのカウントをする
  3932.     BYTE fCountNpara;        //2.96A 970213 fHighでeditmode=0でもnparaのカウントをする
  3933.                             // カウントがされないときもあります。
  3934.     BYTE lyScreenEndResult;    //2.98 970307 Disp(DISP_GETCURSCREENEND)のly結果
  3935.     NLINE nlineAll;            //WZ3.90I 981004 これが0以外でfLineDならばプロポーショナルスクロールバーを表示する
  3936.     WORD cxVH;                //WZ3.90I 981015 !=0なら縦中横の表示中
  3937.     //WCE1.01 980216 ページ数 印刷時・プレビュー時のみ使用
  3938.     NPAGE npage;            // カーソル行のページ番号(1origin)
  3939.     PAGEATR* tPageatr;        // ページ情報
  3940.                             // tPageatr[text->npage]までが有効。
  3941.                             // ifilePagetopだけはtPageatr[text->npage+1]まで有効。
  3942.     LINEATR* tLineatr;        // 表示行情報
  3943.     LINESIZE_ENTRY_ROOT* ttLsc[2];//WZ3.90H 980919 
  3944.     NPARA nparaLsc;                //WZ3.90H 980921 対象のnpara
  3945.     // clip
  3946.     int fClip;                        // 範囲選択モード
  3947.         #define CLIP_NONE        0    // 範囲選択されてない
  3948.         // 基本範囲選択
  3949.         #define CLIP_CHAR        10    // 文字単位
  3950.         #define CLIP_LINE        11    // 表示行単位
  3951.         #define CLIP_PARA        12    // 論理行単位
  3952.         #define CLIP_BOX        13    // 箱形
  3953.         #define CLIP_WORD        14    // 単語
  3954.         #define CLIP_SENTENCE    15    // 文
  3955.         // すべてを選択
  3956.         #define CLIP_ALL        20
  3957.         // txSelectGetMode,txSelectEx用
  3958.         #define CLIP_LINECUR    31
  3959.         #define CLIP_PARACUR    32
  3960.         // txSelectEx用
  3961.         #define CLIP_VZ            40
  3962.         #define CLIP_WZ            41
  3963.         #define CLIP_SEARCH        42
  3964.         #define CLIP_MOUSE        43
  3965.         // 内部用
  3966.         #define CLIP_PARA1        90    // 1論理行
  3967.         #define CLIP_DELSTRPREV    91    // BSによる文字列削除
  3968.         #define CLIP_DELSTRNEXT    92    // DELによる文字列削除
  3969.         // txClipCopyEx用
  3970.         #define CLIP_COPYPARA1    100    // カーソル論理行をコピー
  3971.     //2.95 970125 ビットフィールド化
  3972.     FBOOL fClipMouse;        // マウスによる範囲選択?(fClipが0のときはFALSEであること)
  3973. __BITFIELD_BORDER__
  3974.     WORD fClipVz:1;            // VZ clip?
  3975.     WORD fClipWz:1;            // WZ clip?
  3976.                             // 最初に横に動かせば文字単位
  3977.                             // 下に動かせば論理行単位
  3978.     WORD fClipCur:1;        // (WZ内部用)
  3979.                             // CLIP_PARA/CLIP_LINE時にカーソル位置も範囲に含めるか?
  3980.     WORD fClipSearch:1;        // 検索による範囲選択?
  3981.     WORD fClipPasteJump:1;    // 最後のtxPasteで、ペーストした分カーソルを移動した?
  3982.     WORD fDispUnderClip:1;    // 選択開始時fDispUnder
  3983.     WORD fKeyVkShift:2;        // for キーボードマクロ時ms shiftキー範囲選択
  3984.                             // 0:実際のVK_SHIFTの押し下げ状態に従う
  3985.                             // 1:SHIFTは押されていないとみなす
  3986.                             // 2:SHIFTは押されているとみなす
  3987.     WORD fClipReserved:8;
  3988. __BITFIELD_BORDER__
  3989.     int lxClip;                // 範囲選択開始時lx
  3990.     int lyClip;                // 範囲選択開始時ly
  3991.     NPARA nparaClip;        // 範囲選択開始時npara
  3992.     NLINE nlineClip;        // 範囲選択開始時nline
  3993.     IFILE cliptop;            // 範囲選択開始位置
  3994.                             // 行単位の場合は行頭からになるので、
  3995.                             // clipcur0とは必ずしも一致しない
  3996.                             // Insert/Deleteでもズレないよう補正する
  3997.     IFILE clipcur0;            // 範囲選択開始時のカーソル位置のアドレス
  3998.                             // Insert/Deleteでズレるが問題ない
  3999.     IFILE cliptoppara;        // 範囲選択開始時の論理行頭のアドレス
  4000.                             // 必ずしも正確な値ではない
  4001.                             // Insert/Deleteでズレるが問題ない
  4002.     IFILE cliptopparatail;    // 範囲選択開始時の次の論理行頭のアドレス
  4003.                             // 必ずしも正確な値ではない
  4004.                             // Insert/Deleteでズレるが問題ない
  4005.     IBUFF clipend;            // ClipParaワーク
  4006.     BYTE modeFreeCursorClip;// 選択開始時modeFreeCursor
  4007.     IFILE cliptoptail;        // 範囲選択開始時の次の単語/文/行の先頭アドレス
  4008.     IFILE cliptopnow;        // 正確な選択開始アドレス(cliptopがベース)
  4009.     IFILE clipendnow;        // 正確な選択Tailアドレス(txGetAddressがベース)
  4010.     int xClip;                // 範囲選択開始時x
  4011.     BYTE fNoScrollLinenum:2;// 行番号をスクロールしない
  4012.     BYTE fNoHistCopy:1;        // HIST_COPYに出力しない    //WZ4.00Db 000312 
  4013.     IFILE clippastetop;        // 最後にペーストした時のペースト開始アドレス
  4014.     IFILE clippasteend;        // ペースト終了アドレス
  4015.     int xClipMouse;            //WZ3.90I 981105 マウスでの箱型選択、D&D用。選択終了時のx座標。
  4016.     //WZ3.90I 981104 D&D
  4017. __BITFIELD_BORDER__
  4018.     WORD fClipDrag:1;        // drag&drop-cut&paste
  4019.                             // 途中でtxSelectXXXが実行されたときはリセットする
  4020.     WORD fClipDragCaret:1;    //WZ3.90I 981107 ドロップターゲットカーソルモード中?
  4021.     WORD fOriginalCaret0:2;    // 保存用
  4022.     WORD fDispUnder0:2;        // 保存用
  4023.     WORD reservedCD:10;
  4024. __BITFIELD_BORDER__
  4025.     IFILE ifileDrop;        //WZ3.90I 981104 ドロップされた位置
  4026.     int lyDrop;                //WZ3.90I 981104 
  4027.     // ime描画・制御    //WZ3.90H 980928 全面変更
  4028.     WORD sizeImeCompstr;    // 挿入した変換中文字列のバイト数
  4029.     int xCompstrEnd;        // 変換中文字列の表示の最終行の右端の座標
  4030.                             // (cxBase,xbase含む)
  4031.     int xImecurCompstr;        // IMEのカーソル位置 x(cxBase,xbaseは除く)
  4032.     int yImecurCursor;        // IMEのカーソル位置 y(yBaseは除く)
  4033. #if !UNIX
  4034.     HRGN hrgnCompstrDraw;    // 変換中文字列を描画したhrgn
  4035. #endif
  4036.     BYTE fCompstrDrawing:2;    //WZ3.90H 980928 描画中?
  4037.     BYTE fImeCursorIme:1;    // カーソル位置(IMEの描画)で変換中?    //WZ4.00Aa 990110
  4038.     BYTE fImeOnInactive:1;    //WZ4.00Bl 990913 WA_INACTIVE時にIMEがONだった?    //WZ4.00Bl 990913 
  4039.     BYTE fImeWasOn:1;        //WZ4.00Ef 010425 
  4040.     BYTE fImeSetOff:1;        // IMEをoffにする?    //WZ4.00Ef 010425 new
  4041.     FBOOL fImeCompstr;        // カーソル位置(WZの描画)で変換中?(インライン変換は除く)
  4042.     //WZ3.90H 980913 一時ウィンドウ
  4043. #if !WINDOWSCE
  4044.     #if 0    //WZ3.90H 980915 多重化がうまく実装できたので、少々難のあった一時ウィンドウは廃止
  4045.     TXMULTI_CONTEXT* multi;            // 一時ウィンドウあり?
  4046.     #endif
  4047.     TXMULTI_CONTEXT_TEMP* multi0;    // 前回の多重化/一時ウィンドウのコンテキスト
  4048.     //WZ3.90H 980915 多重化
  4049.     MT* mt;                    // 多重化
  4050.     WORD idMt;                // 表ウィンドウのID
  4051.     WORD idMtMax;            // 今までの最大値のID
  4052.     BYTE fMtRedraw:2;        // 
  4053.     BYTE fMtOpening:1;        // 起動中
  4054. #endif
  4055.     // 最近入力した文字列
  4056.     mchar szInserted[30];    // 現在入力中の文字列
  4057.     BYTE lchInserted;        // szInserted内の文字数
  4058.     // 自動整形
  4059.     FBOOL fApfing;            // 自動整形中?
  4060.     FBOOL fApf;                // 自動整形を行う?
  4061.     BYTE fApfUndisp:2;        // Undisp nest
  4062.     BYTE modeApfIndentSpace;// lcxIndentのmodeSpace
  4063.     BYTE fApfSpaceJspace:1; // lchSpaceは全角空白か?
  4064.     BYTE fApfNakaguroAsArticleForce:1;// 一時的に"・"を"■"と同様に扱う
  4065.     BYTE fApfValidAutoFormat:1;    // 一時的に行頭の"・","1."を調べる
  4066.     BYTE fApfNameSymbol:1;    // 一時的に"名前>"を整形するか?    //WZ4.00Ca 991120 new
  4067.                             // 常にこれを整形するのはやりすぎなので、
  4068.                             // 指定されたときだけ整形する
  4069.     NPARA nparaApf;            // 自動整形中のnpara
  4070.     PARAFORM_ARTICLE apf;
  4071.     IFILE adrApfCurscreen;
  4072.     int lx0Apf;
  4073.     int x0Apf;
  4074.     NLINE nline0Apf;        //WCE0.95 970923 
  4075.     // 見出し文字列
  4076.     HEADLINE* tHeadline;        // on demand alloc    //WZ4.00Bj 990823 
  4077.     //WZ4.00Bj 990823 tpHeadline,tlchHeadline,head,lchHeadlineContent,offsetHeadlineContent廃止。
  4078.     //WZ3.90K 981113  tszHeadline廃止
  4079.     // アウトライン
  4080.     HWND hwndOutline;
  4081.     #if !WINDOWSCE
  4082.     HWND hwndOutlinePartition;    //WZ4.00Bj 990824 
  4083.     BYTE rateOutline;            //WZ4.00Bj 990824 
  4084.     WORD cxHwndbase0;            //WZ4.00Bj 990824 for fOutlineSplitExtend
  4085.     #endif
  4086.     FBOOL fOutlineHide;
  4087.     FBOOL fOutlineSplited;    //WCE1.01 980204 
  4088.     CBOOL fOutlineNoJump;    //WCE1.01 980204 
  4089.     // caret
  4090.     FBOOL fHaveCaret;        // キャレットを持っている?
  4091.     CBOOL fUndispCaret;        //WCE 970902 HideCaretしてもカーソルが消えないことがあるので、
  4092.                             // 位置を動かして強制的にカーソルを画面から除くために使用
  4093.     POINT pointCaret;        //WCE 970902 
  4094.     // keyword
  4095.     struct tagKeywordContext* keyword;    //WZ4.00Aa 990108 new。txKeyword,fKeywordNoSenseCaseは廃止。
  4096.     // 変数
  4097.     BYTE fTxfVarConfig:1;    //PWZ2BETA0.3 980519 設定中なので、内容が空なら代わりに指示文字列を表示
  4098.     VAR* var;                //PWZ2BETA0.3 980519 
  4099.     // TX-C
  4100.     TXCTEXTVAR* textvarRoot;//PWZ2BETA0.4 980602 for TEXTVAR
  4101.     // link
  4102.     LINKHIST* linkhist;        //WZ3.90L 981117 リンク移動ヒストリ
  4103.     // テキストの変換
  4104.     struct tagContextConverttext* converttext;    //WZ4.00Ac 990206 テキストの変換の設定を覚えるようにした
  4105.     BYTE ctDst:4;
  4106. //##TEXT - 現在の内部設定
  4107.     FBOOL fSilent;            //WCE0.94 970922 1行が長すぎるなどの警告を出さない
  4108.     FBOOL fKcAuto;            //WCE0.93 970919 漢字コード自動変換する?
  4109.                             // text->fFrameは設定によりセットされます。
  4110.                             // それ以外のtextはFALSEになってます。
  4111.                             // TRUEにするには、txOpenTextの前に明示的にセットします。
  4112.     FBOOL fCrAuto;            //WZ3.90J 981109 改行コード自動判別する?
  4113.                             // text->fFrameは設定によりセットされます。
  4114.                             // それ以外のtextはFALSEになってます。
  4115.                             // TRUEにするには、txOpenTextの前に明示的にセットします。
  4116.     BBOOL fDispControlSpace;// 制御コードを半角空白で表示(折り返しも対応)
  4117.                             // 改行なども半角空白で表示
  4118.     int width;                // 折り返し幅
  4119.     BYTE nClm;                //WCE1.01 980216 段数
  4120.     WORD cySpace;            //WCE1.01 980307 行間
  4121.     BYTE fNoMarkCur;        // txMarkCurしない? (++,--)を使う
  4122.                             // txMarkNow/txJumpMarkNow 専用
  4123.     IFILE mark0;            //WCE1.01 971222 txMarkNow時にオリジナルのmark[0]の値を保存
  4124.     FBOOL fDebug;
  4125.     FBOOL fReadMode;        // 閲覧モード
  4126. __BITFIELD_BORDER__
  4127.     WORD fNoConfig:1;        // txSetFileNameで設定データをロードしない
  4128.                             //参考:txInitTextで、"標準"の設定がロードされます
  4129.     WORD fNoProfile:1;        // txOpenTextでプロファイルを参照しない
  4130.     WORD fPreview:1;        // プレビュー用
  4131.                             // 表示中にキー入力を監視し、キー入力があれば
  4132.                             // 表示処理を中断して応答性を上げる
  4133.     WORD fTxAllocText:1;    // txAllocTextでアロケートされたtext
  4134.     WORD fUndispWmpaint:1;    // WM_PAINTで描画しない?
  4135.     WORD fFilelist:1;        //WZ4.00Ac 990207 FILELISTウィンドウ?
  4136.     WORD fFilepreview:1;    //WZ4.00Ac 990207 ファイルプレビューウィンドウ?
  4137.     WORD fMemo:1;            // メモテキストウィンドウ?
  4138.     WORD fGrep:1;            // Grep結果一覧ウィンドウ?
  4139.     WORD fHelp:1;            // ヘルプテキストウィンドウ?
  4140.     WORD fContexthelp:1;    // コンテキストヘルプテキスト?    //WZ4.00Bo 991011 new
  4141.     WORD fMailPreview:1;    //PWZ2BETA0.3 980509 メールプレビューアー
  4142. //WZ4.00Ee 010416 text->fMailTemplate廃止
  4143.     WORD fTML:1;            //PWZ2BETA0.3 980511 TMLヘッダあり、すなわちTMLファイル?
  4144.                             // これがONならRFC822形式のヘッダがあるということになる。
  4145. #if 1//WZ3.90G 980903 デフォルトではAlt+M etc を処理しないように変更 for WZテキストボックスを使いやすく。
  4146.     WORD fUseDefaultAltKey:1;//WZ3.90G 980903 Alt+M etc を処理する
  4147. #else
  4148.     WORD fNoSyskeydown:1;    //PWZ2BETA0.3 980519 Alt+M etc を処理しない
  4149. #endif
  4150.     WORD fTags:1;            //PWZ2BETA0.4 980612 タグファイル?
  4151.     WORD fNoFlushWindow:1;    //WZ3.90J 981109 txFlushWindowをしない?
  4152. __BITFIELD_BORDER__
  4153.     WORD fClickActive:1;    //WZ3.90I 981103 
  4154.     WORD fOnCheckJumpX:2;    //WZ3.90I 981104 
  4155.     WORD modeFileShare:2;    //WZ3.90H 980925 
  4156.                             // 0のときはsh->modeFileShareに従う。
  4157.                             // FILESHARE_DENY_WRITE,FILESHARE_EXCLUSIVEのときは、
  4158.                             // sh->modeFileShareに関わらず、排他制御を行う。裏テキストも行う。
  4159.                             // 直接変更せず、txSetFileShareを使うこと。
  4160.     WORD fNoBuffReduceAuto:2;//WZ3.90O 981204 自動のtxBuffReduceをしない
  4161.     WORD fHeadlineOutline:1;//WZ4.00Bj 990810 見出しのみのテキスト(見出し番号は段落先頭の1文字)
  4162.     WORD fDispMail:1;        //WZ4.00Bl 990913 MAIL PREVIEW/MAIL EDITOR用の色分け?
  4163.     WORD fDispRuby:1;        //WZ4.00Bl 990919 通常編集時にルビを表示する?
  4164.     WORD fPccExt:1;            //WZ4.00Db 000210 txGetFileExtWでpcc->wszExtを優先する?
  4165.     BBOOL fConfigtext;        //WCE1.01 980301 テキスト埋め込みの設定あり?
  4166.     WORD dlgcode;            // TXWS_TEXTのWM_GETDLGCODE処理コード
  4167.                             // default:DLGC_WANTALLKEYS
  4168.     BBOOL fNoImeControl;    // IMEの制御をしない
  4169.                             // BBOOLに拡大
  4170.     KEY* key;                // 現在のキー配列
  4171.                             // text->fFrame/fTXWS_TEXTのみセットされる
  4172.                             // 裏テキストではNULL
  4173. #if 0//WZ3.90H 980927 SHAREに移動した
  4174.     BYTE pagingmode;        // ページングモード('S','C','P',' ')
  4175. #endif
  4176.     WORD nSpaceTop;            // 上端を空けるドット数
  4177.                             //WCE1.01 980305 BYTE->WORD 印刷時は上マージン
  4178.     BBOOL fListbox;            // リストボックスモード?
  4179.         #define TXLB_SIZEATR        2    // 行アトリビュートバイト数(1.00C)
  4180.         // リストボックスモード時の行アトリビュート1バイト目
  4181.             #define TXLB_NORMAL        ' '    // ノーマル
  4182.             #define TXLB_SELECT        '*'    // 選択されたファイル
  4183.         // リストボックスモード時の行アトリビュート2バイト目(1.00C)
  4184.             //    色コードを指定する
  4185.             //    '1'-'5'を指定するとrgbComment-rgbPreprocessor色で表示
  4186.             //    それ以外はテキスト色で表示
  4187.     int nListboxSelect;            //WCE0.94 970921 選択中の数
  4188.     BYTE fListboxSelCur:1;        // カーソル行を選択表示する?
  4189.     BYTE fDispEofFull:1;        // EOF行はlcxmaskを無視して表示?
  4190.     BYTE fScrolled:1;            // 最後のtxDispFlushでスクロールした?
  4191.     BYTE fCustdataAutoFree:1;    // txCloseでcustdataをfreeしNULLにセットする?
  4192.     LPVOID custdata;            // マクロユーザデータ
  4193.     int lcxmask;                // 左からlcxmask文字は表示しない
  4194.                                 // lcxmaskに満たない行は、マスクしない
  4195.     BYTE iLastJumpMark;            // uiMarkで最後にジャンプしたマーク番号
  4196.     DWORD abAdjustGauIncrease;    //WCE0.91 970915 AdjustGapでテキストバッファサイズを拡大するときに
  4197.                                 // このサイズずつ拡大する。0を指定するとデフォルトで拡大する
  4198.     // 設定の切り替え/アプリケーション専用設定
  4199.     //WZ3.90I 981028 同じ拡張子で異なる設定を利用可能にした。
  4200.     MESSAGEID midLoadConfigext;    // 指定したMIDのConfigextを読み込む//WZ4.00Ee 010416 new
  4201.                                 // 0なら拡張子の設定または標準の設定を読み込む
  4202.     BYTE fConfigRead:1;            // 設定の切り替えによる指定?//WZ4.00Ee 010417 new
  4203.     void (*configextOnCreate)(struct tagtx* text);    // 設定が作成されたときのコールバック指定//WZ4.00Ee 010416 new
  4204.     // txMsghdr
  4205.     BYTE fTextcfg:1;        //WZ3.90I 981027 テキスト設定ファイル?
  4206.     BYTE fTextcfgOnConfigRead:1;//WZ3.90I 981106 fTextcfgでconfigRead時?
  4207.     BYTE fMsghdrLiteral:2;    //WZ3.90I 981027 txMsghdrXXXでszHeaderの末尾の':'を省略する。
  4208.     BYTE fMsghdrSetAdd:2;    //WZ3.90N 981202 txMsghdrSetで常に追加する。
  4209.     BYTE fMsghdrUseCache:2;    //WZ4.00Ee 010412 ibuffMsghdrCacheを使う?
  4210.     BYTE fMsghdrGL:2;        //WZ4.00Ef 010424 "header"と"::header"を同列に扱う?
  4211.     BYTE fMsghdrSetLocal:2;    //WZ4.00Ef 010424 txMsghdrSetで"header"の先頭に"::"を加えて"::header"とする?
  4212.     IBUFF ibuffMsghdrCache;    //WZ3.90I 981027 txMsghdrGet高速化用キャッシュ
  4213.     // wndprocのフック
  4214.     TXWNDHOOK* rootWndtextHook;    //WZ3.90I 981026 
  4215.     TXWNDHOOK* rootWndbaseHook;    //WZ3.90I 981026 
  4216.     LRESULT resultWndtextHook;    //WZ3.90I 981024 標準値は0
  4217.     LRESULT resultWndbaseHook;    //WZ3.90I 981024 標準値は0
  4218.     // walk
  4219.     IFILE curwalkstart;
  4220.     int lywalkstart;
  4221.     FBOOL fwalkselectjump;
  4222.     FBOOL fAutoSaveForce;        // !fFrameでもオートセーブを行う?
  4223.     FBOOL fWalking;                //WZ4.00A 981229 
  4224.     HWND hwndAutoSaveProxy;        // 裏テキストの自動保存のためのもの
  4225.                                 // 代理WM_TIMER_TXAUTOSAVE受け取りhwnd
  4226.                                 // NULLならhwndtextを使用
  4227.     // apfu
  4228.     CBOOL fApfuShiftEnter;        // 自動段落体裁 Shift+Enter中?
  4229.     CBOOL fParaIchCountTabOne;    //WCE1.01 980115 txGetParaIch/txJumpParaIchで連続するTABを一文字として数える?
  4230.     CBOOL fParaIchCountTxfNone;    //WCE1.01 980308 txGetParaIch/txJumpParaIchで文字でないCHAR_TXFを数えない
  4231.     // txf
  4232.     TAGNEST* tagnest;            // root
  4233.     TAGNEST* tagnestNext;        // 文字挿入時に付加するタグ
  4234.     FBOOL fTagnestNextClear;    //WCE1.01 980308 次の文字挿入時に
  4235.                                 // 文字装飾をクリアして文字を挿入する。
  4236.     IFILE adrInsertPre;            //WCE1.01 980308 
  4237.     CBOOL fTxfDirect;            // txRight etcでCHAR_TXFを直接一文字として扱うか?
  4238.                                 // 普段は0にしておくこと
  4239.     FBOOL fGetCharBytes;        // txGetCharBytesモード?
  4240.     IFILE texttop;                //WCE1.01 980228 テキストの先頭IFILE
  4241.                                 // 通常はIBUFF(texttop <= curgap)とみなしてよい。
  4242.     IFILE ifileTmlBody;            //WZ3.90H 980923 TMLの本文先頭IFILE
  4243.                                 // 通常はtexttopと等しい
  4244.                                 // 範囲内印刷時はtexttopを範囲の先頭にセットするので、
  4245.                                 // この場合に、ifileTmlBody <= texttopにセットされる。
  4246.     // 罫線
  4247.     FBOOL fTableKeisen;            // 内部用 罫線表mode?
  4248.     FBOOL fTableProperty;        // 表のプロパティダイアログ表示中
  4249.     // disp
  4250.     FBOOL fDispParse;            // 構文解析による字句の色分け表示を行う?
  4251.     FBOOL fDispColoring;        // 構文解析以外の色分け表示を行う?    //WZ4.00Ab 990202 new
  4252.     // 箱型選択
  4253.     DWORD wtmBoxDisped;
  4254.     FBOOL fBoxDispNeed;
  4255.     // 印刷
  4256.     LPRINT* lp;                    // 印刷情報コンテキスト
  4257. //    mchar szlpstyle[CCHLPSTYLE];// 印刷スタイル名//WZ4.00Ee 010417 廃止
  4258.     MESSAGEID midLpstyle;        //WZ4.00Ee 010411 現在の印刷スタイル(szlpstyleから変更)
  4259.     int pvRate;                    // 印刷プレビューの表示レート(1-2000)
  4260.                                 //WZ3.90H 980928 %だと1きざみが大きすぎるので‰に変更
  4261.     int pvRate0;                //WZ3.90H 980921 for 元に戻す
  4262.     IFILE adrFlushDispDetail;    //WZ3.90I 981106 
  4263.     BYTE flpPreview:1;            // 印刷プレビュー中?
  4264.     BYTE fDispDetail:1;            //WZ3.90I 981106 詳細表示?これがTRUEなら、flpPreviewもTRUEであること。
  4265.     BYTE fFlushDispDetail:1;    //WZ3.90I 981106
  4266.     // html
  4267.     BBOOL fHtmlDispReduceTag;    //WZ3.90I 981027 HTMLのタグの縮小表示
  4268.     BBOOL fHtmlDispReduceAmp;    //WZ3.90I 981027 HTMLの文字参照の縮小表示
  4269.     BBOOL fHtmlTableTml;        //WZ3.90I 981027 表を解釈中?
  4270.     CBOOL fHtmlTmlConverting;    //WZ3.90O 981203 TML<->HTML変換中?
  4271.     HTMLATR* htmlatr;                //WZ3.90I 981029 
  4272. //##TEXT - TMLファイルの埋め込み設定専用
  4273. //通常ファイルでは使用頻度が低いし、それにしては設定サイズが大きいため。
  4274.     //PWZ2BETA0.3 980514 「名前を付けて保存」の初期値
  4275.     mchar szFilenameSaveAs[CCHWORD];    // 拡張子まで指定した場合はその名前で保存
  4276.                                         // "*.拡張子"の場合はファイル名はそのままで
  4277.     BYTE modeSaveAs;
  4278.         #define MODE_SAVEAS_THROUGH        0        // そのまま
  4279.         #define MODE_SAVEAS_PLAINTEXT    1        // プレーンテキストに変換して保存
  4280.         #define MODE_SAVEAS_LFTEXT        2        // 改行付きテキストに変換して保存
  4281.         #define MODE_SAVEAS_WORD        3        //PWZ2BETA0.5 980614 ワープロ用テキストに変換して保存
  4282.         #define MODE_SAVEAS_LFTEXT_TEMPLATE    99    // for WZ MAIL TEMPLATE
  4283. //##TEXT - 現在のユーザ設定(ファイルに保存されない)
  4284.     #if 0//WZ4.00Ee 010417 廃止
  4285.     mchar szcfg[CCHSTYLENAME];    //WZ3.90I 981028 現在使用している設定の名前
  4286.                                 //WZ3.90I 981028 同じ拡張子で異なる設定を利用可能にした。
  4287.                                 // 空なら、拡張子の設定を使用
  4288.     #endif
  4289.     BBOOL fAppendEof;            // EOFコードを付加するかどうか?
  4290.                                 //WZ3.90J 981110 WZ3.0とは意味が異なる。
  4291.                                 // 0:そのまま
  4292.                                 // 1:付加する
  4293.                                 // 2:EOFを取り除く
  4294.     BYTE nlineHeader;            // ページ数計算に入れないヘッダ行数
  4295.     BBOOL fDispFull;            //WZ3.90J 981109 全画面表示?
  4296. //##TEXT - 拡張子毎の文字列の設定(個別に設定ファイルに保存される)(順序変更可)
  4297. //WZ4.00Da 000206 new
  4298. //すべてALLOCED。NULLの場合あり。
  4299.     mchar* aszHeadline1;        // (TML埋込)見出し1
  4300.     mchar* aszHeadline2;        // (TML埋込)見出し2
  4301.     mchar* aszHeadline3;        // (TML埋込)見出し3
  4302.     mchar* aszHeadline4;        // (TML埋込)見出し4
  4303.     mchar* aszHeadline5;        // (TML埋込)見出し5
  4304.     mchar* aszHeadline6;        // (TML埋込)見出し6
  4305.     mchar* aszPlt;                // (TML埋込)先割り原稿の設定(WZFUNC_WRITING用)
  4306.     #if !WINDOWSCE
  4307.     mchar* aszHelp1;            // 外部ヘルプ1 旧tszhelp[0]    //WZ4.00Ee 010411 
  4308.     mchar* aszHelp2;            // 外部ヘルプ2 旧tszhelp[1]    //WZ4.00Ee 010411 
  4309.     #endif
  4310.     mchar* acszCondition;        //#if色分け条件 ,で区切って複数指定可 旧cszCondition    //WZ4.00Ee 010411 
  4311. //##TEXT - 拡張子毎の設定(設定ファイルに保存される)(順序変更不可。追加のみ可)
  4312.     int configExtGap;            // これ以前のtextメンバの変更でWORD,DWORDメンバの
  4313.                                 // アライメントが変わることがあるのを防止
  4314. BYTE configExtTop;                // 0:未初期化,1:初期化済み
  4315.     WORD configWidth;            // (TML埋込)折り返し幅
  4316.     int height;                    // (TML埋込)1ページの行数
  4317.     SIGNED_WORD tabsize;        // (TML埋込)タブカラム数
  4318.     BBOOL fSetWidthByWindow;    // (TML埋込)ウィンドウの幅に合わせて、表示カラム数を自動設定する
  4319.     int cyConfigSpace;            // (TML埋込)行間
  4320.                                 //WCE1.01 980307 cySpace -> cyConfigSpace
  4321.     BBOOL fDispUnder;            // アンダーライン表示
  4322.     BBOOL fDispTab;                // TABの表示
  4323.     BBOOL fDispJspace;            // 全角スペースの表示
  4324.     BBOOL fDispLf;                // CR の表示
  4325.     BBOOL fDispEof;                // EOFの表示
  4326.     BBOOL fDispLine;            // 行番号表示
  4327.     BBOOL fLineD;                // 表示行モード(1)/論理行モード(0)
  4328.                                 // 通し番号表示行(2)    //WZ4.00Bl 990913 
  4329.     SIGNED_WORD modeImeAtOpen;    // オープン時のIME制御
  4330.         #define ISF_NONE    0
  4331.         #define ISF_OFF        1
  4332.         #define ISF_ON        2
  4333.         #define ISF_ONKANA    3
  4334.     BBOOL modeFreeCursor;        // フリーカーソル OFF(0),ON(1),VZ(2)
  4335.     BBOOL fTabToSpace;            // [TAB]でスペースコードを入力
  4336.     BBOOL modeAutoIndent;        // オートインデント
  4337.         #define AUTOINDENT_NONE        0    // しない
  4338.         #define AUTOINDENT_EXEC        1    // する
  4339.         #define AUTOINDENT_JSPACE    2    // 全角スペースもする
  4340.     BBOOL fJkinsoku;            // (TML埋込)禁則
  4341.         //2.93 禁則を改良
  4342.         #define KINSOKU_OUT_HANG    1    // 追い出し、句読点ぶら下げ
  4343.         #define KINSOKU_OUT            2    // 追い出し、句読点追い出し
  4344.         #define KINSOKU_IN_HANG        3    // 追い込み、句読点も追い込み
  4345.     SIGNED_BYTE lfHeight;        // (TML埋込)フォントサイズ
  4346.     BBOOL fScrollBarV;            // 縦スクロールバー
  4347.     BYTE widthApf;                // 自動整形標準折り返し幅
  4348.     BYTE fConfigApf;            // 自動整形ON?
  4349.     BYTE indentApf;                // 自動整形インデント単位
  4350.     CHARCONVERT charconvert;    // オートコレクト
  4351.     BBOOL fAfn;                    // ファイル名の自動決定
  4352.     mchar szAfn[CCHSWORD];        // 自動決定の方法
  4353.     BYTE nConfigClm;            // (TML埋込)段数
  4354.                                 //WCE1.01 980216 nClm->nConfigClm
  4355. //    mchar cszHeadline[CCHWORD];    // (TML埋込)見出し文字列    //WZ4.00Da 000206 廃止
  4356.     BBOOL modeApfu;                // 体裁認識 (PWZ1.0の段落体裁の自動認識と同じ)
  4357.         #define APFU_ON            1
  4358.         #define APFU_ARTICLESUB    2
  4359.     BBOOL fWordlap;                //WCE0.91 970911 (TML埋込)英字禁則
  4360.     BBOOL fDispStatusbar;        //WCE0.91 970911 ステータスバー
  4361.     BYTE fDispHeadlineBold;        //WCE0.91 970912 見出しを太字で表示
  4362.         //WCE1.01 980119
  4363.         // Bold  mask:0x01(COLORING_BOLD)
  4364.         // Under mask:0x02(COLORING_UNDER)
  4365.         // Color mask:0x04(COLORING_COLOR)
  4366.         #define COLORING_NONE                0
  4367.         #define COLORING_BOLD                1
  4368.         #define COLORING_UNDER                2
  4369.         #define COLORING_BOLDUNDER            3
  4370.         #define COLORING_COLOR                4
  4371.         #define COLORING_COLOR_BOLD            5
  4372.         #define COLORING_COLOR_UNDER        6
  4373.         #define COLORING_COLOR_BOLDUNDER    7
  4374.         #define COLORING_ITALIC                8    //WZ4.00Bo 991012 new (LPRINTのみ)
  4375.     mchar lfFaceName[LF_FACESIZE];//WCE0.91 970912 (TML埋込)フォント名の指定
  4376.     BBOOL fMyFont;                //WCE0.91 970912 自分専用のフォントを使用?
  4377.     BBOOL lfBold;                //WCE0.91 970912 太字で表示
  4378.     BBOOL fDispRuler;            //WCE0.91 970912 ルーラー表示
  4379.     BYTE nGageRuler;            //WCE0.91 970912 ルーラーゲージ単位(10 か 8)
  4380.     BBOOL fDispControl;            //WCE0.91 970913 制御コードを表示?(折り返しも対応)
  4381.     BBOOL fSubtitleApf;            //WCE0.91 970914 自動整形小見出有効
  4382.     BBOOL modeAcfu;                //WCE0.92 970918 自動文字体裁 認識
  4383.     BBOOL fOpenReadmode;        //WCE0.94 970921 閲覧モードで開く
  4384.     BBOOL fOutlineSplitWindow;    //WCE1.01 980312 アウトライン浮動しない?
  4385.     BYTE lcxOutlineWindow;        //WCE1.01 980312 アウトラインウィンドウの幅
  4386.     FBOOL fTxf;                    //WCE1.01 971106 TRUE:タグを非表示、FALSE:タグを表示
  4387.     FBOOL fTxfEnable;            //WCE1.01 980113 CHAR_TXFを特別に扱う?
  4388.     BYTE modeKeisen;            //WCE1.01 980116 罫線モード
  4389.     //WCE1.01 980119 headline
  4390.     COLORREF rgbHeadline;                // 見出しの色
  4391.     //WCE1.01 980119 keyword
  4392.     BYTE fDispKeyword;                    // COLORING_xxx
  4393.     wchar wszfilenameKeyword[CCHNAME];    // キーワードファイル名
  4394.     mchar szKeyword[30];                // 即席キーワード指定
  4395.     COLORREF rgbKeyword;                // キーワードの色
  4396.     //WCE1.01 980119 検索文字列の色分け
  4397.     BYTE fDispFind;                // 検索後に検索文字列を色分け?
  4398.     COLORREF rgbFind;            // その色
  4399.     //WCE1.01 980126 
  4400.     BBOOL fWidthInfinity;        // 折り返しなし?
  4401.                                 ////WCE1.01 980126  nlineのカウントなど、もっと最適化できる。
  4402.     BBOOL fApfu2;                // 「タブ体裁」?
  4403.     //WCE1.01 980201 世代管理
  4404.     BBOOL fUnlimitUndoBuff;        // アンドゥバッファサイズを制限しない?
  4405.     WORD kbGeneBuffMax;            // 世代管理保持の最大サイズ(KB)
  4406.     BBOOL fGeneEnable;            // 世代管理を行う?
  4407.     //WCE1.01 980202 色分け
  4408.     BBOOL fDispComment;            // コメントを色分け?
  4409.     COLORREF rgbComment;        // コメントの色
  4410.     BBOOL fDispString;            // 文字列を色分け?
  4411.     COLORREF rgbString;            // 文字列の色
  4412.     BBOOL fDispConst;            // 定数を色分け?
  4413.     COLORREF rgbConst;            // 定数
  4414.     BBOOL fDispPreprocessor;    // プリプロセッサを色分け?
  4415.                                 // 2なら、#if/else/endifも条件で色分け    //WZ4.00Bl 990921 
  4416.     COLORREF rgbPreprocessor;    // プリプロセッサ
  4417.     BBOOL fDispTag;                // タグを色分け?
  4418.     COLORREF rgbTag;            // タグ
  4419.     COLORREF rgbHottext;        // リンク
  4420.     BYTE filekind;                // ファイルの種類
  4421.         #define TEXT_PLAIN        0    // プレーンテキスト
  4422.         #define TEXT_APFU        1    // 体裁認識テキスト
  4423.         #define TEXT_DOCUMENT    2    // タブ体裁テキスト
  4424.         #define TEXT_WZ            3    // TML文書
  4425.         #define TEXT_HTML        4    // HTML文書
  4426.         #define TEXT_XML        5    // XML文書
  4427.         #define TEXT_TEXT        6    // 任意のテキスト
  4428.         #define TEXT_PROGRAM    7    // プログラムファイル(ワーク)
  4429.         //
  4430.         #define TEXT_C            100    // Cプログラム
  4431.         #define TEXT_PASCAL        101    // pascalプログラム
  4432.         #define TEXT_FORTRAN    102    // fortranプログラム
  4433.         #define TEXT_SCRIPT        103    // スクリプトプログラム
  4434.         #define TEXT_ASM        104    // アセンブラプログラム
  4435.         #define TEXT_BASIC        105    // BASICプログラム
  4436.     BBOOL fDispURL;                // URLの色分け?
  4437.     BBOOL fApfArticleSpace;        //WCE1.01 980206 自動整形で、箇条書きの後に余白を空ける?
  4438.                                 // TXF、体裁認識の箇条書きの体裁と合わせるために付けた
  4439.     mchar szEditor[CCHNAME];    //WCE1.01 980209 エディタ名
  4440.     BBOOL fNoDispHeadlineString;//WCE1.01 980212 見出しを表示しない?
  4441.     BBOOL fApfuTab;                //WCE1.01 980217 段落先頭のタブを字下げとみなす?
  4442.     BBOOL fHeadlineStringStd;    //PWZ2BETA0.3 980509 標準の見出し文字列を使用?
  4443.     BBOOL fDispQuote;            //PWZ2BETA0.3A 980526 引用を色分け?
  4444.     COLORREF rgbQuote;            //PWZ2BETA0.3A 980526 引用の色
  4445.     BBOOL fApfJspaceIndentTop;    //PWZ2BETA0.3A 980526 自動整形で、全角空白は行頭の字下げとみなす?
  4446.     BBOOL fApfScenario;            //PWZ2BETA0.5 980617 シナリオ整形を行う?
  4447.     BYTE lcxScenarioSerifuIndent;//PWZ2BETA0.5 980618 せりふの2行目のインデント数
  4448.                                 // 0を指定すると標準値(2)になります。
  4449.     //WZ3.90E 980804 
  4450.     BYTE modeWs;                // ウィンドウサイズモード
  4451.         #define WS_PAGE            0    // ページサイズで指定
  4452.         #define WS_MAX            1    // 最大化
  4453.         #define WS_DESTEXT        2    // 中身を指定
  4454.     WORD lcxWindowDefault;        // ウィンドウの幅
  4455.     WORD lcyWindowDefault;        // 高さ
  4456.     FBOOL fVertical;            //WZ3.90I 981013 (TML埋込)縦書き?
  4457.     BBOOL fVH;                    //WZ3.90I 981015 縦中横?
  4458.     BBOOL fPageTurn;            //WZ3.90I 981015 ページめくりモード?
  4459.     BBOOL fDispToolbar;            // ツールバー表示        実効値はtxGetDispToolbar()
  4460.     BBOOL fDispFunctionKey;        //WZ3.90I 981107 ファンクションキーの表示
  4461.     BBOOL fDispTitlebar;        //WZ3.90J 981109 タイトルバーを表示?
  4462.     BBOOL fDispMenubar;            //WZ3.90J 981109 メニューバーを表示?
  4463. #if 0    //WZ4.00Ee 010411 廃止
  4464. #if !WINDOWSCE
  4465.     // 外部ヘルプ
  4466.     #define HELP_N    2
  4467.     mchar tszhelp[HELP_N][CCHWORD];
  4468. #endif
  4469. #endif
  4470.     BYTE modeConvertSpaceAtSave;    //WZ3.90J 981109 保存時にタブをスペースに変換
  4471.                         // 0:変換しない
  4472.                         // 1:tab->spc
  4473.                         // 2:spc->tab
  4474.     BYTE modeConvertKanaAtSave;        //WZ3.90J 981109 保存時のカタカナの変換
  4475.                         // 0:変換しない
  4476.                         // 1:半角->全角
  4477.                         // 2:全角->半角
  4478.     BBOOL fDeleteTailSpaceAtSave;    //WZ3.90J 981109 保存時に行末の空白を除去
  4479.     BBOOL fConfigBinedit;        //WZ3.90J 981109 バイナリ編集を開始
  4480.     BBOOL fAutoFormat;            //WZ3.90J 981109 オートフォーマット
  4481.     BYTE cxSpace;                //WZ3.90J 981109 字間
  4482.     BBOOL fDispRightMargin;        //WZ3.90J 981109 右マージンの表示
  4483.     BBOOL fApfuBeamtab;            //WZ3.90K 981114 段落先頭以外のタブを桁揃えする?
  4484.     BBOOL fScrollBarH;            // 横スクロールバー
  4485.                                 //WZ4.00A 981227 横スクロールバーの設定が保存されてなかった。txcマクロの再コンパイル必要。
  4486.         #define SCROLLBAR_OFF    0
  4487.         #define SCROLLBAR_ON    1
  4488.         #define SCROLLBAR_AUTO    2    //2.99D 970329 2:自動を追加
  4489.     BBOOL fOutlineDispHeadstr;    //WZ4.00Bj 990824 
  4490. #if !WINDOWSCE
  4491. //    mchar szlpstyleStd[CCHLPSTYLE];    //WZ4.00Bj 990830 標準の印刷スタイル名    //WZ4.00Ee 010411 廃止
  4492.     mchar szToolbar[CCHNAME];        //WZ4.00Bl 990909 ツールバーの名前
  4493.     mchar szMenu[CCHNAME];            //WZ4.00Bl 990909 メニューバー
  4494.     mchar szMenuMouseR[CCHNAME];    //WZ4.00Bl 990909 マウス右クリックメニュー
  4495.     mchar szMenuMouseRClip[CCHNAME];//WZ4.00Bl 990909 選択時のマウス右クリックメニュー
  4496. #endif
  4497.     SEARCHMODE searchmodeInit;    //WZ4.00Bl 990908 検索モード
  4498.     BYTE lcxLinenum;            //WZ4.00Bl 990916 行番号の表示桁数(0=標準)
  4499. #if 0//WZ4.00Ee 010411 廃止
  4500. #if WINDOWSCE
  4501.     mchar cszCondition[CCHSWORD];    //WZ4.00Bl 990922 #if色分け条件 ,で区切って複数指定可
  4502. #else
  4503.     mchar cszCondition[CCHWORD];    //WZ4.00Bl 990922 #if色分け条件 ,で区切って複数指定可
  4504. #endif
  4505. #endif
  4506.     BBOOL fApfuBeamtabInfinity;    //WZ4.00Bl 990923 桁揃えタブの行は折り返ししない?
  4507.     BBOOL fPlt;                    //WZ4.00Da 000206 (TML埋込)先割り原稿(WZFUNC_WRITING用)(評価中)
  4508.     BBOOL fNoDispHeadlineLinenum;    //WZ4.00Ec 010124 行番号に見出し番号を表示しない?
  4509.     MESSAGEID midLpstyleStd;    //WZ4.00Ee 010411 標準の印刷スタイル(szlpstyleStdから変更)
  4510.     MESSAGEID midConfigext;        //WZ4.00Ee 010411 この設定のmid
  4511. BYTE configExtEnd;
  4512. //##TEXT - 共通設定(設定ファイルに保存される)(順序変更不可。追加のみ可)
  4513.     int configShareGap;            // これ以前のtextメンバの変更でWORD,DWORDメンバの
  4514.                                 // アライメントが変わることがあるのを防止
  4515. BYTE configShareTop;            // 0:未初期化,1:初期化済み
  4516.     BBOOL fUndoContinue;        // 連続アンドゥ
  4517.                                 // カーソルを移動しないで行った
  4518.                                 // 挿入・削除・BSを一回の操作で一括アンドゥ
  4519.     BBOOL fJumpCursorCenter;    // ジャンプ後カーソルを画面の中央へ
  4520.     BYTE modeDispSearch;        // WINDOWSCE
  4521.         #define DISPSEARCH_STANDARD    0    // 標準(modeEditorによって異なる)
  4522.         #define DISPSEARCH_NORMAL    1    // 通常表示
  4523.         #define DISPSEARCH_REVERSE    2    // 反転表示
  4524.         #define DISPSEARCH_SELECT    3    // 選択
  4525.     BBOOL fSpaceLeft;            // 左端を空ける
  4526.     BYTE modeEditor;            // キー配列
  4527.         #define ME_WIN        0
  4528.         #define ME_VZ        1
  4529.         #define ME_MI        2
  4530.         #define ME_EMACS    3    //PWZ2BETA0.5 980617 new
  4531.     SIGNED_WORD nCursorFaceInsert;    // カーソル形状 (挿入)
  4532.     SIGNED_WORD nCursorFaceWrite;    // カーソル形状 (上書)
  4533.         #define CURSORFACE_STANDARD    0    // 標準(modeEditorによって異なる)
  4534.                                         // WINDOWSCE
  4535.         #define CURSORFACE_WINDOWS    1    // Windows標準
  4536.         #define CURSORFACE_FULL        2    // フル
  4537.         #define CURSORFACE_HALF        3    // 縦半分
  4538.         #define CURSORFACE_HALFHALF    4    // 縦1/4
  4539.         #define CURSORFACE_UNDERBAR    5    // アンダーバー
  4540.     BBOOL fJumpTxPasteEnd;        // VZ - ブロックペースト後カーソル位置更新
  4541.     BBOOL fSearchTitle;            // VZ - タイトルサーチモード有効
  4542.     WORD kbUndoBuffMax;            // アンドゥバッファの最大サイズ(KB)
  4543.     BYTE modeImeComposition;    // 変換中文字列の表示方法
  4544.         #define IMECOMP_WINDOW        0    // 変換ウィンドウで表示
  4545.         #define IMECOMP_CURSOR        1    // カーソル位置に表示
  4546.         #define IMECOMP_CURSORIME    2    // IMEの描画でカーソル位置に表示    //WZ4.00Aa 990110 new
  4547.         #define IMECOMP_INLINE        3    // インラインに表示(未完成)    //WZ4.00Aa 990110 2->3
  4548.     COLORREF rgbText;            // 通常のテキスト
  4549.     COLORREF rgbBack;            // 背景
  4550.     COLORREF rgbBlockText;        // ブロック内の文字色
  4551.     COLORREF rgbBlock;            // ブロック
  4552.     COLORREF rgbNline;            // 行番号
  4553.     COLORREF rgbUnderline;        // アンダーライン
  4554.     COLORREF rgbControl;        // 制御文字の色
  4555.     COLORREF rgbURL;            // URLの色
  4556.     BBOOL fUseMenuKey;            // @<英字キー>,@[特殊キー] 入力可
  4557.     BYTE modeTagJump;            // タグジャンプオプション
  4558.         #define TAGJUMP_STD    0    // 標準
  4559.         #define TAGJUMP_VZ    1    // VZのタグジャンプも認識
  4560.     // 自動保存
  4561.     BBOOL fAutoSave;            // オートセーブを行う?
  4562.     BYTE autosaveMode;            //WCE 970902 WZ3.0とは実際値が違う
  4563.         #define AUTOSAVE_BACKUP            0
  4564.         #define AUTOSAVE_OVERWRITE        1
  4565.     BYTE autosaveAtQuit;
  4566.         #define AUTOSAVE_QUIT_NONE        0
  4567.         #define AUTOSAVE_QUIT_DELETE    1
  4568.         #define AUTOSAVE_QUIT_BACKUP    2
  4569.     BYTE autosaveAtOpen;        //WCE 970902 WZ3.0とは実際値が違う
  4570.         #define AUTOSAVE_OPEN_NONE            0
  4571.         #define AUTOSAVE_OPEN_MESSAGE        1
  4572.         #define AUTOSAVE_OPEN_UIATTENTION    2
  4573.         #define AUTOSAVE_OPEN_UIBACKUP        3
  4574.         #define AUTOSAVE_OPEN_UIREPLACE        4
  4575.         #define AUTOSAVE_OPEN_REPLACE        5
  4576.         #define AUTOSAVE_OPEN_UIBACKUPFORCE    6    //WZ3.90J 981108 new
  4577.     WORD nAutoSaveCmd;            // 編集コマンド数
  4578.     WORD secAutoSaveWait;        // 待ち時間
  4579.     //
  4580.     BBOOL fCursorMoveBySB;        //WCE0.92 970918 スクロールバーでカーソル移動?
  4581.     BYTE modeKeyClip;            // SHIFT+矢印での選択モード
  4582.         #define MC_CUA    0        // Windows準拠
  4583.         #define MC_WZ    1        // 開始方向感応
  4584.         #define MC_VZ    2        // 方向感応(VZライク)
  4585.     BYTE modeMouseClip;            // マウスでの選択モード
  4586.     BBOOL modeUseTextstack;        //WCE0.93 970920 テキストスタックを使うか?
  4587.         #define TEXTSTACK_OFF        0
  4588.         #define TEXTSTACK_ON        1
  4589.         #define TEXTSTACK_ON_AT_VZ    2
  4590.     SIGNED_BYTE nDispFileHist;    //WCE1.01 980203 メニューヒストリ表示数(0..70)
  4591.     BBOOL fNoClmMove;            //WCE1.01 980312 ←→で段の移動をしない
  4592.     BYTE modeRe;                //WZ3.90H 980908 正規表現の動作モード
  4593.         #define MODERE_WZ        0
  4594.         #define MODERE_VWXW        1
  4595.         #define MODERE_VWXWEX    2
  4596.     BBOOL fDispPathFull;        //WZ3.90I 981103 ファイル名をフルパスで表示?
  4597.     BBOOL fClipboardNoSelect;    //WZ3.90I 981103 選択されてないときもコピー、カットする?
  4598.     BBOOL fHalfPage;            //WZ3.90I 981103 PAGEUP/PAGEDOWN半画面?
  4599.     BBOOL fSetLocateByMouseFocus; //WZ3.90I 981103 アクティブ時に、クリック位置に移動する
  4600.     BBOOL fOutlineSplitLeft;    //WZ3.90I 981103 アウトラインを左側に表示?
  4601.     BBOOL fDispCharcode;        //WZ3.90J 981107 文字コードの表示?
  4602. #if !WINDOWSCE
  4603.     //WZ3.90J 981108 バックアップ
  4604.     BBOOL fBackup;                // バックアップファイルの作成
  4605.     mchar szBackup[CCHWORD];    // バックアップ作成フォルダ
  4606. #endif
  4607.     BBOOL fCursorNoLf;            //WZ3.90J 981109 カーソル横移動で行をまたがらない
  4608.     BBOOL fTxkeyVertical;        //WZ3.90J 981109 縦書き時にtxkeyUp,Down,Left,Rightの縦横を入れ替え
  4609.     BBOOL modeMouseHide;        //WZ3.90J 981109 マウスカーソルを消すかどうか?
  4610.         #define MOUSEHIDE_CHAR    0    // 文字入力で消す
  4611.         #define MOUSEHIDE_NONE    1    // 消さない
  4612.         #define MOUSEHIDE_KEY    2    // キー入力で消す
  4613.     BBOOL modeMouseFace;        //WZ3.90J 981109 マウスカーソルの形状 1:arrow,0:Ibeam
  4614.     BYTE nSpaceTopH;            //WZ3.90J 981109 横書き時、上端を空けるドット数
  4615.     BYTE nSpaceTopV;            //WZ3.90J 981109 縦書き時、右端と左端を空けるドット数
  4616.     BBOOL fConfirmNewFile;        //WZ3.90J 981109 新規ファイルの確認
  4617.     //WZ3.90J 981110 スクロールの加速
  4618.     BYTE nKeyScrollAccStart;    // 加速開始行数
  4619.     BYTE nKeyScrollAcc;            // 加速中の一度にスクロールする行数
  4620.     BYTE nCursorScrollH;        // 左右のスクロールを何文字毎に行うか
  4621.                                 //WZ3.90J 981110 設定ファイルに保存するようにした
  4622.     //WZ3.90J 981110 自動スクロール
  4623.     BYTE iScrollSpeed;            // スムーススクロール速度 (0..9)
  4624.     BBOOL fVzEs;                // txJumpScreenTop,txJumpScreenEnd 2回でスムーススクロール
  4625.     WORD mbCheckFilesize;        //WZ3.90K 981112 これ以上のファイルを開くときは確認ダイアログを出す
  4626. #if !WINDOWSCE
  4627.     //WZ3.90O 981202 IME変換文字の色を指定できるようにした。テキストと背景色が同じなら規定の色を使う。
  4628.     COLORREF rgbImeText;        // IME変換文字のテキスト
  4629.     COLORREF rgbImeBack;        // IME変換文字の背景。
  4630.     COLORREF rgbImeHiText;        // 注目中のIME変換文字のテキスト
  4631.     COLORREF rgbImeHiBack;        // 注目中のIME変換文字の背景
  4632. #endif
  4633.     BBOOL fClipboardNoDD;        //WZ3.90O 981204 D&Dでカットアンドペーストしない?
  4634. #if !WINDOWSCE
  4635.     BBOOL fNoSaveWindowPos;        // ウィンドウ位置をセーブしない    //WZ4.00Ab 990203 new
  4636.     BBOOL fNoSaveEditContext;    // カーソル位置をセーブしない    //WZ4.00Ab 990203 new
  4637.     BBOOL fOutlineSplitExtend;    //WZ4.00Bj 990824 分割アウトラインを表示しても本文ウィンドウサイズが変化しない設定を追加
  4638. #endif
  4639.     BBOOL fOutlineNoButton;        //WZ4.00Bj 990824 アウトラインにボタンを表示するかどうか設定できるようにした。
  4640.     BBOOL fNoDispSmlower;        //WZ4.00Bl 990913 
  4641.     BBOOL fNoAutoSaveFD;        //WZ4.00Bl 990914 
  4642.     BBOOL fOutlineJumpLyTop;    //WZ4.00Bj 990824 アウトラインウィンドウで見出しの移動をしたときにtext->lyを画面上部に移動する?
  4643.     BBOOL fScrollBarProp;        //WZ4.00Bl 990920 プロポーショナルスクロールバー?
  4644.     BBOOL fOutlineTextfont;        //WZ4.00Bl 990924 テキストのフォントで表示?
  4645. BYTE configShareEnd;
  4646. };
  4647.  
  4648. #define SIZE_TXCONFIGEXT        (&text1->configExtEnd - &text1->configExtTop)
  4649. #define SIZE_TXCONFIGSHARE        (&text1->configShareEnd - &text1->configShareTop)
  4650. #define SIZE_CONFIGSHARE        (&sh->configEnd - &sh->configTop)
  4651. #define SIZE_PERMANENT            (&sh->permanentEnd - &sh->permanentTop)
  4652.  
  4653. IBUFF _ibuffparaPreColoring;    //WZ4.00Bl 990921 
  4654.  
  4655. //##STRBLK/ヒストリ
  4656.  
  4657. // 標準ヒストリ
  4658. typedef int HHIST;
  4659. #define HIST_NULL        0            // 内部ワーク用
  4660.                                     // WINDOWSCE:使用不可
  4661. #define HIST_FILE        ((HHIST)1)    // ファイル名
  4662. #define HIST_SEARCH        ((HHIST)2)    // 検索文字列
  4663. #define HIST_PATH        ((HHIST)3)    // パス文字列
  4664. #define HIST_STR        ((HHIST)4)    // 最近入力した文字列
  4665. #define HIST_COPY        ((HHIST)5)    // コピーした文字列
  4666. #define HIST_IME        ((HHIST)6)    // IMEに入力した文字列
  4667. #define HIST_DELSTR        ((HHIST)7)    // 削除した文字列
  4668. #define HIST_JUMP        ((HHIST)8)    // カーソル位置    //WZ3.90H 980928 new
  4669. #define MAXHIST                    9    // ハンドルの個数
  4670. #define DEFAULT_SIZEHIST    512        // デフォルト ヒストリサイズ
  4671. #if WINDOWSCE
  4672.     #define SIZEHIST_JUMP        1024
  4673.     #define SIZEHIST_UNDELETE    1024    //XZ0.20 990825 
  4674. #else
  4675.     #define SIZEHIST_JUMP        4096
  4676.     #define SIZEHIST_UNDELETE    8192    //XZ0.20 990825 
  4677. #endif
  4678.  
  4679. // share構造体に置くためだけに、データ構造を公開する。
  4680. // ユーザーは、メンバを参照してはいけない。
  4681. typedef struct tagSTRBLK {
  4682.     LPBYTE buff;
  4683.     LPBYTE ptail;
  4684.     WORD sizebuff;        // buffのサイズ
  4685.     WORD nstr;            // 文字列数
  4686.     WORD unit;            // 拡大単位
  4687.     FBOOL fShared;
  4688.     FBOOL fCustData;
  4689.     // WORD bit field
  4690.     WORD fSenseCase:1;
  4691.     WORD fstatic:1;        // for internal
  4692.     WORD fAlloc:1;        //2.90 buff is allced by strblk
  4693.     WORD fAllocEx:1;
  4694.     WORD fReverse:1;    // hist用にiを反転させる
  4695.     WORD reserved:11;
  4696.     // WORD bit field end
  4697.     LPBYTE pfound;
  4698. } STRBLK,*HSTRBLK;
  4699.  
  4700. HSTRBLK TXAPI_(409) sbNewStatic(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
  4701. HSTRBLK TXAPI_(410) sbNewStaticShare(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
  4702. HSTRBLK TXAPI_(411) sbNew(LPBYTE buff,WORD sizebuff);
  4703. HSTRBLK TXAPI_(412) sbNewAlloc(WORD sizebuff);
  4704. HSTRBLK TXAPI_(413) sbNewAllocEx(WORD sizebuff);
  4705. void TXAPI_(414) sbSetBuff(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
  4706. LPVOID TXAPI_(415) sbGetBuff(HSTRBLK sb);
  4707. BOOL TXAPI_(416) sbReverse(HSTRBLK sb);
  4708. void TXAPI_(417) sbSetSenseCase(HSTRBLK sb,BOOL fSet);
  4709. BOOL TXAPI_(418) sbGetSenseCase(HSTRBLK sb);
  4710. void TXAPI_(419) sbSetCustData(HSTRBLK sb,BOOL fSet);
  4711. BOOL TXAPI_(420) sbGetCustData(HSTRBLK sb);
  4712. void TXAPI_(421) sbSetReverse(HSTRBLK sb,BOOL fSet);
  4713. void TXAPI_(422) sbDelAll(HSTRBLK sb);
  4714. BOOL TXAPI_(423) sbObjectLoadMem(HSTRBLK sb,LPVOID p,int len);
  4715. int TXAPI_(424) sbObjectGetSize(HSTRBLK sb);
  4716. BOOL TXAPI_(425) sbObjectSave(HSTRBLK sb,HANDLE hf);
  4717. BOOL TXAPI_(426) sbObjectSaveMem(HSTRBLK sb,LPVOID p);
  4718. mchar* TXAPI_(427) sbAdd(HSTRBLK sb,mchar *szstr);
  4719. mchar* TXAPI_(248) sbAddW(HSTRBLK sb,wchar* szstr);
  4720. int TXAPI_(428) sbiPreSearch(HSTRBLK sb,mchar *szstr);
  4721. int TXAPI_(429) sbiSearch(HSTRBLK sb,mchar *szstr);
  4722. BOOL TXAPI_(430) sbSearch(HSTRBLK sb,mchar *szstr);
  4723. int TXAPI sbiSearchLen(HSTRBLK sb,mchar* szstr,int lch);
  4724. BOOL TXAPI_(431) sbDel(HSTRBLK sb,mchar *szstr);
  4725. mchar* TXAPI_(432) sbAddHist(HSTRBLK sb,mchar *szstr);
  4726. mchar* TXAPI_(433) sbInsert(HSTRBLK sb,int i,mchar* szstr);
  4727. mchar* TXAPI_(434) sbAddHistW(HSTRBLK sb,wchar* szstr);
  4728. mchar* TXAPI_(435) histAdd(HHIST hist,mchar* szstr);
  4729. mchar* TXAPI_(436) histAddW(HHIST hist,wchar* szstr);
  4730. int TXAPI_(437) sbGetCount(HSTRBLK sb);
  4731. int TXAPI_(438) sbReverseI(HSTRBLK sb,int i);
  4732. mchar* TXAPI_(439) sbRead(HSTRBLK sb,int istr);
  4733. #define sbReadHist(sb,i)    sbRead(sb,sbGetCount(sb) - (i) - 1)
  4734. mchar* TXAPI sbReadLast(HSTRBLK sb);
  4735. DWORD TXAPI_(440) sbReadCustdata(HSTRBLK sb,int istr);
  4736. BOOL TXAPI_(441) sbWriteCustdata(HSTRBLK sb,int istr,DWORD CustData);
  4737. BOOL TXAPI_(442) sbDelI(HSTRBLK sb,int i);
  4738. mchar* TXAPI_(443) sbRead2(HSTRBLK sb,int istr,WORD* lchstr);
  4739. int TXAPI_(444) sbiSearchPrev(HSTRBLK sb,mchar *szstr,int istr);
  4740. int TXAPI_(445) sbiSearchNext(HSTRBLK sb,mchar *szstr,int istr);
  4741. BOOL TXAPI_(446) sbDelete(HSTRBLK sb);
  4742. HHIST TXAPI_(447) sbToHist(HSTRBLK sb);
  4743. HSTRBLK TXAPI_(448) sbFromHist(HHIST hist);
  4744. HSTRBLK TXAPI_(449) sbSetup(HSTRBLK sb,mchar** tszItem,DWORD* tIdItem);
  4745. HSTRBLK TXAPI_(450) sbSetupInteger(HSTRBLK sb,int* tItem,int nItem);
  4746. int TXAPI_(519) ComboBox_SetStrblk(HWND hctrl,HSTRBLK sb);
  4747. int TXAPI_(520) ComboBox_SetStrblkHist(HWND hctrl,HSTRBLK sb);
  4748. int TXAPI_(521) ComboBox_SetHist(HWND hctrl,HHIST hist);
  4749. int TXAPI_(522) ComboBox_SetHistSearch(HWND hctrl);
  4750. int TXAPI_(523) ListBox_SetStrblk(HWND hctrl,HSTRBLK sb);
  4751. int TXAPI_(524) ListBox_SetStrblkFirstclm(HWND hctrl,HSTRBLK sb);
  4752. int TXAPI_(525) ListBox_SetStrblkHist(HWND hctrl,HSTRBLK sb);
  4753. int TXAPI_(526) ListBox_SetStrblkHistFirstclm(HWND hctrl,HSTRBLK sb);
  4754. void TXAPI sbReduce(HSTRBLK sb);
  4755. void stdlibInit(void);
  4756. HSTRBLK sbSetupDrive(void);
  4757. HSTRBLK sbSetupInttable(HSTRBLK sb,int* table);
  4758. HSTRBLK sbSetupLfHeight(HSTRBLK sb);
  4759. HSTRBLK sbSetupWeight(HSTRBLK sb);
  4760.  
  4761. //ユーザヒストリ
  4762. HSTRBLK TXAPI_(278) historyOpen(mchar* szName,int cbHistBuff);
  4763. void TXAPI_(279) historyClose(mchar* szName,HSTRBLK sb);
  4764. void historyDelete(HSTRBLK sb);
  4765.  
  4766. //##SHARE
  4767. // このメンバにはポインタは配置できない。
  4768. // ポインタの指すメモリがプロセス毎に異なるため。
  4769.  
  4770. #define MAXOPEN            100        // 最大プロセス数
  4771. #define MAXOPENAP        20        // 最大(Filer,Grep,...)数
  4772. typedef struct {
  4773.     HWND hwnd;                // hwndbase
  4774.     BYTE fCloseEvery:1;        // CloseEvery実行済み?    //PWZ2BETA0.3 980508 FBOOL->bitfield
  4775.     BYTE fMailEditor:1;        //PWZ2BETA0.3 980508 WZ MAIL EDITOR?
  4776.     BYTE fSearched:1;        //WZ4.00Bl 990916 SEARCH_ALLTEXT済?
  4777. } WZPROCESS;
  4778.  
  4779. //WZ4.00Ee 010412 プロファイルの保存形式を変更し、より沢山記憶できるようにした。旧版からは自動変換する。
  4780. #if !WINDOWSCE
  4781.     #define SIZE_PROFILE    49152    //WZ4.00Ee 010412 new
  4782. #else
  4783.     #define SIZE_PROFILE    16384    //WZ4.00Ee 010412 new
  4784. #endif
  4785. #define PROFILE_DEBUG            0
  4786. #if PROFILE_DEBUG
  4787.     #define SIZE_PROFILE    512
  4788. #endif
  4789. typedef struct {    //WZ4.00Ee 010412 new
  4790.     // window pos
  4791.     SIGNED_WORD window_left;
  4792.     SIGNED_WORD window_top;
  4793.     SIGNED_WORD window_right;
  4794.     SIGNED_WORD window_bottom;
  4795.     // current position
  4796.     NPARA npara;                    // 行番号
  4797.     WORD ich;                        // 段落先頭からのバイト数
  4798.     BYTE ly;                        // カーソルy座標
  4799.     IFILE address;                    // カーソル位置
  4800.     //
  4801.     WORD editmode:2;                // editmode
  4802.     WORD dispstylemode:2;            // 表示スタイル
  4803.     WORD fOutline:1;                // アウトラインウィンドウ
  4804.     WORD fMaximized:1;                //WZ4.00Ad 990211 最大化で閉じられた
  4805.     WORD freserved:10;
  4806.     IFILE mark[MAXMARK];            // マーク位置
  4807.     IFILE tAdrRefer[MAXREFERPOS];    //WCE0.92 970918 最近参照した位置
  4808.     BYTE iAdrRefer;                    // tAdrRefer参照ポインタ
  4809. //    mchar szlpstyle[CCHLPSTYLE];    //WCE1.01 980211 印刷スタイル名    //WZ4.00Ee 010412 廃止
  4810.     RECT rectTempWindow;            //WZ3.90H 980915 一時ウィンドウの位置
  4811.     WORD pvRate;                    //WZ3.90H 980921 印刷プレビューの倍率
  4812. //    mchar szcfg[CCHSTYLENAME];        //WZ3.90I 981028 設定名    //WZ4.00Ee 010412 廃止
  4813.     BYTE rateOutline;                //WZ4.00Bj 990824 アウトラインの画面比率
  4814.     IFILE adrLastEdit;                //WZ4.00Bj 990824 最後に編集した位置
  4815.     MESSAGEID midLpstyle;            //WZ4.00Ee 010412 使用する印刷スタイル
  4816.     MESSAGEID midConfig;            //WZ4.00Ee 010412 使用する文書の設定
  4817. } PROFILEDATA;
  4818.  
  4819. #if WINDOWSCE
  4820.     #define MAXPROFILE    20
  4821. #else
  4822.     // Win95では、速度より便利さを求める。沢山覚えてくれていたほうが便利。
  4823.     #define MAXPROFILE    100
  4824. #endif
  4825. typedef struct {
  4826.     WORD lchFilename;                // パス名の長さ
  4827.                                     // 0なら無効レコード
  4828.     wchar wszfilename[CCHPATHNAME];    // パス名
  4829.     // window pos
  4830.     SIGNED_WORD window_left;
  4831.     SIGNED_WORD window_top;
  4832.     SIGNED_WORD window_right;
  4833.     SIGNED_WORD window_bottom;
  4834.     // current position
  4835.     NPARA npara;                    // 行番号
  4836.     WORD ich;                        // 段落先頭からのバイト数
  4837.     BYTE ly;                        // カーソルy座標
  4838.     IFILE address;                    // カーソル位置
  4839.     //
  4840.     WORD editmode:2;                // editmode
  4841.     WORD dispstylemode:2;            // 表示スタイル
  4842.     WORD fOutline:1;                // アウトラインウィンドウ
  4843.     WORD fMaximized:1;                //WZ4.00Ad 990211 最大化で閉じられた
  4844.     WORD freserved:10;
  4845.     IFILE mark[MAXMARK];            // マーク位置
  4846.     IFILE tAdrRefer[MAXREFERPOS];    //WCE0.92 970918 最近参照した位置
  4847.     BYTE iAdrRefer;                    // tAdrRefer参照ポインタ
  4848.     mchar szlpstyle[CCHLPSTYLE];    //WCE1.01 980211 印刷スタイル名
  4849.     RECT rectTempWindow;            //WZ3.90H 980915 一時ウィンドウの位置
  4850.     WORD pvRate;                    //WZ3.90H 980921 印刷プレビューの倍率
  4851.     mchar szcfg[CCHSTYLENAME];        //WZ3.90I 981028 設定名
  4852.     BYTE rateOutline;                //WZ4.00Bj 990824 アウトラインの画面比率
  4853.     IFILE adrLastEdit;                //WZ4.00Bj 990824 最後に編集した位置
  4854. } PROFILE115;
  4855.  
  4856. #define MAX_KEYMACRO        5
  4857. #define SIZE_KEYMACROBUFF    1024
  4858. typedef struct {
  4859.     mchar szname[CCHNAME];            // 名前
  4860.     WORD len;                        // buff内のデータの長さ
  4861.     BYTE buff[SIZE_KEYMACROBUFF];    // buff
  4862. } KEYMACRO;
  4863.  
  4864. #define DIRECTORYATR_N    3
  4865. typedef struct {
  4866.     mchar cvszDirectory[CCHPATHNAME];    // パス列
  4867.     BYTE kc;                            // 漢字コード
  4868.     BYTE cr;                            // 改行コード
  4869. } DIRECTORYATR;
  4870.  
  4871. typedef struct tagSHARE {
  4872. // 基本情報
  4873.     int nOpen;                        // 起動中の表PWZ Editorウィンドウ数
  4874.                                     // PWZアプリケーション(Filer,Grep,etc)は除く
  4875.     WZPROCESS tWzprocess[MAXOPEN];    //1.99C 起動中の表PWZ Editorウィンドウのモード
  4876.                                     // 起動された順序で入っている
  4877.                                     // 有効な要素は、[0]から[nOpen-1]まで
  4878.                                     // WZアプリケーション(Filer,Grep,etc)は除く
  4879.     int nOpenAp;                    // 起動中のWZアプリケーション(Filer,Grep,etc)
  4880.                                     // の数
  4881.     HWND tOpenAp[MAXOPENAP];        // //WZ4.00Bl 990912 起動中のWZアプリケーションのhwnd
  4882.                                     // 有効な要素は、[0]から[nOpenAp-1]まで
  4883.     TX textConfig;                    // 設定データを保持するtext
  4884.                                     // shared text
  4885.     BYTE reservedSC[4];                // 4バイトは確保しておくこと!
  4886.     WORD sizehist[MAXHIST];            // ヒストリバッファのサイズを指定(デフォルト:512)
  4887.     STRBLK hist[MAXHIST];            // ヒストリ
  4888.                                     // 複数のインスタンスで共有するので、
  4889.                                     // ヒストリ用のHSTRBLKの実体は、shareで定義する。
  4890.                                     // shareで定義しないと、ヒストリ用のHSTRBLKは
  4891.                                     // インスタンス毎に持たれてしまい、異常動作する
  4892.     BYTE buffhist[9216+SIZEHIST_JUMP+SIZEHIST_UNDELETE];// データバッファ
  4893.     BYTE buffprofile[SIZE_PROFILE];    //WZ4.00Ee 010412 プロファイルバッファ
  4894.                                     // 最近アクセスされたデータ順
  4895.     UINT lenprofile;                //WZ4.00Ee 010412 プロファイルバッファに入っている有効データバイト数
  4896.                                     // *(WORD*)buffprofile[lenprofile] = 0になっている。
  4897.     int nProfile;                    // 現在のプロファイル数
  4898.     KEYMACRO tKeymacro[MAX_KEYMACRO];// キーボードマクロ
  4899. //##SHARE - 現在の状態
  4900.     FBOOL fMemoAdding;                // メモに追加中?
  4901.     HWND hwndMemo;                    // メモのhwndbase
  4902.     mchar szMemoAddCaption[CCHWORD];// 次にメモに追加するキャプション
  4903.                                     // NULLならデフォルト("クリップボード")
  4904.     HWND hwndFiler;                    // FILER
  4905.     HWND hwndGrep;                    // GREP
  4906.     HWND hwndMailer;                // MAIL
  4907.     HWND hwndTerm;                    // TREM
  4908.     HWND hwndIcon;                    // WZ Iconオープン中?
  4909.     HWND hwndHelp;                    // WZ Helpオープン中?
  4910.     FBOOL fMacroRec;                // KEYMACRO記録中
  4911.     FBOOL fMacroPlay;                // 再生中
  4912.     LPBYTE pMacroCur;                // 記録/再生ポインタ
  4913.     LPBYTE pMacroEnd;                // 記録/再生終了位置
  4914.     LPBYTE pMacroStr;                // 前回のコマンドがIDM_OVERWRITESTR,IDM_INSERTSTR
  4915.                                     // なら、その位置
  4916.     int fClip;                        // WZがクリップボードにペーストしたテキストデータ
  4917.                                     // の範囲選択モードを保持
  4918.     FBOOL fClipTxfEnable;            //WZ3.90I 981105 クリップボードにコピーしたデータにTXFタグが入っている可能性がある?
  4919.     FBOOL fStatprintfToMailer;        //PWZ2BETA0.3 980525 statprintfをhwndMailerに出力?
  4920.     #if !WINDOWSCE
  4921.     BYTE modeSplit;                    //WZ3.90H 980913 現在のウィンドウ分割
  4922.                                     // 画面分割モード('U'/'C'/'V'/'H'),初期値0
  4923.     #endif
  4924.     BYTE pagingmode;                // ページングモード('S','C','P',' ')
  4925.                                     //WZ3.90H 980927 ページングモードは以前textにあったが、全テキストで共有するため(VZではこうなっている)にSHAREに移した
  4926.     UINT idmRegisterShare;            //WZ3.90I 981102 for idmRegisterShareで登録したIDMは全WZで共通。
  4927.     FBOOL fDragDroping;                //WZ3.90I 981104 D&D中?
  4928.     int nDirAtr;                    //WZ3.90J 981110 DIRECTORYATRの数
  4929.     DIRECTORYATR tDirAtr[DIRECTORYATR_N];    //WZ3.90J 981110 フォルダ毎の漢字コード、改行コード指定。"folder.cfg"からロードするが、書き込みはしない。
  4930.     BYTE fSpeak:1;                //WZ3.90L 981117 音声化?
  4931.     BYTE fEndSessioned:1;        //WZ4.00Ac 990205 new
  4932.     BYTE fTxcCompileError:1;    //WZ4.00Ca 991204 最後のmacroGetTxpcode/macroExecでコンパイルエラーになったかどうか?
  4933.     BYTE fTxceventPrmsave:1;    //WZ4.00Db 000215 WM_TXCEVENT:TXCEVENT_PRMSAVE処理中?
  4934.     #if WINDOWSCE
  4935.     BYTE _fPspc:1;                //WZ4.00Ea 001126 PsPC/PocketPC?
  4936.     BYTE _fPocketpc:1;            //WZ4.00Ea 001126 PocketPC?
  4937.     #endif
  4938.     SEARCH_PACKET search;        //WZ4.00Aa 990108 現在の検索・置換文字列。高速オープン以外でも検索文字列を共有できるようにした。
  4939.     mchar szModule[CCHWORD];    //WZ4.00Db 000215 TXC内部用
  4940. // 現在のネットワークの状態
  4941.     BYTE env_network;            // ネットワーク?
  4942.     WORD fSpecUserName:1;        // ユーザ名が指定された?
  4943.     WORD fReservedNet:15;        //
  4944.     mchar szUserName[30];        // 現在のユーザ名
  4945.                                 // szUserName[0] != 0なら、ユーザ毎に設定保存されます。
  4946.                                 // 次のファイルがユーザ毎に、wzディレクトリの
  4947.                                 // ユーザ名サブディレクトリの下に作られます
  4948.                                 //  wz.key,wz.mnu,wz.bar
  4949.                                 //  wzcfg.cfg,wzprint.cfg
  4950.                                 // 以上のファイルがユーザ名サブディレクトリに存在しない時は
  4951.                                 // ルートのファイルがコピーされて使用されます。
  4952. //    ユーザ設定
  4953.     BYTE configTextShare[256];        // text->configShareの内容
  4954.                                     // ([0] == TRUEなら初期化済み)
  4955.     #if WZFUNC_TEXTCFGBIN
  4956.     BBOOL fConfigChanged;            //WZ3.90N 981201 設定が変更され、まだテキスト設定ファイルには保存されていない。WZFUNC_TEXTCFGBIN用
  4957. //    mchar szConfigChanged[CCHWORD];    //WZ3.90N 981202 fConfigChangedかつszConfigChangedがセットされている場合はszConfigChangedだけをテキスト設定ファイルに更新
  4958.     #endif
  4959.     #if !WINDOWSCE
  4960.     mchar szfilenamePrj[CCHPATHNAME];//WZ4.00Dd 000526 前回指定したプロジェクトファイル名
  4961.     #endif
  4962.     UINT serialMid;                    // Message-Id:生成用(GetCurrentTimeが重ならない様に)    //WZ4.00Ee 010409 new
  4963. //##SHARE - 共通設定(設定ファイルに保存される)(順序変更不可。追加のみ可)
  4964. //    save to cfg file
  4965.     int configGap;                    // これ以前のメンバの変更でWORD,DWORDメンバの
  4966.                                     // アライメントが変わることがあるのを防止
  4967. BYTE configTop;        // 0:未初期化,1:初期化済み
  4968.     mchar szKinsokuTop[300];        // 行頭禁則文字(行の先頭にきてはいけない文字)
  4969.     mchar szKinsokuEnd[200];        // 行末禁則文字(行の末尾にきてはいけない文字)
  4970.     mchar szKinsokuKuten[200];        // 句読点
  4971.     BBOOL fSearchGetText;            // カーソル位置の文字列を取り込んで、検索ダイアログを開く
  4972.     BYTE modeFileOpen;                // ファイルオープンモード
  4973.         #define FILEOPEN_OPEN        0    // プロセス起動オープン
  4974.         #define FILEOPEN_OPENHIGH    1    // 高速オープン
  4975.         #define FILEOPEN_CLOSEOPEN    2    // 閉じてオープン
  4976.         #define FILEOPEN_CLOSEOPENFORCE    99    // 閉じてオープンで保存しますか?を表示しない。//WZ3.90L 981125 
  4977.     BBOOL fEnglishMenubar;            // 英語メニューバー
  4978.     SIGNED_WORD wtmEhWait;            // キャプチャ開始時のウェイト数
  4979.     mchar szQuote[CCHNAME];            // 引用符
  4980.     BBOOL fFilelistCurSelect;        // ファイルリストのカーソル位置を選択表示
  4981.                                     //WZ4.00Cb 000116 廃止
  4982.     mchar cszExtBinary[128];        // バイナリファイルの拡張子。';'で区切って複数指定可。
  4983.     BBOOL modeUseMyKey;                // キー定義を"My Key"にする
  4984.         #define MYKEY_ADD    1    // "My Key"を追加
  4985.         #define MYKEY_SET    2    // "My Key"に置き換え
  4986.     BBOOL fWzStay;                    // WZを常駐?
  4987.     BBOOL modeFileShare;            // 排他制御
  4988.         #define FILESHARE_DENY_WRITE    1    // 書き込み禁止
  4989.         #define FILESHARE_EXCLUSIVE        2    // 読み書き禁止
  4990.                                     // 裏テキストは排他制御しない。
  4991.     mchar cszPathText[300];            // 文書パス
  4992.                                     // ';'で区切って複数指定できる
  4993.     SIGNED_BYTE lfHeight;            // (共通)フォントサイズ
  4994.     mchar lfFaceName[LF_FACESIZE];    // (共通)フォント名の指定
  4995.     BBOOL lfBold;                    // (共通)太字で表示
  4996.     BBOOL fComboboxEx;                //WCE0.91 970912 コンボボックスを拡張する
  4997.                                     // ↑、↓の絞り込み機能を追加する
  4998.     mchar szFolderDefault[100];        // 標準フォルダ
  4999.     BBOOL fKcAuto;                    //WCE0.93 970919 漢字コードの自動判別?
  5000.     BYTE iMouseScrollSpeed;            //WCE1.01 980209 マウスドラッグスクロール速度 (0..9)
  5001.     BBOOL fNoCursorBlink;            //WZ3.90H 980913 カーソルを点滅しない? !WINDOWSCEのみ
  5002.     BBOOL fWsWideAtSplit;            //WZ3.90I 981103 上下分割時に、ツールバーを消す? !WINDOWSCEのみ
  5003.     BBOOL fNoUpDownAtClipMouse;        //WZ3.90I 981103 方向キーでWindows範囲選択を抜けるときに範囲の先頭/末尾に移動しない。
  5004.     mchar cszExtText[200];            //WZ3.90I 981103 標準の拡張子。';'で区切って複数指定可。
  5005.     BBOOL fCheckFiletimeOnSave;        //WZ3.90J 981109 保存時にファイルの日付を調べる
  5006.     BBOOL fCheckFiletimeOnActive;    //WZ3.90J 981109 アクティブ時にファイルの日付を調べる
  5007.     BBOOL fCrAuto;                    //WZ3.90J 981109 改行コードの自動判別?
  5008.     BYTE modeOfn;                    //WZ3.90J 981111 オープンダイアログの形状
  5009.         #define OFN_STD            0
  5010.         #define OFN_WIN3        1
  5011.         #define OFN_WZ            2
  5012.         #define OFN_STDSIMPLE    3    // Win標準    //WZ4.00Ab 990203 new
  5013.         #define OFN_VZ            4
  5014.     mchar cszOfnFilter[CCHPATHNAME];//WZ3.90J 981112 GetOpenFileName szFilter
  5015.                                     // 例:"*.c;*.h,*.txt テキストファイル:*.txt"
  5016.     BBOOL fNoIntelliMouse;            //WZ3.90P 981205 WZのインテリマウス機能を使わない
  5017. #if UNIX
  5018.     BYTE modeImShiftSpace;            //WZ4.00Bg 990718 XZのShift+Spaceの処理を選択できるようにした。
  5019.     BBOOL fImSwitchByAltZenhan;        //WZ4.00Bg 990719 Alt+半角/全角にIMのon/offを割り当てるか設定できるようにした。
  5020.     BBOOL fMouseMoveXz;                //WZ4.00Bg 990718 XZがマウスカーソルを移動するかどうかを設定できるようにした。
  5021. #endif
  5022.     BBOOL fFileopenFocusList;        //WZ4.00Bj 990826 PWZファイルオープンダイアログで初期フォーカスを一覧に設定?
  5023.     BBOOL fVzKey98;                    //WZ4.00Bl 990904 VZ(98)準拠キー定義を内部で持つようにした。
  5024.     BYTE nFunctionKey;                //WZ4.00Bl 990909 ファンクションキーの個数
  5025.     mchar szArticle[100];            //WZ4.00Bl 990911 箇条書き文字。空なら標準のものを使用。
  5026.     BBOOL fProfileNewtext;            //WZ4.00Bl 990912 新規ウィンドウの位置を保存?
  5027. #if !WINDOWSCE
  5028.     BBOOL fToolbarFlat;                //WZ4.00Bl 990913 
  5029. #endif
  5030.     USERFONTSET tUserfontset[USERFONTSET_N];    //WZ4.00Bl 990920 ユーザフォントセット定義
  5031.     BYTE nFunctionKeySet;            //WZ4.00Bn 991004 ファンクションキーをn個ずつ表示
  5032.     BBOOL fNoSaveConfigAsText;        //WZ4.00Bn 991006 終了時に設定をテキストで出力するのをやめる?
  5033.     SIGNED_BYTE ofn_lfHeight;            // フォントサイズ    //WZ4.00Ca 000103 for PWZ-ofn
  5034.     mchar ofn_lfFaceName[LF_FACESIZE];    // フォント名の指定    //WZ4.00Ca 000103 for PWZ-ofn
  5035.     BBOOL fUndoBackSave;            //WZ4.00Cb 000117 アンドゥで上書き保存前の状態までさかのぼれる?
  5036. #if UNIX
  5037.     mchar sys_lfFaceName[LF_FACESIZE];    // システムフォント名の指定
  5038. #endif
  5039. #if WINDOWSMT
  5040.     BBOOL fLpCalcNpageAll;            //WZ4.00Dd 000601 全ページ数を計算して印刷する?    //WZ4.00Ec 010201 廃止
  5041. #endif
  5042.     BBOOL fExt;                        //WZ4.00Dd 000611 試供機能を使用する?
  5043.     mchar cszKanjiFont[200];        //WZ4.00Eb 010101 フォント名にかな/漢字が含まれていなくても、漢字とみなすフォントを;で区切って指定。
  5044. BYTE configEnd;
  5045. //##SHARE - permanent変数(順序変更不可。追加のみ可)
  5046. //    save to hist/profile file
  5047.     int permanentGap;                // これ以前のメンバの変更でWORD,DWORDメンバの
  5048.                                     // アライメントが変わることがあるのを防止
  5049. BYTE permanentTop;
  5050.     BBOOL fFilePreview;                // ファイルプレビュー?
  5051.     CHARCONVERT charconvert;        // 最後に実行した文字の変換内容を記憶
  5052.     NPARA nparaTemplateTarget;        // 慣用句の挿入:前回挿入した位置を記憶
  5053.     BBOOL reserved_1;    //PWZ2BETA0.4 980610 廃止 memo_modeDispDate
  5054.     NPARA reserved_2;    //PWZ2BETA0.4 980610 廃止 memo_nparaTarget
  5055.     // grep
  5056.     BBOOL grep_fSearchSubFolder;
  5057.     BBOOL grep_fNoSearchWindows;
  5058.     BBOOL grep_fNoSearchBinaryFiletype;
  5059.     SEARCHMODE grep_searchmode;
  5060.     BYTE grep_modeDispFind;
  5061.     BBOOL grep_fPreview;
  5062.     // filer
  5063.     BBOOL filer_fDoubleWindow;
  5064.     BBOOL filer_fPreview;
  5065.     mchar filer_szPath1[CCHPATHNAME];
  5066.     mchar filer_szPath2[CCHPATHNAME];
  5067.     // edit
  5068.     BYTE edit_iInsertBrace;            // 前回挿入した括弧番号
  5069.     //
  5070.     BBOOL filer_fDispDatesize;
  5071.     BYTE reserved_3;    //PWZ2BETA0.4 980610 廃止 memo_lcxMemolist
  5072.     BYTE reserved_4;    //PWZ2BETA0.4 980610 廃止 memo_lcxMemolistNarrow
  5073.     BYTE filelist_modeSort;            // 
  5074.     BBOOL filer_fEscClose;            // {Esc}で直ぐ閉じる
  5075.     BBOOL filer_fOpenWin;            // {Enter}で関連アプリで起動
  5076.     BYTE edit_iInsertDate;            //WCE0.91 970911 前回挿入した日付記号
  5077.     SIGNED_BYTE filer_lfHeight;            // フォントサイズ
  5078.     mchar filer_lfFaceName[LF_FACESIZE];// フォント名の指定
  5079.     BBOOL filer_lfBold;                    // 太字で表示
  5080.     //WZ3.90G 980905 ウィンドウ位置の保存
  5081.     RECT filer_rect;
  5082.     RECT grep_rect;
  5083.     RECT memo_rect;
  5084.     RECT help_rect;
  5085.     BBOOL help_fContent;
  5086.     BYTE filelist_lfHeight;                //WZ3.90J 981111 
  5087.     BBOOL filelist_fSetWidthByWindow;    //WZ3.90J 981111 
  5088.     BYTE reserved_5;
  5089.     BYTE help_lfHeight;                    //WZ3.90J 981112 
  5090.     BYTE filer_ratePreview;                //WZ3.90L 981123 
  5091.     BYTE grep_ratePreview;                //WZ3.90L 981123 
  5092.     WORD filelist_cyPreviewWindow;        //WZ3.90J 981111 BYTE->WORD
  5093.     BBOOL lp_fNoConfirmProperty;        //WZ3.90P 981206 
  5094.     BBOOL config_SelDispAll;            //XZ0.20 990704 
  5095.     BYTE help_rateOutline;                //WZ4.00Bj 990824 
  5096.     BYTE memo_fWide;                    //WZ4.00Eg 010507 「表示|メモテキストを広く」の状態を保存するようにした。
  5097.     BYTE reservedPermanent[906];
  5098. BYTE permanentEnd;
  5099. } SHARE;
  5100.  
  5101. //##グローバル変数
  5102.  
  5103. #if __TXC__
  5104. extern HINSTANCE _hinstance;
  5105. //WZ4.00Aa 990108 TX-CからSHARE(sh)にアクセスできるようにした。
  5106. SHARE* TXAPI_(898) _shGet(void);
  5107. #define sh    (_shGet())
  5108. #else
  5109. extern SHARE* sh;
  5110. extern HINSTANCE _hinstance;
  5111. extern TX* text1;    // text1はいつも必ず存在します。
  5112.                     // ただしtxOpenTextされている状態とは限りません。
  5113.                     // hwndbase,hwndtextが存在するとも限りません。
  5114.                     // text1への参照はやむを得ない場合を除いてしないでください。
  5115.                     // textfは廃止されました。
  5116. extern wchar _wszfilenameExe[CCHPATHNAME];    // WZEDITOR.EXEのフルパス名
  5117. extern mchar _szexedir[CCHPATHNAME];        //WZ3.90I 981027 text->szexedirの実体
  5118. extern mchar _szuiwz[];                        //WZ3.90J 981110 UI定義ファイルの名前
  5119. #if !UNIX
  5120. extern MSG _msg;
  5121. #endif
  5122. extern BYTE _nOpenAp;    // このプロセスで起動中のPWZアプリケーション
  5123. extern struct tagDIALOG * _topModeless;    // モードレスダイアログリスト
  5124. extern BBOOL _fTimeLimit;
  5125. extern mchar _szSearchHeadline[];
  5126. extern BYTE _cyCommandBar;
  5127. #if UNIX
  5128. #define szMsGossic    (sh->sys_lfFaceName)
  5129. #define szMsPGossic    (sh->sys_lfFaceName)
  5130. #define szMsMintyo    (sh->sys_lfFaceName)
  5131. #else
  5132. extern mchar szMsGossic[];
  5133. extern mchar szMsPGossic[];
  5134. extern mchar szMsMintyo[];
  5135. #endif
  5136. extern mchar _szPasswordHead[];
  5137. extern mchar _szComputerName[30];    // このコンピュータ名。無効なときは{0}    //WZ4.00Bp 991014 new
  5138. extern BBOOL _foverwriting;
  5139. extern BBOOL _modeProcess;    // このプロセスのモード(0:通常)    //WZ4.00Bo 991011 new
  5140.     #define PROCESS_MAIL    1
  5141. #endif    // __TXC__
  5142.  
  5143. //{###text API
  5144.  
  5145. //##基本編集
  5146.  
  5147. IBUFF TXAPI_(1) TXHIGH txInsert(TX* text,mchar *str);
  5148. int TXAPI_(179) txInsertChar(tx *text,TXCHAR code);
  5149. void txInsertNchar(TX* text,int ch,int n);
  5150. int TXAPI_(180) txCurInsertChar(TX* text,TXCHAR code);
  5151. int TXAPI_(181) txInsertReturn(TX* text);
  5152. int TXAPI_(923) txInsertAtKeisen(TX* text,mchar* szstr);
  5153. BOOL TXAPI_(182) TXAPIBASE txCurInsertReturn(TX* text);
  5154. BOOL TXAPI_(911) TXHIGH txCurInsertTextArea(TX* text,TX* textInsert,IFILE adrTop,IFILE adrEnd);
  5155. BOOL TXAPI TXHIGH txInsertTextArea(TX* text,TX* textInsert,IFILE adrTop,IFILE adrEnd);
  5156. int TXAPI_(972) txInsertWithReturn(TX* text,mchar* sz);
  5157. int TXAPI_(973) txInsertWithSpace(TX* text,mchar* sz);
  5158. int TXAPI_(767) TXAPIBASE txInsertf(TX* text,mchar* _format,...);
  5159. int TXAPI_(206) TXHIGH txInsertW(TX* text,wchar* sz);
  5160. void TXAPI_(207) txInsertNspace(TX* text,int nspace,int modeSpace);
  5161.     #define SPACE_SPACE        0    // 半角スペースを使う
  5162.     #define SPACE_JSPACE    1    // できるだけ全角空白で挿入、残りは半角スペースで挿入
  5163.     #define SPACE_TAB        2    // できるだけTabで挿入、残りは半角スペースで挿入
  5164. BOOL TXAPI_(250) txInsertText(TX* text,TX* textInsert);
  5165. BOOL TXHIGH txCurInsertText(TX* text,TX* textInsert);
  5166. BOOL TXHIGH txInsertTextCur(TX* text,TX* textInsert);
  5167. BOOL TXAPI_(251) txInsertTextSelect(TX* text,TX* textInsert);
  5168. BOOL txCurInsertTextSelect(TX* text,TX* textInsert);
  5169. IBUFF TXAPI_(166) TXHIGH txCurInsertBuff(TX* text,mchar *str,IBUFF len);
  5170.     #define txCurInsert(text,sz)    txCurInsertBuff(text,sz,strlen(sz))
  5171. BOOL TXAPI_(167) TXHIGH txCurInsertMemorySpace(TX* text,IMEM len);
  5172. IBUFF TXAPI_(168) TXHIGH txInsertBuff(TX* text,mchar *str,IBUFF len);
  5173. BOOL txInsertHfile(TX* text,HANDLE hfSrc,IFILE size);
  5174. BOOL txCurInsertHfile(TX* text,HANDLE hfSrc,IFILE size);
  5175. //
  5176. IBUFF TXAPI_(172) TXHIGH txDeleteBytes(TX* text,IBUFF len);
  5177. IBUFF TXAPI_(8) txDeleteChar(TX* text);
  5178. IBUFF TXAPI_(9) txDeletePrev(TX* text);
  5179. int TXAPI_(223) txDeletePrevWord(TX* text);
  5180. int TXAPI_(201) txDeleteWord(TX* text);
  5181. int TXAPI_(202) txDeleteWordMi(TX* text);
  5182. void TXAPI_(236) txDeleteText(tx *text);
  5183. int TXAPI_(1137) TXHIGH txDeleteParaPrim(TX* text);    //WZ4.00Ec 010207 TXAPI化
  5184. IBUFF DeleteTailReturn(mchar* buff,IBUFF len);
  5185. //
  5186. typedef struct {
  5187.     BOOL f;
  5188.     BOOL fSemiViewMode;
  5189.     BOOL fReadMode;
  5190.     BOOL fEditable;
  5191. } EDITABLE_CONTEXT;    //WZ4.00Bj 990825 new
  5192. BOOL txEnterEditable(TX* text,EDITABLE_CONTEXT* context);    //WZ4.00Bj 990825 new
  5193. void txExitEditable(TX* text,EDITABLE_CONTEXT* context);    //WZ4.00Bj 990825 new
  5194. //
  5195. BOOL txBuffExpand(TX* text,IBUFF size);
  5196. IBUFF TXHIGH InsertBytes(TX* text,mchar* str,IBUFF len,int nLf,BOOL fMove);
  5197. void FlushAddressAtInsert(TX *text,IFILE len);
  5198.  
  5199. //##一般編集
  5200.  
  5201. int TXAPI_(203) TXHIGH txDeletePara(TX* text);
  5202. int TXAPI_(204) txDeleteParaEnd(TX* text);
  5203. int TXAPI_(205) txDeleteParaTop(TX* text);
  5204. int TXAPI_(817) txDeleteParaline(TX* text);
  5205. int TXAPI_(818) txDeleteParalineEnd(TX* text);
  5206. int TXAPI_(819) txDeleteParalineTop(TX* text);
  5207. BOOL TXAPI_(899) txDeleteLine(TX* text);    //WZ4.00Aa 990109 
  5208. //
  5209. int TXAPI_(219) txInsertPara(tx *text);
  5210. int TXAPI_(225) txInsertCharModal(tx *text,TXCHAR code);
  5211. int TXAPI txInsertAutoIndent(TX* text,int modeAutoIndent);
  5212. BOOL TXAPI_(273) txInsertFileW(TX* text,wchar* wszfilename);
  5213. BOOL TXAPI_(804) txInsertFile(TX* text,mchar* szfilename);
  5214. int TXAPI_(291) TXHIGH_THROUGH txInsertSpaceFreeCursor(TX* text);
  5215. int TXAPI_(224) txWriteChar(tx *text,TXCHAR code);
  5216. int TXAPI_(287) txWriteReturn(TX* text);
  5217. int TXAPI_(288) txWriteTab(TX* text);
  5218. int TXAPI_(226) txOverWrite(TX* text,mchar *szstr);
  5219. int TXAPI_(227) txOverWriteChar(TX* text,WORD code);
  5220. int TXAPI_(228) txOverWriteBuff(TX* text,mchar *szstr,IBUFF lch);
  5221. BOOL TXAPI_(229) txDeleteOverWriteChar(tx *text,TXCHAR code);
  5222. void TXAPI_(230) txSwitchInsert(tx *text);
  5223. BOOL TXAPI_(272) txuiInsertFile(TX* text);
  5224.  
  5225. #if !__TXC__
  5226. void txSplitPara(TX* text);
  5227. BOOL txDeleteClipMouse(TX* text,int idm);
  5228. #endif // !__TXC__
  5229.  
  5230. //##移動/基本ジャンプ
  5231.  
  5232. IBUFF TXAPI_(133) TXHIGH txRightBytes(TX* text,IBUFF lenMove);
  5233. int TXAPI_(151) TXHIGH txRight(TX* text);
  5234. int TXAPI_(197) txRightWordMi(TX* text);
  5235. int TXAPI_(198) txRightWord(TX* text);
  5236. IBUFF TXAPI_(132) TXHIGH txLeftBytes(TX* text,IBUFF lenMove);
  5237. int TXAPI_(152) TXHIGH txLeft(TX* text);
  5238. int TXAPI_(187) txLeftWord(TX* text);
  5239. int TXAPI_(188) txLeftWordMi(TX* text);
  5240. //
  5241. int TXAPI_(143) txDown(TX* text);
  5242. int TXAPI_(144) txDownN(TX* text,int n);
  5243. int TXAPI_(145) txNextRoll(TX* text);
  5244. int TXAPI_(146) txNextRollN(TX* text,int n);
  5245. int TXAPI_(147) txUp(TX* text);
  5246. int TXAPI_(148) txUpN(TX* text,int n);
  5247. int TXAPI_(149) txPrevRoll(TX* text);
  5248. int TXAPI_(150) txPrevRollN(TX* text,int n);
  5249. //
  5250. BOOL TXAPI_(134) TXHIGH txJumpAddress(TX* text,IFILE address);
  5251. BOOL TXAPI_(135) TXHIGH txJumpAddressBinary(TX* text,IFILE address);
  5252. BOOL txJumpAddressNear(TX* text,IFILE address);
  5253. BOOL txJumpCharTop(TX* text);
  5254. void TXAPI_(136) txJumpAddressAddLy(TX* text,IFILE address);
  5255. BOOL TXAPI_(173) TXHIGH txJumpFileTop(TX* text);
  5256. BOOL TXAPI_(183) TXHIGH txJumpFileEnd(TX* text);
  5257. BOOL TXAPI_(174) txJumpFileTopLine(TX* text);
  5258. BOOL TXAPI_(184) txJumpFileEndLine(TX* text);
  5259. //
  5260. int TXAPI_(2) txJumpLineTop(TX* text);
  5261. int TXAPI_(3) txJumpLineEnd(TX* text);
  5262. int TXAPI_(178) txJumpLineTail(TX* text);
  5263. int TXAPI_(193) TXHIGH txJumpParaTop(TX* text);
  5264. BOOL TXAPI_(194) TXHIGH txJumpParaEnd(TX* text);
  5265. int TXAPI_(189) txJumpWordTop(TX* text);
  5266. int TXAPI_(190) txJumpWordEnd(TX* text);
  5267. int TXAPI_(191) txJumpWordTopMi(TX* text);
  5268. int TXAPI_(192) txJumpWordEndMi(TX* text);
  5269. int TXAPI_(375) txPrevLineN(TX* text,int n);
  5270. int TXAPI_(376) txNextLineN(TX* text,int n);
  5271. //
  5272. int TXAPI_(235) TXAPIBASE txJumpNpara(TX* text,NPARA npara);
  5273. NPARA txPrevParaN(TX* text,NPARA y);
  5274. NPARA txNextParaN(TX* text,NPARA y);
  5275. BOOL TXAPI_(195) TXHIGH txNextPara(TX* text);
  5276. BOOL TXAPI_(196) TXHIGH txPrevPara(TX* text);
  5277. //
  5278. int TXAPI_(215) txPrevPage(tx *text);
  5279. int TXAPI_(1088) txPrevPage1(tx *text);
  5280. int TXAPI_(216) txPrevHalfPage(tx *text);
  5281. int TXAPI_(217) txNextPage(tx *text);
  5282. int TXAPI_(1089) txNextPage1(tx *text);
  5283. int TXAPI_(218) txNextHalfPage(tx *text);
  5284. //
  5285. int TXAPI_(394) txJumpLx(TX* text,int lx);
  5286. BOOL TXHIGH_THROUGH txJumpXPrim(TX* text,int x);
  5287. BOOL TXAPI_(399) txDownBuff(TX* text);
  5288. BOOL TXAPI_(400) txUpBuff(TX* text);
  5289.  
  5290. #if !__TXC__
  5291. int JumpLineEnd(TX* text);    //WZ4.00Ca 991201 JumpLineEndは、txJumpLineEndの省略形とぶつかるのでTXCでは定義しないようにした。
  5292. #endif
  5293.  
  5294. //##検索/ジャンプ
  5295.  
  5296. int TXAPI_(169) TXHIGH txSearchEx(TX* text,mchar* szfind,DWORD searchmode);
  5297. int TXAPI_(824) txReplaceEx(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
  5298. BOOL TXAPI_(395) txSearchContinue(TX* text);
  5299. BOOL TXAPI_(396) txSearchContinuePrev(TX* text);
  5300. BOOL TXAPI_(397) txSearchContinueModal(TX* text);
  5301. int TXAPI_(633) txSearchCmd(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
  5302. void TXAPI_(596) txSetSearchContinue(TX* text,mchar* szFind,SEARCHMODE searchmode);
  5303. int TXAPI_(249) txSearchNextPrim(TX* text,mchar *sFind,DWORD searchmode,int lchFind);
  5304. #if !__TXC__
  5305. BOOL txSearchTabbeam(TX* text,SEARCHMODE searchmode);
  5306. void txSearchAlltextInit(TX* text,SEARCHMODE searchmode);
  5307. BOOL txSearchAlltextGetFirst(TX* text);
  5308. void txSearchAlltextNext(TX* text,DWORD searchmode,BOOL fReplace);
  5309. BOOL txuiSearchGet(TX* text,SEARCH_PACKET* search);
  5310. BOOL txuiSearchList(TX* text,SEARCH_PACKET* search);
  5311. BOOL txuiSearchlist(TX* text,SEARCH_PACKET* search);
  5312. int _SearchNext(TX* text,mchar *szFind,DWORD searchmode,int lchFind);
  5313. //
  5314. void searchoptFromSearchmode(SEARCHOPT* opt,SEARCHMODE searchmode);
  5315. void searchoptSetupMode(SEARCHOPT* opt);
  5316. SEARCHMODE searchoptToSearchmode(SEARCHOPT* opt);
  5317. void wndSetEnableSearchOption(HWND hwnd);
  5318. mchar* GetFind(void);
  5319. void SetFind(mchar* szfind);
  5320. void txInitSearchContinueCB(TX* text);
  5321. #endif    // !__TXC__
  5322. //インクリメンタルサーチ
  5323. #if !__TXC__
  5324. void txIsearchQuitEm(TX* text);
  5325. void txIsearchStatprintf(TX* text,BOOL find,SEARCHMODE searchmode);
  5326. BOOL txIsearchIsContinueIdm(TX* text,int idm);
  5327. void txIsearchNext(TX* text,SEARCHMODE searchmode);
  5328. BOOL txIsearchQuit(TX* text);
  5329. #endif
  5330. //jump
  5331. int TXAPI_(289) txJumpPara(tx *text,NLINE line);
  5332. int TXAPI_(290) txJumpLine(TX* text,NLINE line);
  5333. int TXAPI_(292) txJumpX(TX* text,int x);
  5334. BOOL TXAPI_(294) txJumpLy(TX* text,int y);
  5335. IFILE TXAPI_(295) TXHIGH txGetParaIch(TX* text);
  5336. BOOL TXAPI_(296) TXHIGH txJumpParaIch(tx* text,IFILE lch);
  5337. BOOL TXAPI TXHIGH txJumpParaIchEx(TX* text,IFILE ich);
  5338. BOOL TXAPI_(341) txJumpPrevEditPara(TX* text);
  5339. BOOL TXAPI_(342) txJumpNextEditPara(TX* text);
  5340. BOOL TXAPI_(318) txMarkN(TX* text,int n);
  5341. BOOL TXAPI_(1081) txMarkEx(TX* text,int n,IFILE adr);
  5342. BOOL TXAPI_(319) txJumpMarkN(TX* text,int n);
  5343. int TXAPI_(324) txJumpBrace(TX* text);
  5344. BOOL TXAPI_(326) txuiMark(TX* text);
  5345. BOOL TXAPI_(327) txJumpTagEx(TX* text);
  5346. BOOL TXAPI_(402) txuiRefer(TX* text);
  5347. void TXAPI_(366) txMarkCur(TX* text);
  5348. void TXAPI_(367) txJumpMarkCur(tx *text);
  5349. void TXAPI_(368) txMarkNow(TX* text);
  5350. void TXAPI_(369) txMarkNowAddress(TX* text,IFILE adr);
  5351. void TXAPI_(370) txJumpMarkNow(TX* text);
  5352. IFILE TXAPI_(371) txEndMarkNow(TX* text);
  5353. #if !__TXC__
  5354. void jumphistAdd(TX* text);
  5355. #if !UNIX    // 何故かconflicting typesになる。
  5356. void histjumpstrAnalyze(mchar* sz,struct tagJH_ITEM* item);
  5357. #endif
  5358. BOOL txLinkhistJumpPrevGetAble(TX* text);
  5359. BOOL txLinkhistJumpNextGetAble(TX* text);
  5360. BOOL txLinkhistJumpPrev(TX* text);
  5361. BOOL txLinkhistJumpNext(TX* text);
  5362. BOOL txJumpTagPrim(TX* text,int mode);
  5363. #endif // !__TXC__
  5364. // re
  5365. LPVOID TXAPI_(820) reSearchMem(LPVOID pMem,DWORD len,mchar* szFind,SEARCHMODE searchmode,SEARCHRE searchre,DWORD* pLenMatch);
  5366. mchar* TXAPI_(821) re(mchar* sztext,mchar* szfind);
  5367. mchar* TXAPI_(822) reSearch(mchar* sztext,mchar* szfind,SEARCHMODE searchmode);
  5368. mchar* TXAPI_(823) reSearchEx(mchar* sztext,mchar* szfind,SEARCHMODE searchmode,UINT* pLenMatch);    //WZ4.00Bj 990830 プロトタイプを修正
  5369. mchar* TXAPI_(878) regular(TXSTR sztext,mchar* szfind,mchar* szreplace,SEARCHMODE searchmode);
  5370. mchar* TXAPI_(879) regularStr(mchar* sztext,UINT cch,mchar* szfind,mchar* szreplace,SEARCHMODE searchmode);
  5371.     #define ITAG_TAIL    0x00010001    // 最後のタグ
  5372. BOOL TXAPI_(975) retagGetEx(int iTag,mchar* szbuff,int cch);
  5373. int TXAPI_(976) retagGetLch(int iTag);
  5374. void TXAPI_(1090) searchoptSearchExec(SEARCHOPT* opt);
  5375. #if !__TXC__
  5376. mchar* TXAPI retagGetP(int iTag);
  5377. mchar* TXAPI retagGetTop(int iTag);
  5378. void reFreeContext(struct tagRE_CONTEXT* context);
  5379. struct tagRE_CONTEXT* reAllocContext(mchar* szFind,SEARCHMODE searchmode,SEARCHRE searchre);
  5380. void reSetContext(struct tagRE_CONTEXT* context);
  5381. IBUFF memGetCharSize(mchar* p,mchar* pEnd,SEARCHRE searchre);
  5382. mchar* memGetPrevChar(mchar* p,mchar* pTop,mchar* pEnd,SEARCHRE searchre);
  5383. #endif // !__TXC__
  5384. //
  5385.  
  5386. //##情報取得
  5387.  
  5388. #if __TXC__
  5389. int TXAPI_(782) txGetWord(TX* text,TXSTR dst);
  5390. int TXAPI_(826) txGetWordWhole(TX* text,TXSTR dst);
  5391. int TXAPI_(827) txGetWordAfter(TX* text,TXSTR dst);
  5392. int TXAPI_(783) txGetPara(TX* text,TXSTR dst);
  5393. int TXAPI_(784) txGetParaRear(TX* text,TXSTR dst);
  5394. int TXAPI_(895) txGetLine(TX* text,TXSTR dst);    //WZ4.00A 981229 
  5395. int TXAPI_(896) txGetLineRear(TX* text,TXSTR dst);    //WZ4.00A 981229 
  5396. #endif
  5397. //
  5398. IFILE TXAPI_(156) txGetParaTop(tx *text);
  5399. IFILE TXAPI_(362) TXHIGH txGetParaEnd(tx *text);
  5400. IFILE TXAPI_(902) TXHIGH txGetParaContentEnd(TX* text);
  5401. IFILE TXAPI_(155) TXHIGH txGetParaTail(TX* text);
  5402. int TXAPI_(237) TXHIGH txGetParaLen(TX* text);
  5403. int TXAPI_(779) TXHIGH txGetParaContentLen(TX* text);
  5404. int TXAPI_(238) TXHIGH txGetParaEx(tx *text,mchar *buff,IBUFF sizebuff);
  5405. int TXAPI_(239) TXHIGH txGetParaRearEx(TX* text,mchar *buff,IBUFF sizebuff);
  5406. mchar* TXHIGH TXAPI_(1136) txGetParaAlloc(TX* text);    //WZ4.00Ec 010207 TXAPI化
  5407. BOOL TXAPI_(828) txGetBuff(TX* text,mchar* buff,IFILE adrtop,IFILE adrend);
  5408. //
  5409. IFILE TXAPI_(354) txGetLineTop(TX* text);
  5410. IFILE TXAPI_(355) txGetLineTail(TX* text);
  5411. int TXAPI_(780) txGetLineContentLen(TX* text);
  5412. //
  5413. IFILE TXAPI_(158) txGetWordTop(TX* text);
  5414. IFILE TXAPI_(157) txGetWordTail(TX* text);
  5415. IFILE TXAPI_(159) txGetSentenceTop(TX* text);
  5416. IFILE TXAPI_(160) txGetSentenceTail(TX* text);
  5417. IBUFF TXAPI_(280) txGetWordEx(TX* text,mchar* buff,IBUFF sizebuff);
  5418. IBUFF TXAPI txGetWordWholeEx(TX* text,mchar* buff,IBUFF sizebuff);
  5419. IBUFF TXAPI_(1061) txGetWordAfterEx(TX* text,mchar* buff,IBUFF sizebuff);
  5420. //
  5421. IFILE TXAPI_(161) txGetTextSize(TX* text);
  5422. IFILE TXAPI_(162) txGetTextSizeSemi(TX* text);
  5423. wchar* TXAPI_(349) txGetFileExtW(TX* text);
  5424. IFILE TXAPI_(350) txGetAddress(TX* text);
  5425. IFILE TXAPI_(351) txGetAddressSelectTop(tx *text);
  5426. IFILE TXAPI_(352) txGetAddressSelectEnd(tx *text);
  5427. IFILE TXAPI_(308) txGetAddressCurscreen(TX* text);
  5428. IFILE TXAPI_(353) txGetSelectLen(TX* text);
  5429. int TXAPI_(407) txGetLxLineEnd(TX* text);
  5430. int TXAPI_(408) txGetLxLineTail(TX* text);
  5431. BOOL TXAPI_(906) txGetDownAble(TX* text,int n);
  5432. BOOL TXAPI_(907) txGetUpAble(TX* text,int n);
  5433. // pが示す文字のタイプ(CT_SPACE,CT_XXX,etc)を返す
  5434. int TXAPI_(163) GetCharType(TX* text,mchar *p);
  5435. int chGetType(TXCHAR c,TX* text);
  5436.     #define CT_SPACE    2    // (0x00-0x20),全角スペース(0x8140)
  5437.     #define CT_SYMBOL    3    // '$','_'を除く英記号
  5438.                             // 全角記号(0x8152-0x815Bを除く)
  5439.     #define CT_KATA        4    // 半角カタカナ
  5440.     #define CT_HIRA        5    // 全角ひらがな
  5441.     #define CT_KANJI    6    // 上記以外の全角文字
  5442.     #define CT_CHAR        7    // 上記以外の半角文字
  5443.     #define CT_LF        8
  5444.     #define CT_EOF        9
  5445. //
  5446. TXCHAR TXAPI_(305) TXHIGH txGetChar(TX* text);
  5447. TXCHAR TXAPI_(306) TXHIGH txGetPrevChar(TX* text);
  5448. TXCHAR TXAPI_(867) txReadChar(TX* text);
  5449. IBUFF TXAPI_(377) TXHIGH txGetCharSize(TX* text,IBUFF off);
  5450. int txCharGetWidth(TX* text,TEXTCHAR ch);
  5451. int txCharGetWidthKanji(TX* text,TEXTCHAR* p);
  5452. int txGetCaretCx(TX* text);
  5453. int txGetCurCx(TX* text);
  5454. #define txGetCySpace(text)            (text->cySpace)
  5455. #define txGetLcySmlower(text)        (text->lcySmlower + text->fAddSmlower)
  5456. #define txLpGetCxLinenoBinedit(text)    (text->cxLetter*9)    //WZ4.00Bj 990831 
  5457. #define txGetOriginalCaret(text)    (text->fOriginalCaret)
  5458. #define txGetCurNpara(text)            (text->fScrollSB ? text->nparaSB : text->npara)    //WZ3.90L 981123 WZ FILERでスクロールバースクロールすると矩形枠と選択表示が分離した
  5459. #define txGetConfigtextValid(text)    (text->fConfigtext)    //WZ3.90I 981028 埋め込み設定が有効かどうか返す
  5460. #define CXCONTROLCHAR    8
  5461. // WINDOWSCE cxCharがCXCONTROLCHARより小さいことがある
  5462. #define txGetCxControlChar(text)    (CXCONTROLCHAR <= text->cxChar ? CXCONTROLCHAR : text->cxChar)
  5463. //
  5464. BOOL TXAPI_(281) txGetFreeCursor(TX* text);
  5465. int TXAPI_(282) txRightFree(TX* text);
  5466. int TXAPI_(283) txLeftFree(TX* text);
  5467. BOOL TXAPI_(364) TXAPIBASE TXHIGH_THROUGH txIsCurFree(tx *text);
  5468. #define txGetTexttopEnable(text)    (text->fTxf || text->mailedit)    //WCE1.01 980329 
  5469. #define txGetApfu(text)                (text->modeApfu || text->fApfu2 || text->fApfuBeamtab || text->fApfuTab)    //WZ3.90L 981115 fApfuBeamtabとfApfuTabを追加
  5470. #define txGetUseTextstack(text)        ((text->modeUseTextstack == TEXTSTACK_ON) || (text->modeUseTextstack == TEXTSTACK_ON_AT_VZ && text->modeEditor == ME_VZ))
  5471. #define txGetNoReplaceSelSearch(text)    (text->modeDispSearch == DISPSEARCH_REVERSE || (text->modeDispSearch == 0 && text->modeEditor != ME_WIN))
  5472. #define txGetViewmode(text)            (text->fSemiViewMode || text->fEditViewMode)
  5473. #define txGetEditable(text)            (text->fEditable && !text->fReadMode)    //WCE1.01 980426 
  5474. #define txGetLineD(text)            (text->fLineD || text->fBinedit)
  5475. #define txGetPageTurnLp(text)        (text->hdcPrinter)    // 印刷/印刷プレビュー時で、ページめくりモード?
  5476. #define txGetPageTurn(text)            (text->fPageTurn && text->height && !text->hdcPrinter)    // 通常時で、ページめくりモード?
  5477. #define txGetProp(text)                (text->lfEditProp || text->hdcPrinter)    // プロポーショナルフォントの可能性。
  5478. //
  5479. BOOL TXAPI_(284) TXHIGH txIsCurReturn(TX* text);
  5480. BOOL TXAPI_(314) TXAPIBASE txIsCurParaTop(TX* text);
  5481. BOOL TXAPI_(286) TXAPIBASE txIsCurLineTop(TX* text);
  5482. BOOL TXAPI_(285) TXHIGH txIsCurLineEnd(TX* text);
  5483. BOOL TXAPI TXHIGH txIsCurLineReturn(TX* text);
  5484. BOOL TXHIGH_COND txIsCurMsgsepa(TX* text);
  5485. BOOL TXAPI TXHIGH txIsCurTof(TX* text);
  5486. BOOL TXAPI_(329) TXHIGH txIsCurEof(TX* text);
  5487. BOOL txIsCurscreenDispEof(TX* text);
  5488. //
  5489. BOOL TXAPI_(310) txIsLineReturn(TX* text);
  5490. BOOL TXAPI_(311) txIsLineEnd(TX* text);
  5491. BOOL TXAPI_(312) TXAPIBASE txIsLineParaTop(TX* text);
  5492. //比較
  5493. int TXAPI_(838) TXHIGH txCmpCur(TX* text,mchar* szstr);
  5494. int TXAPI_(839) TXHIGH txCmpCurI(TX* text,mchar* szstr);
  5495. int TXAPI_(840) TXHIGH txCmpCurLen(TX* text,mchar* szstr,int lch);
  5496. int TXAPI_(841) TXHIGH txCmpCurLenI(TX* text,mchar* szstr,int lch);
  5497. int TXAPI_(842) TXHIGH txCmpCurPrev(TX* text,mchar* szstr);
  5498. int txCmpParaOffset(TX* text,mchar* szstr,IBUFF offset);
  5499. int txCmpIParatop(TX* text,mchar* szstr);
  5500. int txCmpIParatopLen(TX* text,mchar* szstr,int lch);
  5501. //
  5502. wchar* TXAPI_(379) txGetTitleFilenameW(TX* text);
  5503. wchar* TXAPI_(380) txGetTitleFilenameFullW(TX* text);
  5504. BOOL TXAPI_(270) txGetEdit(TX* text);
  5505. mchar* TXAPI_(908) txSprintLocate(TX* text,mchar buff[CCHWORD],UINT mode);
  5506. // clm
  5507. BOOL TXAPI_(931) txGetMultiClm(TX* text);
  5508. int TXAPI_(932) txClmFromLy(TX* text,int ly);
  5509. int TXAPI_(933) txClmGetLy(TX* text,int iClm);
  5510. #define txGetMultiClmTextmode(text)    (text->nClm >= 2)    // テキストモード専用
  5511. // 印刷
  5512. #if WZFUNC_PRINT
  5513.     #define IsAtPrint(text)            (text->hdcPrinter)    // 印刷プレビューまたは印刷時
  5514.     #define txGetPrinting(text)        (text->hdcPrinter && !text->flpPreview)    // 印刷中?
  5515. #else
  5516.     #define IsAtPrint(text)            (FALSE)
  5517.     #define txGetPrinting(text)        (FALSE)
  5518. #endif
  5519. // 表示
  5520. BOOL TXAPI_(1082) txGetDispToolbar(TX* text);
  5521. #define txGetDispSearch(text)            (!(text->modeDispSearch == DISPSEARCH_NORMAL || (text->modeDispSearch == 0 && text->modeEditor == ME_VZ)))    //WZ3.90P 981204 VZの見つけた文字の表示は「通常表示」に変更した。
  5522. #define txGetDispLineNo(text)        (IsAtPrint(text) ? text->lp->fDispLineNo : text->fDispLine)
  5523. //#define txGetDispSearch(text)            (text->modeDispSearch != DISPSEARCH_NORMAL)
  5524.  
  5525. #if !__TXC__
  5526. //clm
  5527. int txGetNclm(TX* text);
  5528. int lyToYClm(TX* text,int ly);
  5529. int clmGetX(TX* text,int iClm);
  5530. int clmGetY(TX* text,int iClm);
  5531. //
  5532. int txGetLcxLinenum(TX* text);
  5533. BOOL txGetScrollBarPreviewH(TX* text);
  5534. int txCharGetWidthStr(TX* text,TEXTCHAR* str,int lch);
  5535. UINT txFormChar(TX* text,mchar* str,UINT offset);
  5536. int txGetXAlign(TX* text,IBUFF off,IBUFF linesize,int align,int cxWidth);
  5537. int txchWidth(TX* text,TXCHAR ch);
  5538. mchar* txGetStringReturn(TX* text);
  5539. int txGetCursorFaceInsert(TX* text);
  5540. int txGetCursorFaceWrite(TX* text);
  5541. int GetWidthCx(TX* text,IBUFF ibuff,NPARA npara,int nClm);
  5542. int GetPosLeft(TX* text,IBUFF ibuff,NPARA npara,BOOL fPrinter);
  5543. #endif // !__TXC__
  5544.  
  5545. //##範囲選択/カットアンドペースト
  5546.  
  5547. //
  5548. BOOL TXAPI_(214) txSelectEx(tx *text,int fClip);
  5549. BOOL TXAPI_(175) txSelect(TX* text);
  5550. BOOL TXAPI_(176) txSelectWord(tx *text);
  5551. BOOL TXAPI_(177) txSelectLine(tx *text);
  5552. BOOL txSelectLineCur(TX* text);
  5553. BOOL TXAPI txSelectPara(TX* text);
  5554. BOOL TXAPI txSelectParaCur(TX* text);
  5555. BOOL TXAPI_(220) txSelectBox(TX* text);
  5556. BOOL TXAPI_(221) txSelectAll(tx *text);
  5557. BOOL TXAPI_(222) txSelectVz(tx *text);
  5558. //
  5559. void TXAPI_(812) txJumpSelectTop(TX* text);
  5560. void TXAPI_(813) txJumpSelectEnd(TX* text);
  5561. BOOL TXAPI_(170) txSelectJump(tx *text);
  5562. BOOL TXAPI_(171) txSelectToChar(tx* text);
  5563. BOOL TXAPI_(186) TXHIGH txSelectCopy(tx *text);
  5564. int TXAPI_(790) txSelectGetMode(TX* text);
  5565. BOOL TXAPI_(912) txSelectGetPrev(TX* text);
  5566. #define txSelectGetSize(text)    (txGetAddressSelectEnd(text) - txGetAddressSelectTop(text))    //WZ4.00Ec 010125 new
  5567. BOOL TXAPI_(185) txPaste(tx *text);
  5568. BOOL TXAPI_(199) txFlushSelectNow(TX* text);
  5569. BOOL TXAPI_(360) TXAPIBASE txIsClipInPara(tx *text);
  5570. BOOL txSelectToMemo(TX* text);
  5571. BOOL TXAPI_(919) txSelectToMemoEx(TX* text,mchar* szCaption);
  5572. //
  5573. BOOL TXAPI_(300) TXAPIBASE txWalkStart(TX* text);
  5574. BOOL TXAPI_(301) TXAPIBASE txIsWalking(TX* text);
  5575. BOOL TXAPI_(302) TXAPIBASE txWalkEnd(TX* text);
  5576. BOOL TXAPI_(303) TXAPIBASE txWalkStartPrev(TX* text);
  5577. BOOL TXAPI_(304) TXAPIBASE txIsWalkingPrev(TX* text);
  5578. //
  5579. void TXAPI_(200) txSelectCopyQuit(tx *text);
  5580. BOOL TXAPI_(212) TXHIGH txSelectDelete(tx *text);
  5581. void TXAPI_(213) txSelectCopyDelete(tx *text);
  5582. BOOL TXAPI_(373) txSelectQuit(tx *text);
  5583. BOOL TXAPI_(385) txClipboardAddCopy(TX* text);
  5584. BOOL TXAPI_(386) txClipboardAddCut(TX* text);
  5585. BOOL TXAPI_(946) txSelectOverwriteModal(TX* text);
  5586. //
  5587. BOOL TXAPI_(231) TXHIGH txClipPaste(tx *text,HCLIP hclip,BOOL fJump,int _fClip);
  5588. BOOL TXAPI_(232) TXHIGH txClipCopyEx(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int fClip,NPARA nparaTop,NPARA nparaEnd);
  5589. BOOL TXAPI_(315) TXHIGH txClipPasteEx(TX* text,HCLIP hclip,int istack,DWORD cbPasteMax,BOOL fJump,int _fClip);
  5590. BOOL TXAPI_(363) TXHIGH txClipCopy(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind);
  5591. BOOL TXAPI_(875) TXHIGH memClipCopy(LPVOID pmem,DWORD cbsize,HCLIP hclip,int fClip);
  5592. DWORD TXAPI_(876) TXHIGH memClipPaste(LPVOID pmem,HCLIP hclip);
  5593. //
  5594. BOOL TXAPI_(343) TXAPIBASE txPrivatePop(TX* text);
  5595. BOOL TXAPI_(344) TXAPIBASE txPrivatePopJump(TX* text);
  5596. BOOL TXAPI_(345) TXAPIBASE txPrivateDeleteTop(TX* text);
  5597. BOOL TXAPI_(346) TXAPIBASE txPrivatePaste(TX* text);
  5598. void TXAPI_(347) TXAPIBASE txPrivateClear(TX* text);
  5599. BOOL TXAPI_(348) TXAPIBASE TXHIGH txPrivatePush(TX* text);
  5600. //
  5601. int TXAPI_(316) clipIsWz(void);
  5602. BOOL TXAPI_(317) clipGetExistText(void);
  5603. BOOL TXAPI_(401) clipClear(HCLIP hclip);
  5604. BOOL TXAPI_(920) clipboardToMemo(mchar* szCaption);
  5605. //
  5606. #if !__TXC__
  5607. void DispFlushClipBox(TX* text);
  5608. void DispFlushClipBoxExec(TX* text);
  5609. BOOL ClipCopyBox(TX* text,IFILE cliptop,IFILE clipend,HCLIP hclip);
  5610. BOOL ClipPasteBox(TX* text,mchar* pstr,IBUFF cbClip);
  5611. BOOL SelectDeleteBox(TX* text);
  5612. IFILE ClipCopyBoxToHglobal(TX* text,IFILE cliptop,IFILE clipend,HGLOBAL hGlobal);
  5613. BOOL SelectQuit(TX* text);    //WZ4.00Db 000208 TXCでtxSelectQuitの省略記法が使えなかったのを修正。
  5614. //
  5615. BOOL txSelectGetOverwrite(TX* text);
  5616. IFILE txGetWordTailForSelect(TX* text);
  5617. IFILE txGetWordTopForSelect(TX* text);
  5618. BOOL clipPush(HCLIP hclip,mchar* lpData,DWORD cbData);
  5619. BOOL oleclipCopy(CLIPITEM* clipitem);
  5620. void wzoleTerm(void);
  5621. //textstack
  5622. typedef struct {
  5623.     HANDLE hf;
  5624.     IFILE sizefile;
  5625. } TSHANDLE;
  5626. BOOL tsOpen(TSHANDLE* ts);
  5627. void tsClose(TSHANDLE* ts);
  5628. void tsClearTop(TSHANDLE* ts);
  5629. void tsClearAll(void);
  5630. BOOL tsGetExist(void);
  5631. #endif // !__TXC__
  5632.  
  5633. //##表示
  5634.  
  5635. void TXAPI_(358) txSetUndisp(tx *text);
  5636. BOOL TXAPI_(359) txSetDisp(tx *text);
  5637. BOOL TXAPI_(844) txSetDispExJump(TX* text,BOOL fJump);
  5638. #define txSetUndispSilent(text)    txSetUndisp(text)
  5639. #define txSetDispSilent(text)    txSetDisp(text)
  5640. void TXAPI_(321) TXAPIBASE txSetUndispEx(TX* text);
  5641. BOOL TXAPI_(322) TXAPIBASE txSetDispEx(TX* text);
  5642. #define txSetUndispExSilent(text)    txSetUndispEx(text)
  5643. #define txSetDispExSilent(text)        txSetDispEx(text)
  5644. void TXAPI_(405) txSetUndispEdit(TX* text);
  5645. BOOL TXAPI_(406) txSetDispEdit(TX* text);
  5646. void TXAPI_(336) txSetBusy(TX* text);
  5647. void TXAPI_(337) txSetUnbusy(TX* text);
  5648. void TXAPI_(925) txDoCaption(TX* text);
  5649. //
  5650. void TXAPI_(365) txDispAll(tx *text);
  5651. void TXAPI_(141) txDispTextAll(TX* text);
  5652. void TXAPI_(142) txDispTextAllCursor(TX* text);
  5653. void TXAPI_(153) txDispText(TX* text,int yTop,int yEnd);
  5654. void TXAPI_(154) txDispNpara(TX* text,NPARA npara);
  5655. void TXAPI_(356) txDispCursor(TX* text);
  5656. void TXAPI_(357) txDispLocate(TX *text);
  5657. void TXAPI_(361) txSetLy(tx *text,int ly);
  5658. void TXAPI_(374) txSetLyCenter(tx *text);
  5659. BOOL TXAPI_(309) txSetLyCurscreen(TX* text,IFILE adrCurscreen);
  5660. int TXAPI_(963) txGetLyCenter(TX* text);
  5661. void TXHIGH_THROUGH txSetLyUndisp(TX* text,int ly);
  5662. //
  5663. BOOL TXAPI_(209) txSetHigh(tx *text);
  5664. BOOL TXAPI_(233) txResetHigh(tx *text);
  5665. BOOL TXAPI_(234) txResetHighFlag(tx *text);
  5666. #define txSetHighSilent(text)    txSetHigh(text)
  5667. #define txResetHighSilent(text)    txResetHigh(text)
  5668. //Flush
  5669. void TXAPI_(307) txFlush(TX* text);
  5670. void TXAPI_(843) txFlushUI(TX* text);
  5671. void TXAPI_(372) TXHIGH_THROUGH txFlushLx(TX* text);
  5672. void TXAPI_(378) txFlushCxBase(TX* text);
  5673. void TXAPI_(320) txFlushColor(TX* text);
  5674. void TXAPI_(208) TXHIGH_THROUGH txFlushCury(TX* text);
  5675. void TXAPI txFlushCurysize(TX* text);
  5676. void TXAPI_(942) txFlushMenuCheck(TX* text,UINT mask);
  5677.     #define FMC_ALL        0x0001
  5678.     #define FMC_UNDO    0x0002
  5679.     #define FMC_CLIP    0x0004
  5680.     #define FMC_CONFIG    0x0008
  5681.     #define FMC_ATOPEN    0x0010
  5682.     #define FMC_FORM    0x0020
  5683. void TXAPI_(961) txFlushScrollBar(TX* text);
  5684. void TXAPI_(962) txFlushScrollBarPos(TX* text);
  5685. void TXAPI_(1126) txFlushPreviewW(TX* text,wchar* wszfilename);
  5686. //
  5687. TX* TXAPI_(1000) txGetKeywordText(TX* text);
  5688. //
  5689. #define xToClient(text,x)            (text->cxBase + text->xbase + x)
  5690. #define xToClientEx(text,x,cxBase)    (cxBase + text->xbase + x)
  5691. //
  5692. #if !__TXC__
  5693. //
  5694. IBUFF Disp(TX* text,int yTop,int yEnd,int mode);
  5695.     #define DISP_FLUSHLINENO        1
  5696.     #define DISP_TYFLUSH            2
  5697.     #define DISP_GETCURSCREENEND    3
  5698.     #define DISP_SPACEEND            4
  5699.     #define DISP_FLUSHALIGN            5    // yTopからyEndのtcxAlignをフラッシュ
  5700.     #define DISP_LPRINT                6    //WCE1.01 980216 1ページ分を表示し、lcywindow,tLineatrをセットする
  5701. void DispLine(TX* text,int ly,IBUFF off,IBUFF linesize,NPARA npara);
  5702. void DispLineNo(TX* text,int ly,NLINE nLine,NPARA npara,NPAGE npage,IBUFF off);
  5703. void DispNull(TX* text,int ly);
  5704. void txDispFlushClip(tx* text,IFILE cliptopnow,IFILE clipendnow);
  5705. void tyFlush(TX* text);
  5706. void ScrollY(TX* text,int lyTop,int lyEnd,int dy);
  5707. void DispFlushClipBox(TX* text);
  5708. void FlushDispLines(tx *text,int lines0,int lines,int nLf);
  5709. void TXHIGH_THROUGH FlushClipVz(TX* text,UINT fClip);
  5710. int txSetupDispLine(TX* text,IBUFF cury,NPARA npara);
  5711. void DispLineNull(TX* text);
  5712. int GetCurLines(TX* text,IBUFF off,int nLf);
  5713. void txSetupCyLine(TX* text,IBUFF cury,IBUFF curysize);
  5714. void ScrollPreviewY(TX* text,int yViewportOrgNew);
  5715. void txSetColorReverse(TX* text,BOOL fReverse);
  5716. void txSetColorTextForce(TX* text);
  5717. //
  5718. void InitDC(TX* text);
  5719. void TermDC(TX* text);
  5720. void OpenDC(TX* text);
  5721. void CloseDC(TX* text);
  5722. void MapDC(TX* text,HDC hdc);
  5723. HWND txGetHwndtext(TX* text);
  5724. BOOL lfSet(TX* text,LOGFONT* lf);
  5725. void FreeFont(TX* text);
  5726. void txFontsetcacheTerm(TX* text);
  5727. void logfontSetup(LOGFONT* lf,mchar* lfFaceName,int lfHeight,HDC hdc);
  5728. //
  5729. void caretFlush(TX* text);
  5730. void txOnCaretGet(TX* text,BOOL fGet);
  5731. int TXHIGH txOffsetToX(TX* text,IBUFF cury,IBUFF offset);
  5732. int TXHIGH txXToOffset(TX* text,IBUFF cury,int *pX,IBUFF curysize,NPARA npara);
  5733. void underlineDraw(tx *text,int ly);
  5734. void DispUnderline(tx *text,int lynew,int lyold);
  5735. void focuslineHide(tx *text);
  5736. void focuslineShow(tx *text);
  5737. void focuslineXor(tx *text);
  5738. void focuslineInit(TX* text);
  5739. void txRulerFlushDisp(TX* text);
  5740. void txRulerOnCursorMove(TX* text,int x,int cx);
  5741. //
  5742. int checkLy(TX* text,int ly);
  5743. void TXHIGH_THROUGH txSetLyUndispEx(tx *text,int ly);
  5744. //
  5745. int hvGetCxClient(TX* text);
  5746. int hvGetCyClient(TX* text);
  5747. int VX(TX* text,int y);
  5748. int VXP(TX* text,int y);
  5749. #if WZFUNC_VERTICAL
  5750. int hvDrawText(TX* text,HDC hdc,LPCTSTR lpszStr,int cchStr,RECT* r,UINT op);
  5751. void hvMoveTo(TX* text,HDC hdc,int x,int y);
  5752. void hvLineTo(TX* text,HDC hdc,int x,int y);
  5753. #else
  5754. #define hvTextOut(text,hdc,x,y,str,len)    TextOut(hdc,x,y,str,len)
  5755. #define hvExtTextOut(text,hdc,x,y,op,r,lpszString,cbCount,lpDx)    ExtTextOut(hdc,x,y,op,r,lpszString,cbCount,lpDx)
  5756. #define hvMoveTo(text,hdc,x,y)    MoveTo(hdc,x,y)
  5757. #define hvLineTo(text,hdc,x,y)    LineTo(hdc,x,y)
  5758. #define hvDrawText(text,hdc,lpszStr,cchStr,r,op)    DrawText(hdc,lpszStr,cchStr,r,op)
  5759. #endif
  5760. void hvRect(TX* text,RECT* r);
  5761. void hvRectBack(TX* text,RECT* r);
  5762. void hvPointModal(TX* text,POINT* p);
  5763. //色分け
  5764. void txFreeKeyword(TX* text);
  5765. void txFlushKeyword(TX* text);
  5766. IFILE txGetUrlTopEnd(TX* text,BOOL fTop);
  5767. //Flush
  5768. BOOL txFlushBase(TX* text);
  5769. void txFlushFont(TX* text);
  5770. void txFlushWidth(TX* text);
  5771. void txFlushCxCyClient(TX* text);
  5772. void txFlushLcywindow(TX* text);
  5773. void txFreeBitmap(TX* text);
  5774. void txFlushBitmap(TX* text);
  5775. void txCheckWidthTab(TX* text);
  5776. void txFlushTable(TX* text);
  5777. void TXHIGH_THROUGH _txFlushCury(TX* text,BOOL fTail);
  5778. void txFlushToolbar(TX* text);
  5779. void _txFlushMenu(TX* text,BOOL fShow);
  5780. void txFlushMenu(TX* text);
  5781. void txFlushMenuFilewindowlist(TX* text,HMENU hmenu);
  5782. void txFlushPreview(TX* text,mchar* szfilename);
  5783. void txFlushWindow(TX* text);
  5784. IBUFF txFlushCurscreen(TX* text);
  5785. void txFlushCurscreenForce(TX* text);
  5786. BOOL TXHIGH_THROUGH txFlushFree(TX* text);
  5787. //
  5788. void txDoCaptionEx(TX* text,HWND hwndbase,int idMt);
  5789. void txCloseToolbar(TX* text);
  5790. void ehHwndSetDisp(TX* text,RECT* rWork,BOOL fDisp);
  5791. void txAsStart(TX* text,BOOL fPrev);
  5792. void _txFlushMenuCheckExec(TX* text,HMENU hmenu,UINT mask);
  5793. void txFlushLyForInput(TX* text);
  5794. void txStatusbarFlushDispPagingmode(TX* text);
  5795. #endif    // !__TXC__
  5796.  
  5797. //##ツール
  5798.  
  5799. BOOL TXAPI_(323) txuiConvertCharZenhan(TX* text);
  5800. int TXAPI_(293) txCharConvert(TX* text,CHARCONVERT* cc);
  5801. BOOL TXAPI_(334) txCmpFirst(TX* text);
  5802. BOOL TXAPI_(335) txCmp(TX* text);
  5803. void TXAPI_(338) txIndentInc(TX* text);
  5804. void TXAPI_(339) txIndentDec(TX* text);
  5805. void TXAPI_(340) txHelpOpenW(TX* text,wchar* _wszfilename);
  5806. void TXAPI_(854) txHelpOpen(TX* text,mchar* szfilename);
  5807. void TXAPI_(331) txSwitchIme(TX* text);
  5808. BOOL TXAPI_(330) txuiImeConvert(TX* text);
  5809. BOOL TXAPI_(381) txuiConvertChar(TX* text);
  5810. BOOL TXAPI_(384) txuiQuote(TX* text);
  5811. BOOL TXAPI txQuoteEx(TX* text,mchar* szQuote,int mode);
  5812.     #define TXQUOTE_SELECT    0x01    // 範囲選択されてなかった時でも選択状態にする
  5813. // proof
  5814. #if UNIX && defined(_PROOF_C)
  5815.     // 何故かconflicting typesになるので宣言しない。
  5816. #else
  5817. int TXAPI_(921) txSpellCheck(TX* textTarget,TX* textDic,TX* textDicUser,HSTRBLK sbSplchkTempDic,struct tagLIST* list,DWORD scmode,BOOL (*procAbort)(void));
  5818. int TXAPI_(922) txWordStandardize(TX* textTarget,TX* textDic,struct tagLIST* list,DWORD mode,BOOL (*procAbort)(void));
  5819. #endif
  5820.     // txSpellCheckのフラグ
  5821.     #define SPLCHK_MASKSHORT    0x0000000F    // 0以外ならそれ以下の文字数の単語はチェックしない
  5822.     #define SPLCHK_NOUPPER        0x00000010    // 全て大文字の単語は無視
  5823.     #define SPLCHK_NODIGIT        0x00000020    // 数字の後、数字の手前の単語は無視
  5824.     #define SPLCHK_NOSENSECASE    0x00000040    // 大小文字を区別しない(未完成)
  5825.     #define SPLCHK_CUR            0x00000080    // カーソル位置、またはカーソル位置の手前の単語だけをチェック
  5826.     #define SPLCHK_NOURL        0x00000100    //WZ3.90L 981116 URLは無視
  5827.     // txSpellCheck,txWordStandardize兼用のフラグ
  5828.     #define SPLCHK_TXC            0x80000000    //WZ4.00Ca 991201 TX-Cからの呼び出し?
  5829. //
  5830. void TXAPI_(325) txInsertBrace(TX* text);
  5831. void TXAPI_(313) txJankToAnk(TX* text);
  5832. void TXAPI_(785) txJkanaToKana(TX* text);
  5833. void TXAPI_(786) txJkataToKana(TX* text);
  5834. void TXAPI_(787) txKanaToJhira(TX* text);
  5835. void TXAPI_(788) txKanaToJkata(TX* text);
  5836. void TXAPI_(789) txAnkToJank(TX* text);
  5837. // ソート
  5838. // WZ4.0/PWZ2.0C EOF行を含むソートもできるようになりました。
  5839. typedef struct {
  5840.     UINT sizeStruct;    // sizeof(SORTARG) for version check
  5841.     NPARA lineTop;        // ソート開始論理行(origin:1)
  5842.     NPARA lineEnd;        // ソート終了論理行(origin:1)
  5843.                         //WZ3.90I 981029 lineTop,lineEndがテキストの範囲を超えている場合は、
  5844.                         // テキストに収まる範囲をソートします。
  5845.                         // lineEndが0ならlineTopからテキストの終わりまでをソートします。
  5846.     IBUFF lchItem;        // 比較項目の最大長
  5847.                         // fCsvまたはchItemが0以外なら指定は無視されます。
  5848.                         // 0なら行末までを比較します。
  5849.                         // 行末までに \0 文字があれば、そこまでを比較します。
  5850.     IBUFF iItem;        // 比較項目位置:行先頭からのオフセット
  5851.                         // fCsvがONの場合は、行先頭項目を0とした、比較項目NOを指定します。
  5852.     BYTE chItem;        // 0を指定すると何もしません。
  5853.                         // 0以外を指定すると、iItem以降の最後のchItemの文字から
  5854.                         // 行末までを比較します。
  5855.                         // 行末までに \0 文字があれば、そこまでを比較します。
  5856.     FBOOL fCsv;            // 1にすると、タブで区切られたiItem番目の内容で比較します。
  5857.                         //WZ3.90I 981029 機能実装。
  5858.     FBOOL fBack;        // 逆順にソート?
  5859.     FBOOL fNoSenseCase;    // 半角英大小文字を区別しない
  5860. // result
  5861.     NPARA nparaCur;        //WZ3.90I 981029 0以外に指定すると、その段落がソート後にどこの段落に移動したかを返します。
  5862. // 以下は使われなくなりました。指定は無視されます。//WZ3.90I 981029 
  5863.     IBUFF lchLine;
  5864.     LPVOID pfuncCmpKey;
  5865.     LPARAM lCust;
  5866. // 以上は使われなくなりました。
  5867. // 拡張用予備
  5868.     BYTE reserved[16];
  5869. } SORTARG;
  5870. BOOL TXAPI_(846) TXHIGH txSort(TX* text,SORTARG* arg);
  5871. // テキストの変換
  5872. #if WZFUNC_EDITOR
  5873. enum {
  5874.     CT_PLAINTEXT,CT_CRTEXT,
  5875. //    CT_SYMBOLTEXT,    // これは要らないだろう。
  5876.     CT_AUTOFORMTEXT,
  5877.     #if WZFUNC_HTMLHIGH
  5878.     CT_HTML,
  5879.     #endif
  5880.     CT_TML,CT_WORDTEXT,
  5881.     CT_AUTOFORMTEXTOLD,CT_TABFORMTEXT,
  5882.     CT_CRTEXTMAIL=100    // for WZ MAIL
  5883. };
  5884. #else
  5885. enum {
  5886.     CT_PLAINTEXT,CT_CRTEXT,CT_TML,
  5887.     CT_CRTEXTMAIL=100    // for WZ MAIL
  5888. };
  5889. #endif
  5890. void TXAPI_(1009) txConvertText(TX* text,int ctSrc,int ctDst,HEADLINE_SET* headSrc,HEADLINE_SET* headDst,UINT mode);
  5891.     // (mode & 1)    fToClip
  5892. void TXAPI_(1095) txTabToSpace(TX* text);    // 選択中は選択内のみを変換。非選択中は全部変換。
  5893. //
  5894. #if !__TXC__
  5895. int txGetCT(TX* text);
  5896. void TXAPI txTabToSpacePrim(TX* text);
  5897. void TXAPI txSpaceToTab(TX* text);
  5898. void TXAPI txDeleteTailSpace(TX* text);
  5899. //
  5900. BOOL uiCustToolbar(mchar* szApp,mchar* szName);
  5901. BOOL txuiCustKey(TX* text);
  5902. void txKeylist(TX* text);
  5903. BOOL txCaseWord(TX* text,BOOL fToLower);
  5904. BOOL txuiConvertText(TX* text);
  5905. BOOL txuiRegFiletypeConnection(TX* text);
  5906. void SetExtRegTml(BOOL fSet);
  5907. void SetExtRegTxt(BOOL fSet);
  5908. void SetExtRegUnknown(BOOL fSet);
  5909. void SetExtRegTextsPwz(void);
  5910. //
  5911. BOOL txInsertFileWztext(TX* textInsert,wchar* wszfilename,int mode);
  5912. BOOL wordicGetExist(void);
  5913. BOOL txDicWord(TX* text);
  5914. void txAddRefer(TX* text,IFILE adr);
  5915. void uiHelp(int idStartHeadline);
  5916. BOOL txJumpThp(TX* text,mchar* szHeadline);
  5917. BOOL txGrepTagJump(TX* text);
  5918. BOOL CALLBACK dlgprocConvertChar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
  5919. void ccToCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
  5920. void ccFromCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
  5921. BOOL uiOpenHistFile(void);
  5922. #endif // !__TXC__
  5923.  
  5924. //##キー/IDMコマンド実行
  5925.  
  5926. BOOL TXAPI_(766) txKeySetWzcmd(TX* text,mchar* szKey,WZCMD wzcmd);
  5927. BOOL TXAPI_(619) txKeyLoad(TX* text);
  5928. BOOL TXAPI_(620) txKeyLoadFrame(TX* text);
  5929. BOOL TXAPI_(621) txKeyInit(TX* text);
  5930. #define txIdmToSzkey(text,wzcmd,szstr)    keyIdmToSzkey((text)->key,wzcmd,szstr)    //WZ3.90I 981103 txKeyWzcmdToSzstrから名称変更    //WZ4.00Ca 991212 #define化
  5931. BOOL TXAPI_(623) keymacroPlayStep(void);
  5932. BOOL TXAPI_(624) keymacroPlay(void);
  5933. BOOL TXAPI_(625) keymacroPlayN(int number);
  5934. BOOL TXAPI_(626) keymacroRecord(void);
  5935. BOOL TXAPI_(627) keymacroAddIdm(int idm);
  5936. BOOL TXAPI_(628) keymacroAddStr(mchar* szStr,BOOL fOverWrite);
  5937. BOOL TXAPI_(629) keymacroAddSearch(mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
  5938. BOOL TXAPI_(934) keymacroGetBusy(void);
  5939. BOOL TXAPI_(630) txuiKeymacro(TX* text);
  5940. void TXAPI_(631) txInsertPreprocess(TX* text);
  5941. void TXAPI_(632) txInsertPostprocess(TX* text);
  5942. BOOL TXAPI_(634) wpathIsAutosave(wchar* wszfilename);
  5943. BOOL TXAPI_(635) txAutosaveGetFileNameW(TX* text,wchar wszfilename[CCHPATHNAME]);
  5944. void TXAPI_(636) txAutosaveExec(TX* text);
  5945. BOOL TXAPI_(637) txAutosaveAtQuit(TX* text);
  5946. BOOL TXAPI_(638) txAutosaveAtOpen(TX* text);
  5947. void TXAPI_(639) txAutosaveAtCmd(TX* text);
  5948. BOOL TXAPI_(640) txAutosaveDelete(TX* text);
  5949. BOOL TXAPI_(641) txAutosaveGetDelete(TX* text,wchar* wszfilename);
  5950. #define txWzkeyToSzkey(text,wzkey,szkey)    keyWzkeyToSzkey((text)->key,wzkey,szkey)    //WZ4.00Ca 991212 #define化
  5951. mchar* TXAPI_(404) szkeyToStr(mchar szkey[CCHKEY],mchar szstr[CCHWORD]);
  5952. void keylistCreate(void);
  5953. BOOL hwndControlProcWmKey(HWND hwnd);
  5954. BOOL txKeyProcMessage(TX* text,UINT message,WPARAM wParam,LPARAM lParam);    //WZ3.90I 981102 引数(BOOL fKeyD)廃止。TXAPI化中止。
  5955. BOOL txKeyProcMessageByMouse(TX* text,UINT message,WPARAM wParam,LPARAM lParam);
  5956. BOOL txPeekWM_CHAR(TX* text);
  5957. BOOL txPeekWM_SYSCHAR(TX* text);
  5958. int TXAPI_(164) txIdmExec(TX* text,int idm);    //WZ3.90I 981027 txIdmExecDirect廃止
  5959. int txIdmExecEx(TX* text,int idm,int nRepeat,UINT mode);
  5960.     #define TXIDM_KEYMACRO_ADD    0x01
  5961.     #define TXIDM_PRIM            0x02
  5962. BOOL txIdmExecFilehist(TX* text,int idm);
  5963. int TXAPI_(903) txIdmExecPrim(TX* text,int idm,UINT mode);    //WZ4.00Ac 990207 new
  5964.  
  5965. //##ウィンドウ
  5966.  
  5967. #define WNDTX_MOVING        0x0001    // 内部移動中
  5968.  
  5969. #define OFFSET_WNDTX_LEFT    4
  5970. #define OFFSET_WNDTX_TOP    6
  5971. #define OFFSET_WNDTX_CX        8
  5972. #define OFFSET_WNDTX_CY        10
  5973. #define OFFSET_WNDTX_FLAG    12
  5974. #define OFFSET_WNDTX_END    14
  5975.  
  5976. BOOL TXAPI_(261) uiWindowlist(TX* text);
  5977. int TXAPI_(252) textSearch(HWND hwnd);
  5978. HWND TXAPI_(253) textRead(int i);
  5979. void TXAPI_(262) wndtxSetActive(HWND hwndbase);
  5980. HWND TXAPI_(527) wndtxGetActive(HWND hwndbase);
  5981. BOOL TXAPI_(848) wndtxIsEditor(HWND hwndbase);
  5982. HWND TXAPI_(263) SearchTextW(wchar* szfilename);
  5983. HWND TXAPI_(865) SearchText(mchar* szfilename);
  5984. BOOL TXAPI_(328) txSwitchWindow(TX* text);
  5985. BOOL TXAPI_(918) wndtxTile(HWND reserved,int mode);    // reservedにはNULLを指定してください。
  5986.     #define TILE            'T'
  5987.     #define TILE_H            'H'
  5988.     #define TILE_V            'V'
  5989.     #define TILE_OVERLAP    'C'
  5990.     #define TILE_UNDO        'U'
  5991.     #define TILE_DUP        'D'
  5992. void TXAPI_(957) wndtxSetOriginalRect(HWND hwnd,RECT* r);
  5993. void TXAPI_(958) wndtxGetOriginalRect(HWND hwnd,RECT* r);
  5994. void TXAPI_(959) wndtxSetPosSizeWork(HWND hwnd,int x,int y,int cx,int cy);
  5995. HWND TXAPI_(984) wndtxGetLast(void);
  5996. HWND TXAPI_(985) wndtxGetPrev(HWND cur);
  5997. //
  5998. #if !__TXC__
  5999. void winxInit(void);
  6000. WORD wndtxGetFlag(HWND hwnd);
  6001. HWND TXAPI wndGetTopPopupWindow(HWND hwndbase);
  6002. void wndtxSetMoving(HWND hwnd,BOOL fSet);
  6003. TX* hwndbaseIsMailer(void);
  6004. TX* hwndbaseIsTerm(void);
  6005. TX* hwndbaseIsHelp(void);
  6006. TX* hwndMailerGetText(HWND hwnd);
  6007. //
  6008. HWND textGetNext(HWND cur);
  6009. HWND textGetTop(void);
  6010. //
  6011. #if !WINDOWSCE
  6012. MT* txFindMtHwndbase(TX* text,HWND hwnd);
  6013. #endif
  6014. BOOL txMultiWindow(TX* text,BOOL fSaveAddress);
  6015. BOOL on_mt_WM_ACTIVATE(TX* text,HWND hwnd);
  6016. BOOL on_mt_WM_PAINT(TX* text,HWND hwnd);
  6017. BOOL on_mt_WM_SIZE(TX* text,HWND hwnd);
  6018. BOOL on_mt_txQuit(TX* text);
  6019. #endif // !__TXC__
  6020.  
  6021. //##マクロ/TX-C
  6022.  
  6023. typedef struct {    // コンパイラオプション
  6024.     WORD nErrorMessage;            // 最大出力エラーメッセージ数
  6025.     BBOOL fWarnFuncNotCall;        // WARNING"関数は呼ばれない"を出力?
  6026.     BBOOL fWarnSignMismatch;    // WARNING"符号のミスマッチ"を出力?
  6027.     BBOOL fWarnLoseDigit;        // WARNING"桁が失われる"を出力?
  6028.     BBOOL fReportTxapi;            // REPORT"変数自動定義"
  6029.     BBOOL fReportAutoDef;        // REPORT"関数呼び出し変換"
  6030.     BBOOL fNoTxcEx;                // TX-C拡張機能を使わない
  6031.     BBOOL modeStdout;            //1.00Fで仕様変更 [stdoutのオープン]
  6032.                                 //    0:エラー時だけ
  6033.                                 //    1:エラー,警告
  6034.                                 //    2:いつも
  6035.     BBOOL fAutoMake;            // .cをユーザが眺めてて、書き換えたりしてるうち、
  6036.                                 // うっかりautosaveされてしまうことがあるため
  6037.     BBOOL fNoAutoDef;            //2.00B 変数の自動定義を無効にする?
  6038.     BBOOL modePlatform;            //PWZ2BETA0.4 980530 TX-PCODEを実行するプラットフォーム
  6039.         #define TXC_PLATFORM_WINDOWS    0    // Windows95/NT4.0
  6040.         #define TXC_PLATFORM_WINDOWSCE1    1    // WindowsCE1.01
  6041.         #define TXC_PLATFORM_WINDOWSCE2    2    // WindowsCE2.0
  6042.         #define TXC_PLATFORM_UNIX        3    // UNIX
  6043.     mchar szpathOutput[CCHPATHNAME];    //PWZ2BETA0.4 980530 出力パス
  6044.     mchar szpathInclude[CCHPATHNAME*2];    //PWZ2BETA0.4 980530 includeパス
  6045.     mchar szpathMacro[CCHPATHNAME];        //PWZ2BETA0.4 980531 マクロパス
  6046. } TXCOPTION;
  6047. #define CCHEVENTMACROS    512    //WZ4.00Ca 991203 プラグインマクロ設定を最大512文字までに拡大。ユーザ要望。
  6048.  
  6049. BOOL    TXAPI_(868) macroExec(mchar* szMacro,TX* text);
  6050. FARPROC TXAPI_(814) txpcodeRegisterCallback(FARPROC procTxpcode,UINT nArg);
  6051. void    TXAPI_(815) txpcodeUnregisterCallback(FARPROC procRegistered);
  6052. #if 1//WZ4.00Db 000213 txSetHookWndproctextTxpcodeTail/txSetHookWndprocbaseTxpcodeTail追加
  6053. void    TXAPI_(246) txSetHookTxpcode(TX* text,FARPROC proc,UINT flag);
  6054.     #define HOOK_TXC        0x01
  6055.     #define HOOK_HWNDBASE    0x02
  6056.     #define HOOK_TAIL        0x04
  6057.     #define txSetHookWndproctextTxpcode(text,proc)    txSetHookTxpcode(text,proc,HOOK_TXC)
  6058.     #define txSetHookWndprocbaseTxpcode(text,proc)    txSetHookTxpcode(text,proc,HOOK_TXC|HOOK_HWNDBASE)
  6059.     #define txSetHookWndproctextTxpcodeTail(text,proc)    txSetHookTxpcode(text,proc,HOOK_TAIL|HOOK_TXC)
  6060.     #define txSetHookWndprocbaseTxpcodeTail(text,proc)    txSetHookTxpcode(text,proc,HOOK_TAIL|HOOK_TXC|HOOK_HWNDBASE)
  6061. #else
  6062. void    TXAPI_(246) txSetHookWndproctextTxpcode(TX* text,FARPROC procTxpcode);
  6063. void    TXAPI_(247) txSetHookWndprocbaseTxpcode(TX* text,FARPROC procTxpcode);
  6064. #endif
  6065. void    TXAPI_(883) txReleaseHookWndproc(TX* text,WNDTEXTHOOKPROC lpHook,BOOL fHwndbase);
  6066.     #define txReleaseHookWndproctext(text,procTxpcode)    txReleaseHookWndproc(text,procTxpcode,FALSE)
  6067.     #define txReleaseHookWndprocbase(text,procTxpcode)    txReleaseHookWndproc(text,procTxpcode,TRUE)
  6068. FARPROC TXAPI_(1107) macroGetTxpcode(mchar* szMacro);    //WZ4.00Ca 991204 new
  6069. #if __TXC__
  6070. DWORD   TXAPI_(1108) txpcodeCallAddress(FARPROC pc,UINT nArg,LPVOID pArg);    //WZ4.00Ca 991204 new
  6071. TXSTR   TXAPI_(1134) txpcodeGetFileName(FARPROC pc,TXSTR szfilename);        //WZ4.00Eb 010103 マクロの実行ファイル名を得るtxpcodeGetFileNameを追加。myfunc{txstr sz;txpcodeGetFileName(myfunc,sz);information("%s",sz);}の様に使用。
  6072. #endif
  6073. #if !defined(_COMPILE_H) || defined(TXC_CLIENT)
  6074. void TXAPI_(1109) WINAPI txcLoadConfig(TXCOPTION* copt);
  6075. #endif
  6076. void TXAPI_(1110) txcSaveConfig(TXCOPTION* copt);
  6077.  
  6078.  
  6079. #if !TXC
  6080. void txpcodeNotifyTextOpen(TX* text);
  6081. void txReleaseHookWndprocAll(TX* text,TXWNDHOOK* root);
  6082. void txwndhookOnFree(TXWNDHOOK* item);
  6083. void txwndhookOnAlloc(TXWNDHOOK* item);
  6084. LRESULT CALLBACK dialogCallDlgprocTxpcode(FARPROC proc,HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
  6085. void txpcodeNotifyTextClose(TX* text);
  6086. void txpcodeSetDlgproc(FARPROC proc,BOOL fRelease);
  6087. void txTextvarFreeAll(TX* text);
  6088. WZCMD szMacroToWzcmd(mchar* szMacro);
  6089. mchar* wzcmdToSzmacro(WZCMD wzcmd);
  6090. BOOL txIDM_MACRO_COMPILE(TX* text);
  6091. BOOL txIDM_MACRO_EXEC(TX* text);
  6092. BOOL txIDM_MACRO_DUMP(TX* text);
  6093. void txIDM_MACRO_LOG(TX* text);
  6094. BOOL txeExec(mchar* szfilename,wchar* wszCmdLine);
  6095. void macroTerm(void);
  6096. mchar* txcGetsetEventMacro(mchar szEventMacros[CCHEVENTMACROS],BOOL fSet);
  6097. mchar* txcGetEventMacro(mchar buff[CCHEVENTMACROS]);
  6098. mchar* szEventMacrosSetError(mchar szEventMacros[CCHEVENTMACROS],mchar* p);
  6099. void txcCloseCompileStatWindow(void);
  6100. BOOL wpathSearchMacroPath(wchar* dst,wchar* wszfilename,wchar* wszexts);
  6101. #endif // !__TXC__
  6102.  
  6103. //##自動整形
  6104.  
  6105. typedef struct {
  6106.     int lch;                // 段落書式の長さ(lchIndent+lchArticle+lchSubtitle)
  6107.     int lchIndent;            // 字下げ文字列の長さ
  6108.     int lcxIndent;            //WZ3.90L 981115 字下げ文字列のLCX
  6109.     int lchArticle;            // 箇条書きの長さ
  6110.     int lchSubtitle;        // 小見出文字列の長さ
  6111.     int lchSubtitleBody;    // 小見出文字列の末尾の空白を除く長さ
  6112.     int lchSubtitleSymbol;    //WCE1.01 980113 小見出しの先頭部分の記号列(一般文字を除く)の長さ
  6113.     int nBeamtab;            //WZ3.90L 981115 桁揃えによる折り返し2行目以降の開始位置
  6114.     FBOOL fSubtitleChar;    //WCE1.01 980113 小見出し文字列は文字列(記号列でない)?
  6115.     FBOOL fArticleNum;        // 番号付き箇条書き段落?
  6116.     FBOOL fArticleJnumber;    // szArticleは全角番号付きか?
  6117.     SIGNED_WORD nArticle;    // 先頭番号
  6118.     SIGNED_WORD ichNum;        // szArticleの番号のオフセット
  6119.     SIGNED_WORD lchNum;        // szArticleの番号の長さ
  6120.     FBOOL fCurArticleNext;    //WCE1.01 971226 カーソル位置が箇条書きの直後にある?
  6121. } APFU_ANALYZE;
  6122. extern mchar _szLineTop[];
  6123.  
  6124. int TXAPI_(642) txApfuGetLcxLeft(TX* text,IBUFF offset,APFU_ANALYZE* ana,NPARA npara);
  6125. BOOL TXAPI_(643) txApfuIndentInc(TX* text);
  6126. BOOL TXAPI_(644) txApfuIndentDec(TX* text);
  6127. void TXAPI_(382) txApfInsertHR(TX* text);
  6128. BOOL TXAPI_(383) txuiApfConfig(TX* text);
  6129. BOOL TXAPI_(971) txApfEnter(TX* text);
  6130. BOOL TXAPI_(935) txApfEnterConnect(TX* text);
  6131. BOOL TXAPI_(936) txApfEnterDeleteParaform(TX* text);
  6132. BOOL TXAPI_(937) txApfEnterModal(TX* text);
  6133. BOOL TXAPI_(939) txApfEnterConnectPrev(TX* text);
  6134. BOOL TXAPI_(940) txApfExit(TX* text);
  6135. void TXAPI_(941) txApfIncrementArticle(TX* text);
  6136. BOOL TXAPI_(943) txApfCheckEnter(TX* text);
  6137. BOOL TXAPI_(944) txApfIndentInc(TX* text);
  6138. BOOL TXAPI_(945) txApfIndentDec(TX* text);
  6139. //
  6140. #if !__TXC__
  6141. mchar* mystrread(mchar* sz,TXCHAR* ch);
  6142. BOOL txApfExitModal(TX* text);
  6143. BOOL txApfExitEx(TX* text,DWORD mode);
  6144.     #define APF_TO_PLAINTEXT    0x01
  6145.     #define APF_TO_TML            0x02    //WZ3.90K 981113 
  6146. BOOL txApfAtInsertBefore(TX* text);
  6147. BOOL txApfAtInsertAfter(TX* text);
  6148. void txApfExitFlag(TX* text);
  6149. int txApfGetWidth(TX* text);
  6150. int txApfGetLcxScenarioSerifuIndent(TX* text);
  6151. //
  6152. void txMailtextToPlaintext(TX* text);
  6153. void txPlaintextToMailtext(TX* text);
  6154. void txPlaintextToWordtext(TX* text);
  6155. #endif // !__TXC__
  6156.  
  6157. //##設定
  6158.  
  6159. void TXAPI_(607) txConfigGetGroupName(TX* text,mchar szbuff[CCHWORD]);
  6160. //void TXAPI_(608) txConfigGetNamePrim(TX* text,mchar szbuff[CCHWORD]);//WZ4.00Ee 010417 廃止
  6161. mchar* TXAPI_(609) txConfigGetName(TX* text,mchar szbuff[CCHWORD]);    //WZ4.00Ee 010417 返り値の型を変更。
  6162. BOOL TXAPI_(610) txConfigGet(TX* text);
  6163. BOOL TXAPI_(611) txConfigAdd(TX* text,mchar* szName);
  6164. //BOOL TXAPI_(612) txConfigConnect(TX* text,mchar* szLoad);//WZ4.00Ee 010417 廃止
  6165. BOOL TXAPI_(613) txConfigSet(TX* text);
  6166. BOOL TXAPI_(614) txConfigSetEx(TX* text);
  6167. void TXAPI_(914) txConfigRead(TX* text,mchar* szcfg);    //WZ4.00Bl 990913 設定切替TXAPI txConfigReadを追加。ユーザ要望。WZ3のように設定を1キーで切替たい。
  6168. void txConfigGetPlug(TX* text);
  6169. BOOL txConfigConnect(TX* text,MESSAGEID* mid);
  6170. BOOL configtxDel(MESSAGEID* mid);
  6171. //
  6172. void TXAPI_(615) txProfileAdd(TX* text);
  6173. BOOL TXAPI_(616) txProfileLoad(TX* text,PROFILEDATA* pLoad);    //WZ4.00Ee 010412 引数をPROFILE*から変更。
  6174. //
  6175. #if !__TXC__
  6176. TX* shconfigGetText(void);
  6177. void shconfigInit(void);
  6178. BOOL shconfigWriteConfigshare(void);
  6179. BOOL shconfigWriteTextconfigshare(TX* text);
  6180. void shconfigSaveAtEdited(void);
  6181. void shconfigTerm(void);
  6182. //
  6183. void configtxMakeList(LPVOID dst,UINT mode);
  6184. BOOL configtxUpdown(MESSAGEID* mid,BOOL fDown,UINT mode);
  6185. BOOL configtxIsTml(MESSAGEID* mid);
  6186. MESSAGEID* configtxSearchGetMid(mchar* szName,MESSAGEID* mid);
  6187. LPVOID configtxSearchMid(MESSAGEID* mid);
  6188. void textcfgWriteAllModal(void);
  6189. void textcfgReadAll(void);
  6190. void shconfigReadTextconfigshare(TX* text);
  6191. //
  6192. BOOL histLoad(void);
  6193. BOOL histSave(void);
  6194. //
  6195. BOOL txConfigIsMine(TX* text,MESSAGEID* mid);
  6196. void txConfigtextRead(TX* text);
  6197. IFILE txConfigtextWrite(TX* text,IFILE adr);
  6198. IFILE txConfigtextDelete(TX* text,IFILE adr);
  6199. void txConfigtextGetOriginal(TX* text);
  6200. void txConfigextSetHeadlineStd(TX* text);
  6201. void txCopyConfigext(TX* text,TX* textTarget);
  6202. //
  6203. mchar** txCfszGetHeadline(TX* text,int iHeadline);
  6204. void txCfszFree(TX* text);
  6205. //
  6206. //WZ4.00Ee 010412 CFGLIST_xxxの定義値を変更。
  6207. #define CFGLIST_LISTBOX        MAKELIST_LISTBOX
  6208. #define CFGLIST_STRBLK        MAKELIST_STRBLK
  6209. #define CFGLIST_ALL            0x00010000    // 設定名の一覧をすべて出力
  6210. #define CFGLIST_NAME        0x00020000    // 名前のみを出力。拡張子で始まる名前は出力しない
  6211. #define CFGLIST_NAMETXT        0x00030000    // CFGLIST_NAMEと同じだが、TMLタグを使う設定は表示しない。//WZ4.00Ee 010409 
  6212. #define CFGLIST_NAMETXTIM    0x00040000    // CFGLIST_NAMETXTと同じだが、CとHTML等も表示しない。//WZ4.00Ee 010409 
  6213. #define CFGLIST_NAMETML        0x00050000    // CFGLIST_NAMEと同じだが、TMLタグを使う設定のみを表示//WZ4.00Ee 010409 
  6214. #define CFGLIST_EXT_NAME    0x00060000    // "拡張子" + " (名前)"を出力
  6215. //
  6216. #if WZFUNC_TEXTCFGBIN
  6217.     void shSetConfigChanged(mchar* szName);
  6218. #else
  6219.     #define shSetConfigChanged(szName)
  6220. #endif
  6221. void txSetGetCommonfont(TX* text,BOOL fSet);
  6222. void sbSetupConfigName(HSTRBLK sb);
  6223. void txConfigFlushFilekind(TX* text);
  6224. void txSetConfigDefaultDev(TX* text,mchar* szext);
  6225. #endif // !__TXC__
  6226.  
  6227. //##ファイル
  6228.  
  6229. BOOL TXAPI_(259) forkexW(wchar* szfilename,wchar* sw,UINT mode,TXFORKRESULT* pResult);
  6230.     // szfilenameのファイルをオープンします。
  6231.     // szfilenameにスイッチ指定を含むことはできません
  6232.     // 空白を含むファイル名もszfilenameにそのまま指定できます
  6233.     // szfilenameは""で括ってあっても構いません
  6234.     // szswに、起動オプションを指定できます。
  6235.     // オープンできたらTRUE
  6236.     // 既にオープンされていたらその窓をアクティブにしてFALSE、
  6237.     // オープンできなかったらFALSEを返します。
  6238.     // modeにはTXFORK_XXXを指定します。_text.hを参照してください。
  6239.     #define TXFORK_NODISP            0x0001    // ウィンドウを表示しない
  6240.     #define TXFORK_CLOSE_NULL        0x0002    // 現在のtextが無題ファイルで内容が空なら閉じる
  6241.     #define TXFORK_CLOSE_TEXT        0x0004    // 現在のtextを強制的に閉じる
  6242.     #define TXFORK_FORKWZ_ENABLE    0x0008    // 高速オープンができなければ、
  6243.                                             // 別WZを起動することも検討する
  6244.     #define TXFORK_FORKWZ            0x0010    // 別WZを起動してオープンする
  6245.                                             // TXFORK_REPLACE_NULLが指定されている場合、
  6246.                                             // TXFORK_REPLACE_NULLができれば別WZは起動しない
  6247.     #define TXFORK_SYNC                0x0020    // (未完成です)
  6248.                                             // 返り値は、szfilenameの窓のhwndbase。
  6249.                                             // オープンできなかったらNULL
  6250.                                             // 別WZを起動してオープンした場合は、
  6251.                                             // オープン処理が終わるまで待つ。
  6252.     #define TXFORK_ENABLE_MULTI        0x0080    // szfilenameが既にオープンされていても
  6253.                                             // 構わずオープンする。
  6254.     #define TXFORK_REPLACE_NULL        0x0100    // 現在のtextが無題ファイルで内容が空なら
  6255.                                             // 閉じて再利用する
  6256.     #define TXFORK_REPLACE_TEXT        0x0200    // 現在のtextを強制的に閉じて
  6257.                                             // 再利用する
  6258. BOOL TXAPI_(260) forkstdW(wchar* szfilename,wchar* sw);
  6259. BOOL TXAPI_(781) forkstd(mchar* szfilename,mchar* szsw);
  6260. BOOL TXAPI_(955) forkstdPrimW(wchar* wszfilename,wchar* wszsw,int modeFileOpen);    //WZ3.90F 980820 
  6261. //
  6262. BOOL TXAPI_(257) TXHIGH txSave(TX* text);
  6263. BOOL TXAPI_(258) TXHIGH txSaveToW(TX* text,wchar* wszfilename);
  6264. BOOL TXAPI_(805) TXHIGH txSaveTo(TX* text,mchar* szfilename);
  6265. BOOL TXAPI_(266) txuiSave(TX* text);
  6266. BOOL TXAPI_(267) txuiSaveAs(TX* text);
  6267. BOOL TXAPI_(268) txuiSaveAsVz(TX* text);
  6268. BOOL TXAPI_(269) txuiSaveTo(TX* text);
  6269. BOOL TXAPI_(271) txuiClose(TX *textClose);
  6270. BOOL TXAPI_(264) txuiCloseAllEvery(TX* text);
  6271. int txuiCloseEvery(TX* text,HWND hwndbase);
  6272. void TXAPI_(265) txQuit(TX* text);
  6273. BOOL TXAPI_(274) txuiReopenInternal(TX* text);
  6274. BOOL TXAPI_(275) txReopenInternalExW(TX* text,wchar* szfilenameNew,BOOL fJumpOld,CMDLINECONTEXT* cc);
  6275.     #define RIEX_JUMPOLD            0x01
  6276. BOOL TXAPI_(276) txuiFileOpen(TX* text);
  6277. BOOL TXAPI_(277) txuiFileOpenVz(TX* text);
  6278. //
  6279. TX* TXAPI_(254) txAllocText(DWORD mode);
  6280.     #define textalloc()    txAllocText(0)    //PWZ2BETA0.3 980519 
  6281. void TXAPI_(255) txFreeText(TX* text);
  6282. TX* TXAPIBASE TXAPI_(96) textopenW(wchar* wszfilename);
  6283. TX* TXAPIBASE TXAPI_(97) textopen(mchar* szfilename);
  6284.     #define textnew()    textopen(NULL)    //PWZ2BETA0.4 980610 
  6285. TX* TXAPIBASE TXAPI_(916) textopenExW(wchar* wszfilename,UINT mode);    //WZ4.00Bm 990928 new
  6286. TX* TXAPIBASE TXAPI_(917) textopenEx(mchar* szfilename,UINT mode);    //WZ4.00Bm 990928 new
  6287.     #define TXO_KCAUTO        0x00000001    // 文字コードを自動判別
  6288.     #define TXO_CRAUTO        0x00000002    // 改行コードを自動判別
  6289.     #define TXO_KCAUTOMODAL    0x00000004    // 設定に従って文字コードを自動判別
  6290.     #define TXO_CRAUTOMODAL    0x00000008    // 設定に従って改行コードを自動判別
  6291.     #define TXO_LINED_0        0x00000010    // fLineDをクリアして開く
  6292.     #define TXO_TML            0x00000020    // TMLファイルとして開く
  6293. TX* TXAPI_(861) textFrameOpenEx(mchar* szfilename,mchar* szsw);
  6294.     #define textFrameOpen(szfilename) textFrameOpenEx(szfilename,NULL)
  6295. void TXAPIBASE TXAPI_(98) textclose(TX* text);
  6296. BOOL TXAPI_(924) txuiIsClose(TX* text);
  6297. //
  6298. BOOL TXAPI_(256) txuiGetOpenFileNameW(TX* text,wchar wszfilename[CCHPATHNAME],wchar* wszCaption,TXOFN_ARG* arg);
  6299. BOOL TXAPI_(807) txuiGetOpenFileName(TX* text,mchar szfilename[CCHPATHNAME],mchar* szCaption,TXOFN_ARG* arg);
  6300. //
  6301. BOOL TXAPI_(949) txAutosaveAtOpenEx(TX* text,BYTE autosaveAtOpen);
  6302. BOOL TXAPI_(950) txGetBackupFilenameW(TX* text,wchar* wszfilename,wchar dst[CCHPATHNAME]);
  6303. //
  6304. void TXAPI_(952) txFileLockModal(TX* text);
  6305. BOOL TXAPI_(953) txFileUnlock(TX* text);
  6306. BOOL TXAPI_(954) txFileLoadAllUnlock(TX* text);
  6307. //
  6308. #if !__TXC__
  6309. BOOL txuiGetOpenFileNameHtml(TX* text,mchar szfilename[CCHPATHNAME],mchar* szmask);
  6310. BOOL txuiFileOpenPrim(TX* text,int modeFileOpen,TXOFN_ARG* arg);
  6311. BOOL TXAPI txuiFileOpenReadVz(TX* text);
  6312. BOOL txuiProject(TX* text,int mode);
  6313. void txProjectOpen(TX* text);
  6314. //
  6315. BOOL txSaveEh(TX* text);
  6316. BOOL txuiSaveMacroFile(TX* text);
  6317. void txCheckFiletimeActive(TX* text);
  6318. BOOL txConvertForSaveAs(TX* text,int modeSaveAs,wchar* wszfilename,BOOL* pfFileout);
  6319. //
  6320. BOOL txuiConfirmNewfile(TX* text,CMDLINECONTEXT* pcc,wchar* wszfilename);
  6321. BOOL TXAPI txOpenMail(TX* text,mchar* szMailAddress);
  6322. void txOpenProcFrameText(TX* text,CMDLINECONTEXT* pcc);
  6323. void txOpenNewInstance(TX* text,BOOL fPost);
  6324. void txSetImeAtOpen(TX* text);
  6325. void txNew(TX* text,BOOL fNewProcess);
  6326. BOOL txuiNew(TX* text);
  6327. void txQuitPost(TX* text);
  6328. //
  6329. BOOL txAutosaveGetOverwrite(TX* text);
  6330. #define txAutosaveGetBackup(text)    (!txAutosaveGetOverwrite(text))    //PWZ2BETA0.3 980510 new
  6331. //
  6332. void txSetFileShare(TX* text,int modeFileShare);
  6333. void SetReadAll(TX* text);
  6334. BOOL TXHIGH txReadAll(TX* text);
  6335. //
  6336. BOOL fileIsWztext_W(wchar* wszfilename);    // for WZ3 wz文書ファイル
  6337. #endif // !__TXC__
  6338.  
  6339. //##IBUFF操作
  6340.  
  6341. IFILE TXAPI_(650) TXHIGH txIfileGetParaTop(TX* text,IFILE ifile);
  6342. IFILE TXAPI_(651) TXHIGH txIbuffToIfile(TX* text,IBUFF ibuff);
  6343. IBUFF TXAPI_(652) TXHIGH txIfileToIbuff(TX* text,IFILE ifile);
  6344. IBUFF TXAPI_(653) TXHIGH txGetGapSize(TX* text);
  6345. IBUFF TXHIGH txIbuffGetGapTop(TX* text);
  6346. IBUFF TXHIGH txIbuffGetGapEnd(TX* text);
  6347. IBUFF TXAPI_(654) TXHIGH txIbuffGetCurParaTop(TX* text);
  6348. IBUFF TXAPI_(655) TXHIGH txIbuffGetChartop(TX* text,IBUFF ibuff);
  6349. IBUFF TXAPI_(656) TXHIGH txIbuffGetPrevcharIbuff(TX* text,IBUFF ibuff);
  6350. IBUFF TXAPI_(657) TXHIGH txfIbuffGetChartop(TX* text,IBUFF ibuff);
  6351. IBUFF TXAPI_(658) TXHIGH txfIbuffGetPrevcharIbuff(TX* text,IBUFF ibuff);
  6352. IBUFF TXAPI_(659) TXHIGH txfIbuffFlushOffset(TX* text,IBUFF ibuffChartop,IBUFF offset);
  6353. IBUFF TXAPI_(660) TXHIGH txIbuffFlushOffset(TX* text,IBUFF ibuffChartop,IBUFF offset);    //XZ0.1 990524 (int offset) -> (IBUFF offset)
  6354. BOOL TXAPI_(661) txBuffCheckInsert(TX* text,DWORD size);
  6355. BOOL TXAPI_(662) txIbuffIsParaTop(TX* text,IBUFF ibuff);
  6356. BOOL TXAPI_(663) txIbuffIsCharTop(TX* text,IBUFF ibuff);
  6357. IBUFF TXAPI_(664) txIbuffGetCrTop(TX* text,IBUFF ibuff);
  6358. IBUFF TXAPI_(665) txIbuffGetParaTop(TX* text,IBUFF ibuff);
  6359. BOOL TXAPI_(666) txIbuffIsParaEnd(TX* text,IBUFF ibuff);
  6360. BOOL TXAPI_(1135) txIbuffIsEof(TX* text,IBUFF ibuff);    //WZ4.00Ec 010207 TXAPI化
  6361. IBUFF TXAPI_(667) txIbuffGetParaEnd(TX* text,IBUFF ibuff);
  6362. IBUFF txIbuffGetParaEndLimit(TX* text,IBUFF ibuff,IBUFF maxlen);
  6363. IBUFF TXAPI_(1087) txIbuffGetParaContentEnd(TX* text,IBUFF ibuff);
  6364. mchar* TXHIGH txIbuffGetParaAlloc(TX* text,IBUFF ibuff);
  6365. IBUFF TXAPI_(1093) txIbuffGetPrevPara(TX* text,IBUFF ibuff);
  6366. IBUFF TXAPI_(668) txIbuffGetNextPara(TX* text,IBUFF ibuff);
  6367. #define txIfileGetNextPara(text,ifile)    txIbuffToIfile(text,txIbuffGetNextPara(text,txIfileToIbuff(text,ifile)))
  6368. // IFILEの文字サイズを取得(CHAR_TXF対応)
  6369. #define txIfileGetCharsize(text,ifile) txGetCharSize(text,txIfileToIbuff(text,ifile))
  6370. BOOL TXAPI_(670) txIbuffIsTop(TX* text,IBUFF ibuff);
  6371. BYTE TXAPI_(671) txIbuffGetPrevByte(TX* text,IBUFF ibuff);
  6372. BOOL TXAPI_(982) txIbuffIsUrl(TX* text,IBUFF ibuff);
  6373. BOOL TXAPI_(983) txIbuffJumpLink(TX* text,IBUFF ibuff);
  6374. TXCHAR TXHIGH TXAPI_(1094) txIbuffGetChar(TX* text,IBUFF ibuff);
  6375.  
  6376. #if !__TXC__
  6377. IBUFF txIbuffFromNpara(TX* text,NPARA npara);    //WZ4.00Bj 990824 new
  6378. IBUFF txIbuffFromNparaEx(TX* text,NPARA npara,IBUFF ibuffStart,NPARA nparaStart);
  6379. NPARA txIbuffGetNpara(TX* text,IBUFF ibuff);
  6380. IBUFF TXHIGH txIbuffGetTextEnd(TX* text);
  6381. IBUFF txIfileGetTop(TX* text);
  6382. IBUFF txIbuffFromLy(TX* text,int ly,IBUFF* pCurysize);
  6383. BOOL txIbuffIsNspace(TX* text,IBUFF ibuff,int n);
  6384. NPARA GetNparaFromOffset(TX* text,IBUFF offset);
  6385. #endif // !__TXC__
  6386.  
  6387. //##アンドゥ/世代管理
  6388.  
  6389. BOOL TXAPI_(210) txUndo(TX* text);
  6390. BOOL TXAPI_(211) txRedo(TX* text);
  6391. BOOL TXAPI_(332) TXHIGH_THROUGH txUndoPara(TX* text);
  6392. BOOL TXAPI_(333) txuiGene(TX* text);
  6393. void TXAPI_(1068) txUndoPackStart(TX* text);
  6394. BOOL TXAPI_(1069) txUndoPackEnd(TX* text);
  6395. #if !__TXC__
  6396. BOOL undoGetEditAble(TX* text);
  6397. void undoInit(TX* text);
  6398. void undoTerm(TX* text);
  6399. void undoAddDeleteSelect(TX* text,DWORD address,DWORD size);
  6400. void undoAddDelete(TX* text,DWORD sizedelete);
  6401. void undoAddInsert(TX* text,IFILE address,LPVOID pinsert,DWORD sizeinsert,BOOL fMove);
  6402. void undoAddOpen(TX* text);
  6403. void undoAddCellFlush(TX* text,BOOL fStart);
  6404. BOOL undoSaveW(TX* text,wchar *wszfilename,FILETIME* ft,FILETIME* ft0);
  6405. BOOL undoClear(TX* text);
  6406. BOOL undoGetAble(TX* text);
  6407. BOOL redoGetAble(TX* text);
  6408. void undoAddAutoForm(TX* text,BOOL fEnd);
  6409. BOOL geneReadText(TX* textTarget,int igene,TX* text);
  6410. #endif // !__TXC__
  6411.  
  6412. //##メッセージ(RFC822)テキスト処理
  6413.  
  6414. BOOL TXAPI_(992) txMsghdrGetsetInt(TX* text,mchar* szHeader,int* data,BOOL fSet);
  6415. BOOL TXAPI_(993) txMsghdrGetsetIntB(TX* text,mchar* szHeader,BYTE* data,BOOL fSet);
  6416. BOOL TXAPI_(994) txMsghdrGetsetIntW(TX* text,mchar* szHeader,WORD* data,BOOL fSet);
  6417. void TXAPI_(995) txMsghdrGetsetIntInit(TX* text,mchar* szHeader,int initdata,int* data,BOOL fSet);
  6418. void TXAPI_(996) txMsghdrGetsetIntInitB(TX* text,mchar* szHeader,int initdata,BYTE* data,BOOL fSet);
  6419. void TXAPI_(997) txMsghdrGetsetIntInitW(TX* text,mchar* szHeader,int initdata,WORD* data,BOOL fSet);
  6420. BOOL TXAPI_(998) txMsghdrGetsetString(TX* text,mchar* szHeader,mchar* szbuff,int cchbuff,BOOL fSet);
  6421. void TXAPI_(999) txMsghdrGetsetStringInit(TX* text,mchar* szHeader,mchar* szInit,mchar* szbuff,int cchbuff,BOOL fSet);
  6422. BOOL TXAPI_(1127) txMsghdrGetsetStringW(TX* text,mchar* szHeader,wchar* szbuff,int wcchbuff,BOOL fSet);
  6423. BOOL txMsghdrGetsetAstring(TX* text,mchar* szHeader,mchar** paszText,BOOL fSet);
  6424. BOOL TXAPI_(1001) txMsghdrGetString(TX* text,mchar* szHeader,mchar* szDefault,mchar* szbuff,int cchbuff);
  6425. BOOL TXAPI_(1002) txMsghdrSet(TX* text,mchar* szHeader,mchar* szContent);
  6426. BOOL TXAPI_(1008) txMsghdrGetsetStrblk(TX* text,mchar* szHeader,HSTRBLK sb,BOOL fSet);
  6427.  
  6428. #if !__TXC__
  6429. // メッセージセパレータ
  6430. extern mchar _szMhCrlf[];    // "^H<mh>CRLF"
  6431. extern BYTE _lchMhCrlf;        // strlen(_szMhCrlf)
  6432. extern mchar _szMhPrim[];    // "^H<mh>"
  6433. extern BYTE _lchMhPrim;        // strlen(_lchMhPrim)
  6434. BOOL txIsCurMsgsepa(TX* text);
  6435. BOOL memIsMsgsepa(LPVOID p);
  6436. BOOL txMsgSearch(TX* text,mchar* szName);
  6437. #define isheaderspace(c)    ((c) == ' ' || (c) == CHAR_TAB)
  6438. int txMsghdrGetAlloc(TX* text,mchar* szHeader,mchar** pSz);
  6439. int txMsghdrGetAllocWithoutNull(TX* text,mchar* szHeader,mchar** pSz);
  6440. int txMsghdrGetAllocAlways(TX* text,mchar* szHeader,mchar** pSz);
  6441. int txMsghdrGetAllocMultiline(TX* text,mchar* szHeader,mchar** pSz);
  6442. int txMsghdrGet(TX* text,mchar* szHeader,mchar** pSz);
  6443. int txMsghdrGetInt(TX* text,mchar* szHeader,int intDefault);
  6444. BOOL txMsghdrGetStringW(TX* text,mchar* szHeader,wchar* szDefault,wchar* szbuff,int cchbuff);
  6445. BOOL txMsghdrSetInt(TX* text,mchar* szHeader,int data);
  6446. BOOL txMsghdrGetExist(TX* text,mchar* szHeader);
  6447. BOOL txMsghdrJumpHeader(TX* text,mchar* szHeader);
  6448. BOOL txMsghdrSetFiletimeWzdate(TX* text,mchar* szHeader,FILETIME* filetime);
  6449. BOOL txMsghdrSetChoice(TX* text,mchar* szHeader,int data,mchar** tsz);
  6450. int txMsghdrGetChoice(TX* text,mchar* szHeader,int intDefault,mchar** tsz);
  6451. DWORD txMsghdrGetBinary(TX* text,mchar* szHeader,LPVOID pData);
  6452. BOOL txMsghdrSetW(TX* text,mchar* szHeader,wchar* wszContent);
  6453. BOOL txMsghdrSetBinary(TX* text,mchar* szHeader,DWORD sizedata,LPVOID pdata);
  6454. BOOL TXHIGH txMsgJumpMsgTop(TX* text);
  6455. BOOL txMsghdrSetEx(TX* text,mchar* szHeader,mchar* szContent,int lchContent);
  6456. int txMsghdrGetContentMultiline(TX* text,int lchHeader,mchar** pSz);
  6457. BOOL txMsghdrDeleteMultiline(TX* text,mchar* szHeader);
  6458. BOOL txMsghdrSetTextbuff(TX* text,mchar* szHeader);
  6459. TEXTCHAR* txMsghdrGetTextbuff(TX* text,mchar* szHeader);
  6460. TEXTCHAR* TXHIGH txMsghdrGetsetTextbuff(TX* text,mchar* szHeader,BOOL fSet);
  6461. BOOL txMsghdrDelete(TX* text,mchar* szHeader);
  6462. BOOL TXHIGH txIbuffIsMsgsepa(TX* text,IBUFF ibuff);
  6463. #endif // !__TXC__
  6464.  
  6465. //##textを使ったMBXアクセス
  6466. //WZ4.00Ee 010410 new
  6467.  
  6468. TX* txMbxOpenW(wchar* wszfilename);
  6469. TX* txMbxOpen(mchar* szfilename);
  6470. BOOL TXAPI_(1139) txMbxClose(TX* text);
  6471. BOOL TXHIGH txMbxSearch(TX* text,MESSAGEID* mid);
  6472. BOOL TXHIGH txMbxSearchSubject(TX* text,mchar* szSubject);
  6473. BOOL txMbxSearchSubjectAdd(TX* text,mchar* szSubject);
  6474. BOOL TXHIGH txMbxJump(TX* text,int index);
  6475. BOOL TXHIGH txMbxJumpTop(TX* text);
  6476. BOOL TXHIGH txMbxNext(TX* text);
  6477. BOOL TXHIGH txMbxPrev(TX* text);
  6478. BOOL txMbxMsgDelete(TX* text);
  6479. BOOL txMbxMsgClear(TX* text);
  6480. BOOL TXHIGH txMbxMsgInsert(TX* text);
  6481. BOOL TXHIGH txMbxMsgAdd(TX* text);
  6482. BOOL TXHIGH txMbxMsgAddMid(TX* text,MESSAGEID* mid);
  6483. BOOL TXHIGH txMbxMsgAddSubject(TX* text,mchar* szSubject);
  6484. BOOL txMbxMsgMoveUp(TX* text);
  6485. BOOL txMbxMsgMoveDown(TX* text);
  6486. int txMbxMakeListPrim(TX* text,LPVOID dst,UINT mode);
  6487. #define MAKELIST_LISTBOX    0x00000001    // listboxに出力
  6488. #define MAKELIST_COMBOBOX    0x00000002    // comboboxに出力
  6489. #define MAKELIST_STRBLK        0x00000004    // strblkに出力
  6490. #define MAKELIST_MID        0x00000008    // messageidも出力
  6491. #define MAKELIST_GETAPP(mode)    ((mode) & 0xFFFF0000)    // MAKELIST_xxxの上位16bitはアプリケーションで使用可能
  6492. int txMbxMakeList(TX* text,HWND hctrl);
  6493. void txMbxFlushOld(TX* text);
  6494. TX* TXAPI_(1138) txMbxOpenWzapp(mchar* szName);
  6495. int ListBox_AddStringMid_A(HWND hwnd,mchar* szString,MESSAGEID* mid);
  6496. int ListBox_FindMid(HWND hwnd,MESSAGEID* mid);
  6497. MESSAGEID* ListBox_GetCurMid(HWND hwnd);
  6498. int ComboBox_AddStringMid_A(HWND hwnd,mchar* szString,MESSAGEID* mid);
  6499. int ComboBox_FindMid(HWND hwnd,MESSAGEID* mid);
  6500. MESSAGEID* ComboBox_GetCurMid(HWND hwnd);
  6501.  
  6502. //##初期化/オープン/クローズ
  6503.  
  6504. void TXAPI_(137) txInitText(TX* text);
  6505. BOOL TXAPI_(138) txSetFileNameW(TX* text,wchar* wszfilename);
  6506. BOOL TXAPI_(808) txSetFileName(TX* text,mchar* szfilename);
  6507. BOOL txSetFileNamePrimW(TX* text,wchar* wszfilename);
  6508. BOOL TXAPI_(139) txOpenText(TX* text);
  6509. BOOL TXAPI_(140) txClose(TX* text);
  6510. BOOL Init(TX* text,BOOL fTxDeleteText);
  6511. void txInitConfig(TX* text);
  6512. void txFreeColor(TX* text);
  6513. BOOL txCreateWindow(TX* text);
  6514. BOOL Exit(void);
  6515.  
  6516. //##TXF
  6517.  
  6518. BOOL TXAPI_(673) txfTagIsSingle(TEXTCHAR* pTag);
  6519. BOOL TXAPI_(674) txfTagIsChar(TEXTCHAR* pTag);
  6520. BOOL TXAPI_(675) txfTagIsEnd(TEXTCHAR* pTag);
  6521. BOOL TXAPI_(676) txfTagIsPara(TEXTCHAR* pTag);
  6522. BOOL TXAPI_(677) txfTagIsParaMulti(TEXTCHAR* pTag);
  6523. int TXAPI_(678) txfTagGetLch(TEXTCHAR* pTag);
  6524. TEXTCHAR* TXAPI_(679) txfTagGetName(TEXTCHAR* pTag);
  6525. BOOL TXAPI_(680) txfTagNameIs(TEXTCHAR* pName,TEXTCHAR* pTagname);
  6526. int txfTagNameGetLch(TEXTCHAR* pName);
  6527. BOOL TXAPI_(681) txfTagIsBeam(TEXTCHAR* pTag);
  6528. BOOL TXAPI_(682) txfTagAnalyze(TAGANA* ana,TEXTCHAR* pTag);
  6529. int TXAPI_(683) txfTagInsert(TX* text,TAGANA* ana);
  6530. int TXAPI_(684) txfTagInsertEx(TX* text,TAGANA* ana,TEXTCHAR* szAtr);
  6531. void TXAPI_(685) txfTagInsertBeam(TX* text,int lx);
  6532. void TXAPI_(686) txfTagnestFree(TX* text);
  6533. void TXAPI_(687) txfTagnestNextFree(TX* text);
  6534. TAGNEST* TXAPI_(688) txfTagnestSearch(TX* text,TAGANA* ana,UINT mode);
  6535. TAGNEST* TXAPI_(689) txfTagnest(TX* text,TEXTCHAR* pTag,int mode);
  6536. mchar* txfTagSkip(mchar* p);
  6537. void TXAPI_(690) txfSplit(TX* text);
  6538. void TXAPI_(691) txfFlushTagAtInsert(TX* text,IFILE address,IFILE cbClip);
  6539. int TXAPI_(692) txfGetDispString(TEXTCHAR* pTag,TEXTCHAR szbuff[CCHWORD]);
  6540. void TXAPI_(693) txfClearCharatr(TX* text);
  6541. void TXAPI_(694) txfClearCharatrArea(TX* text,IFILE* pTop,IFILE* pEnd);
  6542. void TXAPI_(695) txfCharatrEx(TX* text,TEXTCHAR* szTag,TEXTCHAR* szAtr);
  6543.     #define TXFCHARATR_CLEAR    ((TEXTCHAR*)1)
  6544. void TXAPI_(696) txfParaatrEx(TX* text,TEXTCHAR* szTag,TEXTCHAR* szAtr,int chTxftag);
  6545.     #define TXFPARAATR_CLEAR    ((TEXTCHAR*)1)
  6546. BOOL TXAPI_(697) txfRightChartop(TX* text);
  6547. BOOL TXAPI_(698) txfRightChartopTxf(TX* text);
  6548. BOOL TXAPI_(699) txfDeleteChar(TX* text);
  6549. BOOL TXAPI_(700) txfDeleteChartag(TX* text);
  6550. BOOL TXAPI_(701) txfDeleteChartagPrev(TX* text);
  6551. BOOL TXAPI_(702) txfLeftChartail(TX* text);
  6552. BOOL TXAPI_(703) txfLeftChartailEx(TX* text,BOOL fStopParaTag);
  6553. BOOL TXAPI_(704) txfLeftChartailTxf(TX* text);
  6554. BOOL TXAPI_(705) txfLeftChartop(TX* text);
  6555. BOOL TXAPI_(706) txfLeftChartopTxf(TX* text);
  6556. IBUFF TXAPI_(707) txfDeleteNull(TX* text);
  6557. IBUFF TXAPI_(708) txfDeleteNullTxf(TX* text);
  6558. void TXAPI_(709) txfUiInsertTable(TX* text);
  6559. BOOL TXAPI_(710) txfUiInsertImg(TX* text);
  6560. void TXAPI_(711) txfImgAnalyze(TX* text,TEXTCHAR* pTag,IMGATR* atr);
  6561. void TXAPI_(712) txfImgAnalyzeFree(TX* text,IMGATR* atr);
  6562. void TXAPI_(713) txfImgSet(TX* text,IMGATR* atr);
  6563. void imgatrToString(IMGATR* atr,TEXTCHAR szAtr[CCHPATHNAME * 2]);
  6564. TEXTCHAR* TXAPI_(714) txfCellGetLeft(TX* text);
  6565. void TXAPI_(715) txfCellAnalyze(TX* text,TEXTCHAR* pTag,CELLATR* atr);
  6566. void TXAPI_(716) txfCellSet(TX* text,CELLATR* atr);
  6567. BOOL TXAPI_(717) txfCellProperty(TX* text);
  6568. BOOL TXAPI_(718) txfCellFlush(TX* text);
  6569. BOOL TXAPI_(1084) txfCellGetExist(TX* text);
  6570. void TXAPI_(719) txfIndentInc(TX* text);
  6571. void TXAPI_(720) txfIndentDec(TX* text);
  6572. BOOL TXAPI_(721) txfIsCurParaTop(TX* text);
  6573. void TXAPI_(722) txfBeam(TX* text);
  6574. int TXAPI_(723) txfGetLcxLeft(TX* text,IBUFF offset);
  6575. BOOL TXAPI_(724) txfProperty(TX* text);
  6576. BOOL TXAPI_(725) txfCharProperty(TX* text);
  6577. BOOL TXAPI_(726) txfParaProperty(TX* text);
  6578. BOOL txfParaPropertyEx(TX* text,BOOL fSimple);
  6579. void TXAPI_(727) txfParaOp(TX* text,int idm);
  6580. void TXAPI_(728) txfCharOp(TX* text,int idm);
  6581. void TXAPI_(729) txfGetCharProperty(TX* text,CONTEXT_CHARPROPERTY* context);
  6582. void TXAPI_(730) txfBeamFlush(TX* text,BOOL fAtInsertBeam);
  6583. BOOL txfConvert(TX* text,int modeSaveAs,HANDLE hf,TX* textQuote);
  6584. int txfParaTagsGetLch(mchar* p);
  6585. mchar* TXAPI_(1063) txfGetSubject(TX* text,mchar* buff,int cch);
  6586. int TXAPI_(947) txfGetIndent(TX* text,BOOL fDelete);
  6587. BOOL txfGetTagExist(TX* text);
  6588. TEXTCHAR* TXAPI_(731) atrnext(TEXTCHAR* p);
  6589. TEXTCHAR* atrsubnext(TEXTCHAR* p);
  6590. int TXAPI_(732) atrlen(TEXTCHAR* pAtr);
  6591. TEXTCHAR* TXAPI_(733) atrAddInt(TEXTCHAR* dst,TEXTCHAR* szAtr,int data);
  6592. TEXTCHAR* TXAPI_(734) atrAddBool(TEXTCHAR* dst,TEXTCHAR* szAtr,BOOL f);
  6593. TEXTCHAR* TXAPI_(735) atrAddString(TEXTCHAR* dst,TEXTCHAR* szAtr,TEXTCHAR* szString);
  6594. TEXTCHAR* TXAPI_(736) atrAddStringW(TEXTCHAR* dst,TEXTCHAR* szAtr,wchar* wszString);
  6595. TEXTCHAR* TXAPI_(737) atrAddAlign(TEXTCHAR* dst,TEXTCHAR* szAtr,int align,int alignDefault);
  6596. TEXTCHAR* TXAPI_(738) atrAddLine(TEXTCHAR* dst,TEXTCHAR* szAtr,int line,int lineDefault);
  6597. BOOL TXAPI txfAtrAddString(TX* text,TEXTCHAR* szAtr,TEXTCHAR* szString);
  6598. void TXHIGH txfAtrAddBool(TX* text,mchar* szAtrName,BOOL f);
  6599. int TXAPI_(739) txfAtrGetInt(TEXTCHAR* pName,TEXTCHAR* szAtr,int defaultInt);
  6600. BOOL TXAPI_(740) txfAtrGetBool(TEXTCHAR* pName,TEXTCHAR* szAtr);
  6601. TEXTCHAR* TXAPI_(741) txfAtrGetString(TEXTCHAR* pName,TEXTCHAR* szAtr,TEXTCHAR* szDefault);
  6602. mchar* txfAtrGetStringEx(TEXTCHAR* pName,TEXTCHAR* szAtr,TEXTCHAR* szDefault,mchar* szBuff,int cchBuff);
  6603. int TXAPI_(742) txfAtrGetAlign(TEXTCHAR* pName,TEXTCHAR* szAtr,int alignDefault);
  6604. int TXAPI_(743) txfAtrGetLine(TEXTCHAR* pName,TEXTCHAR* szAtr,int lineDefault);
  6605. void TXAPI_(744) txfAtrGetFont(TEXTCHAR* pName,FONTSET* fontset,TX* text);
  6606. void TXAPI_(745) txfAtrSetFont(TEXTCHAR szAtr[256],FONTSET* fontset);
  6607. IBUFF TXAPI_(746) TXHIGH txfTagSearchPrev(TX* text,IFILE adr0,TAGANA* anaFind);
  6608. void TXAPI_(747) txfFlushXAlign(TX* text);
  6609. #define txfTagIsUser(p)                            (p[0] == 'u' && p[1] == '_')
  6610. #define txfTagNameIsEx(pBuff,pTagname,lchTagname)    (!textstrncmp(pBuff,pTagname,lchTagname) && !IschTagname(pBuff[lchTagname]))
  6611. // TAGID
  6612. #define TAG_INDENT    1
  6613. #define TAG_H        2
  6614. #define TAG_ALIGN    3
  6615. #define TAG_B        4
  6616. #define TAG_I        5
  6617. #define TAG_U        6
  6618. #define TAG_CLM        7
  6619. int TXAPI_(748) txfTagidInsert(TX* text,int id,int arg1,int arg2);
  6620. extern TEXTCHAR* _tszTag[];
  6621. #define txfTagidToString(id)    (_tszTag[id])
  6622. void TXAPI_(749) txfBeamAnalyze(TX* text,TEXTCHAR* pTag,BEAMATR* atr);
  6623. UINT TXAPI_(909) txfTagRemove(mchar* pMem,UINT size0);
  6624. void TXAPI_(960) txfTagSwitchDisp(TX* text);
  6625. DWORD TXAPI_(981) txfIbuffIsLink(TX* text,IBUFF ibuff);
  6626. //txfFootnote
  6627. void TXAPI_(967) txfFootnoteFlushAll(TX* text);
  6628. void TXAPI_(968) txfFootnoteOutput(TX* text);
  6629. void TXAPI_(969) txfFootnoteInsert(TX* text,int number,TX* text2);
  6630. int TXAPI_(970) txfTagFootnoteGetText(mchar* pTag,TX* text);
  6631. // texttop
  6632. typedef struct {
  6633.     IFILE adr;
  6634.     IFILE texttop;
  6635.     int ly;
  6636. } TEXTTOPEXIT;
  6637. void TXAPI_(1003) txResetTexttopEnter(TX* text,TEXTTOPEXIT* context);
  6638. void TXAPI_(1004) txResetTexttopExit(TX* text,TEXTTOPEXIT* context);
  6639. #if !__TXC__
  6640. int txfFootnoteFlushPara(TX* text,int number);
  6641. int txfTagInsertTag(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind);
  6642. int txfTagInsertWithAtr(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind,TEXTCHAR* szAtr);
  6643. BOOL txfProcDateGetString(TX* text,mchar* pName,mchar szBuff[CCHWORD]);
  6644. BOOL txfProcMequoteGetString(TX* text,mchar* pName,mchar szBuff[CCHWORD]);
  6645. int txBeamtabGetIndex(TX* text,IBUFF paratop,TEXTCHAR* pSrc);
  6646. int txBeamtabGetLx(TX* text,NPARA npara,int iTab,int lxNow);
  6647. BOOL txfAnchorJump(TX* text,DWORD anchor);
  6648. BOOL TXHIGH txfCellJumpClm(TX* text,int clm);
  6649. BOOL txfCellGetExistRear(TX* text);
  6650. void txInsertCell(TX* text);
  6651. void txfRowSetLineBottom(TX* text,int lineBottom);
  6652. void txfToHtml(TX* text);
  6653. void txfFromHtml(TX* text,UINT mode);
  6654. void txBeamtabFlushAll(TX* text);
  6655. void cellatrInit(CELLATR* atr);
  6656. void cellatrToString(CELLATR* atr,TEXTCHAR szAtr[80]);
  6657. void txfCellJumpTableTop(TX* text);
  6658. BOOL txfBeamGetExist(TX* text);
  6659. BOOL txfRowAdd(TX* text);
  6660. int txfCellGetRightX(TX* text);
  6661. int txfCellGetClm(TX* text);
  6662. BOOL txfCellIsCur(TX* text);
  6663. void txFlushMenuCheckAll(TX* text);
  6664. void txfInsertSf(TX* text,mchar* sf);
  6665. void txfCellFlushAll(TX* text);
  6666. void txfCharPropertyPrint(TX* text);
  6667. void txSetTml(TX* text);
  6668. BOOL txSetTmlModal(TX* text);
  6669. void TXHIGH txSetTexttop(TX* text,IFILE ifile);
  6670. void TXHIGH txSetTexttopCur(TX* text);
  6671. void txResetTexttop(TX* text);
  6672. void TXHIGH txFlushTexttopPrim(TX* text);
  6673. void txFlushTexttop(TX* text);
  6674. void txfFlushXAlign(TX* text);
  6675. BOOL txfAnchorContextHelp(wchar* szfilename,DWORD anchor,RECT* r);
  6676. BOOL txfUiFootnoteProperty(TX* text);
  6677. void txfHandleLcxInit(TX* text);
  6678. void txfGetParaProperty(TX* text,CONTEXT_PARAPROPERTY* context);
  6679. #endif // !__TXC__
  6680.  
  6681. //##HTML
  6682.  
  6683. #if !__TXC__
  6684. BOOL txuiHtmlInsertTable(TX* text);
  6685. void txHtmlCharOp(TX* text,int idm);
  6686. void txHelpOpenExtend(TX* text,int iHelp);
  6687. BOOL strhtmlTagIsA(mchar* p);
  6688. int strhtmlGetTagLch(mchar* sz);
  6689. UINT strhtmlIsCharRefer(mchar* p);
  6690. BOOL strhtmlTagIsHR(mchar* p);
  6691. HBITMAP strhtmlTagGetReduceHbitmap(TX* text,mchar* p,VALIGN* pValign);
  6692. mchar* strhtmlTagIsIMG(mchar* p);
  6693. #endif // !__TXC__
  6694.  
  6695. //##文字コード
  6696.  
  6697. #if !__TXC__
  6698. int kcDetectEx(TX* text,BOOL fInternal);
  6699. DIRECTORYATR* txFlushDirectoryAtr(TX* text);
  6700. BOOL kcFromTB(TX* text,int kc);
  6701. BOOL kcToTB(TX* text,int kc);
  6702. void kcToTBEx(TX* text,int kc);
  6703. int kcDetect(TX* text);
  6704. #endif // !__TXC__
  6705.  
  6706. //##見出し/アウトライン
  6707.  
  6708. //WZ4.00Bj 990823 TX-C:outline周りの実装を全面変更。TX-API outlineRegisterClass,outlineFlushTree,outlineFlushMemo,outlineFlushTargetNpara,outlineSaveEdited,dialogTree廃止。
  6709.  
  6710. #define WM_TV_NOTIFY            (WM_USER+950)    // NotifyCode        arg    //WZ4.00Bj 990823 new
  6711.     #define TVN_SETFOCUS                10
  6712.     #define TVN_RBUTTONUP                11
  6713.  
  6714. typedef struct {
  6715.     int offset;    // 段落先頭から特別見出内容までのオフセット
  6716.     int lch;    // 見出内容の長さ(見出し内容に\x00を含む場合、それも含めた長さなので注意)
  6717.     BYTE fHtmlNoTagend:1;    // HTMLで</Hn>が無かった?
  6718. } HEADLINE_INFO;    //WZ4.00Bj 990824 new
  6719.  
  6720. BOOL TXAPI_(597) txHeadlineChange(TX* text,int iHeadline);
  6721. int TXAPI_(600) txHeadlineMatch(TX* text);
  6722. BOOL TXAPI_(598) txHeadlineGetContent(TX* text,TXSTR sz);
  6723. BOOL TXAPI_(1092) txHeadlineGetContentEx(TX* text,mchar* szbuff,int cchbuff);
  6724. BOOL TXAPI_(837) txHeadlineSearchNext(TX* text);
  6725. BOOL TXAPI_(836) txHeadlineSearchPrev(TX* text);
  6726. int TXAPI_(669) txIbuffGetHeadline(TX* text,IBUFF ibuff,HEADLINE_INFO* res);    //WZ4.00Bj 990824 newarg:res
  6727. BOOL TXAPI_(1010) txHeadlineGet(TX* text,int iHeadline,mchar sz[CCHHEADLINE]);
  6728. int TXAPI_(938) txHeadlineGetLen(TX* text,int iHeadline);
  6729. // アウトライン
  6730. void TXAPI_(964) txolOpen(TX* text);
  6731. void TXAPI_(965) txolClose(TX* text);
  6732. void TXAPI_(966) txolFlush(TX* text);
  6733. #if !__TXC__
  6734. int headline_uistyle(HEADLINE_SET* context);
  6735. void txHeadlineFree(TX* text);
  6736. BOOL txHeadlineInit(TX* text);
  6737. BOOL txIbuffHeadlineGetContentPrim(TX* text,IBUFF ibuff,HEADLINE_INFO* res,mchar* szbuff,int cchbuff);    //WZ4.00Bj 990824 arg変更
  6738. void txHeadlineSetupMiseiri(TX* text);
  6739. BOOL txHeadlineJumpSameNestTop(TX* text,int nNest);
  6740. BOOL txHeadlineJumpSameNestEnd(TX* text,int nNest);
  6741. BOOL txHeadlineJumpSameNestTail(TX* text,int nNest);
  6742. BOOL txuiHeadlineChange(TX* text);
  6743. BOOL txuiHeadlineMap(TX* text);
  6744. BOOL txHeadlineSearchPrevEx(TX* text,int iHeadline);
  6745. BOOL txHeadlineSearchNextEx(TX* text,int iHeadline);
  6746. BOOL txHeadlineSearch(TX* text,mchar* szHeadline,int iHeadline);
  6747. BOOL txIbuffIsFunctionDefine(TX* text,IBUFF ibuff,HEADLINE_INFO* res);    //WZ4.00Bj 990824 newarg:res
  6748. BOOL txfIbuffIsHtmlLink(TX* text,IBUFF ibuff,mchar buff[CCHPATHNAME]);
  6749. //アウトライン
  6750. void txolOpenEx(TX* text,mchar* szCaption);
  6751. void txolFlushNpara(TX* text);
  6752. BOOL txolSyskeydown(TX* text,int wParam);
  6753. void txolAdjustNparaChange(TX* text,long nparaD);
  6754. int txolGetCxOutline(TX* text);
  6755. int txolGetOriginalCxHwndbase(TX* text);
  6756. void txolOnProcFrameText(TX* text);
  6757. void txolSetFontText(TX* text);
  6758. #endif // !__TXC__
  6759.  
  6760. //##印刷/FONTSET
  6761.  
  6762. void TXAPI_(750) txLpDispOutsideText(TX* text);
  6763. BOOL TXAPI_(751) txLpInit(TX* text);
  6764. void TXAPI_(752) txLpTerm(TX* text);
  6765. BOOL TXAPI_(753) txuiLpStyle(TX* text);
  6766. BOOL TXAPI_(754) txuiLprint(TX* text);
  6767. BOOL TXAPI_(756) txLpSwitchPreview(TX* text);
  6768. BOOL TXAPI_(757) txLprint(TX* text);
  6769. BOOL TXAPI_(759) txLpFlushBaseY(TX* text);
  6770. void TXAPI_(760) txLpFlushPage(TX* text);
  6771. void TXAPI_(987) txLpSetRateAuto(TX* text,int mode);
  6772. BOOL TXAPI_(988) txLpAddRate(TX* text,int d);
  6773. BOOL TXAPI_(989) txLpSetRate(TX* text,int pvRate);
  6774.  
  6775. #if !__TXC__
  6776.  
  6777. #if WZFUNC_PRINT
  6778.     int xLPtoDP(HDC hdc,int x);
  6779.     int yLPtoDP(HDC hdc,int y);
  6780.     int xLPadd1(HDC hdc,int x);
  6781.     int yLPadd1(HDC hdc,int y);
  6782.     int yLPsub1(HDC hdc,int y);
  6783.     int xLP(HDC hdc,int x);    //WZ3.90H 980917 
  6784.     int yLP(HDC hdc,int y);    //WZ3.90H 980917 
  6785.     int lpcxGetFrameLeft(TX* text,int iHeadline);
  6786.     int lpcxGetFrameRight(TX* text,int iHeadline);
  6787.     int lpcxGetFrameLeftRight(TX* text,int iHeadline);
  6788.     void txLpToolbarFlush(TX* text);
  6789.     BOOL txuiLpStyleDetail(TX* text);
  6790.     void txLpToolbarNotify(TX* text,int cmd);
  6791.     int lpdot(TX* text);
  6792. #else
  6793.     #define xLPtoDP(hdc,x)    (x)
  6794.     #define yLPtoDP(hdc,y)    (y)
  6795.     #define xLPadd1(hdc,x)    (x)
  6796.     #define yLPadd1(hdc,y)    (y)
  6797.     #define yLPsub1(hdc,y)    (y)
  6798.     #define xLP(hdc,x)        (x)
  6799.     #define yLP(hdc,y)        (y)
  6800.     #define lpcxGetFrameLeft(text,iHeadline)        (0)
  6801.     #define lpcxGetFrameRight(text,iHeadline)        (0)
  6802.     #define lpcxGetFrameLeftRight(text,iHeadline)    (0)
  6803.     #define txLpToolbarFlush(text)
  6804.     #define txuiLpStyleDetail(text)        (FALSE)
  6805.     #define txLpToolbarNotify(text,cmd)
  6806.     #define lpdot(text)        (1)
  6807. #endif
  6808. //
  6809. BOOL txuiLprintExec(TX* text);
  6810. void txLprintHeader(TX* text);
  6811. #if WZFUNC_PRINT
  6812.     int yToLy(TX* text,int y);
  6813.     int lyToY(TX* text,int ly);
  6814.     int lyGetCy(TX* text,int ly);
  6815. #else
  6816.     #define yToLy(text,y)            (((y) - text->nSpaceTop) / text->cyLine)
  6817.     #define lyToY(text,ly)            (text->nSpaceTop + (ly) * text->cyLine)
  6818.     #define lyGetCy(text,ly)        (text->cyLine)
  6819. #endif
  6820. //
  6821. int lpxToMmtext(TX* text,int lpx);
  6822. int mmtextToLpx(TX* text,int mmtext);
  6823. int txLpGetCyPaper(TX* text);
  6824. void txLpWriteMsghdr(TX* text,LPRINT* lp);
  6825. BOOL txLpReadMsghdr(TX* text,LPRINT* lp);
  6826. int txLpGetCxPaper(TX* text);
  6827. BOOL txLpConfigtextRead(TX* text);
  6828. void txLpConfigtextWrite(TX* text);
  6829. void lpSetDefaultConfig(LPRINT* lp);
  6830. BOOL txuiLpStyleSelect(TX* text);
  6831. //FONTSET
  6832. void fontsetSetText(TX* text,FONTSET* fontset);
  6833. void txFontsetGet(TX* text,FONTSET* fontset);
  6834. void fontsetFlush(TX* text,FONTSET* fontset);
  6835. void txFontsetSetBase(TX* text);
  6836. typedef struct {
  6837.     BOOL fGetLineSize;    //(in)    LSOP_GETLINESIZE?
  6838.     BOOL fLineOver;        //(out)    fGetLineSize時に折り返し幅を超えるのでこの文字の直前までをcurysizeとする?
  6839.     int src;            //(in)    fGetLineSize時にcurysize>0のチェックに使用
  6840.     int x;                //(i/o)    x座標
  6841.     int cxWidth;        //(in)    fGetLineSize時に折り返し幅のチェックに使用
  6842.     int cxRate;            //(i/o) 横幅の拡大縮小パーセント for <CXRATE>
  6843. } TXFPROC_LINESIZEOP_ARG;
  6844. void txfProcTag_LINESIZEOP(TX* text,TEXTCHAR* pTag,TEXTCHAR* pName,TXFPROC_LINESIZEOP_ARG* arg);
  6845. void headlinestyleSetDefaultFont(HEADLINESTYLE* style,int iHeadline,int lfHeight);
  6846. int pointsToLpx(LPRINT* lp,int points);
  6847. void lpstyleVerup(void);
  6848. MESSAGEID* lpstyleSubjectToMid(mchar* szSubject,MESSAGEID* mid);
  6849. BOOL lpstyleListCombobox(HWND hctrl,TX* text);
  6850. #endif // !__TXC__
  6851.  
  6852. //##MAILBASE
  6853. #if WZFUNC_MAILBASE
  6854. typedef struct tagMBEDIT {
  6855. // 元メッセージの情報
  6856.     WORD idMail;                    // このメールのID
  6857.     mchar szClass[CCHWORD];            // クラス名
  6858.     DWORD flags;                    // フラグ
  6859.         #define MBEDIT_MEMO    0x00000001
  6860. // ウィンドウ
  6861.     HWND hwndHeader;                // ヘッダウィンドウハンドル
  6862.     struct tagDIALOG* hd;            // dialogCreateするまでのワーク
  6863.     struct tagLIST* listMime;        // 添付ファイル
  6864. // コンテキスト
  6865.     TX* text;                        // 本文のテキスト
  6866.     FBOOL fDispHeader;                // ヘッダの表示?
  6867.     BYTE fMemoMode;                    // メモ編集モード?
  6868.     BYTE charset0;                    // オリジナルのcharset
  6869.     BYTE charset;                    // 
  6870.     struct tagMBCONTENTS* mbcont;    // 内容
  6871.     HSTRBLK sbHistKey;
  6872. // 引数/返り値
  6873.     int iddFocus;                    // 最初にフォーカスをセットするidm(0なら本文)
  6874. // MAILBASEの情報
  6875.     struct tagMAILBASE* mailer;        // MAILBASEコンテキスト
  6876.                                     // MAILBASEそのものの場合もあるし、
  6877.                                     // MAILBASEは別プロセスで、classにアクセスするための最低限の情報しかない場合もある。
  6878.     WORD fMailbaseAlloced:1;        // mailbaseはALLOCED?
  6879.     HWND hwndMailbase;                // MAILBASEのhwnd
  6880.     MESSAGEID midMailbase;            // MAILBASEのmid
  6881.     wchar wszAdrbook[CCHPATHNAME];    // アドレス帳のファイル名
  6882.     mchar lfFaceName[LF_FACESIZE];    // フォント名の指定
  6883.     SIGNED_BYTE lfHeight;            // フォントサイズ
  6884. } MBEDIT;
  6885. #endif
  6886.  
  6887. //##MAIL
  6888.  
  6889. #define MAILEDIT_USEEDIT    UNIX    // To,Cc,Subjectに常にEDITコントロールを使用?。UNIXだと調子が悪いのでこれを使う。
  6890.  
  6891. typedef struct tagMAILEDIT {
  6892.     HWND hwndMailer;        // メーラのhwnd
  6893.                             // 0: WZ MAIL EDITORではない
  6894.     WORD idMail;            // このメールのID
  6895.     BYTE modeMail;            // モード
  6896.         #define MODEMAIL_NEW    1    // 新規
  6897.         #define MODEMAIL_REPLY    2    // 返信
  6898.         #define MODEMAIL_EDIT    3    // 編集
  6899.         #define MODEMAIL_VIEW    4    // ビュー
  6900.         #define MODEMAIL_FORWARD    5    // 回送    //WZ4.00Dc 000326 new
  6901.     WZMAILEDITORFLAGS flags;
  6902. //
  6903.     HWND hwndMailheader;    // メールヘッダウィンドウ
  6904.     HWND hwndReferTo;        // "To:..."
  6905.     HWND hwndReferCc;        // "Cc:..."
  6906.     HWND hwndMenu;            // メニューボタン
  6907.     HWND hwndSend;            //WZ3.90I 981012 送信ボタン
  6908.     HWND hwndMime;            // 添付ファイル
  6909.     struct tagLIST* listMime;    // 添付ファイル
  6910.     mchar szBoundary[70];    // boundary
  6911.     mchar szReplytoFrom[70];//WCE1.01 980505 コメントや返信の場合のコメント先のメッセージの差出人の名前
  6912.     mchar szSubject[100];    // txDoCaption用に現在のSubject内容を入れておくバッファ
  6913.                             // fTML時は編集時のバッファも兼ねる
  6914.     BOOL fMailReserve;        // 現在の「保留」状態
  6915.     TX* text;                // 本文のテキスト
  6916.     int x;                    // hwndTo etc x
  6917.     int y;                    // for at init
  6918.     HFONT hfontControl;        // コントロールのフォントハンドル
  6919.     int cxCharControl;        // hfontControlのcxChar
  6920.     int cyCharControl;        // hfontControlのcyChar
  6921. #if MAILEDIT_USEEDIT
  6922.     HWND hwndTo;
  6923.     HWND hwndCc;
  6924.     HWND hwndSubject;
  6925. #endif
  6926.     RECT rTo;                // "To"ウィンドウの位置
  6927.     RECT rCc;                // "Cc"ウィンドウの位置
  6928.     RECT rSubject;            // "件名"ウィンドウの位置
  6929.     BYTE charset0;            //WZ3.90M 981129 オリジナルのcharset
  6930.     BYTE charset;            //WZ3.90M 981129 旧fEnglish
  6931.     FBOOL fDispHeader;        //WZ3.90I 981005 ヘッダの表示?
  6932. // Popup window
  6933.     HWND hwndPopup;            // popup "EDIT" window handle
  6934.     int idPopup;            // IDD_SUBJECT;
  6935. // for txDoCaption
  6936.     BOOL fSaved;            // 保存したかどうか?
  6937.     wchar wszCaption[80];    // for txGetTitleFilenameW buffer
  6938. } MAILEDIT;
  6939.  
  6940. #if !__TXC__
  6941. void txConvertMailTemplateToPlain(TX* text,TX* textDest,TX* textQuote);
  6942. HWND hwndMailerGetStatusbar(HWND hwnd);
  6943. void mailerOpenMenuMouseRMessage(TX* text);
  6944. mchar* memJisToKc(mchar* sz,int kc);    //WZ4.00Bg 990720 
  6945. BOOL memJisToSjis(mchar* sz);
  6946. BOOL _lwriteEncodeBase64(HANDLE hfDst,HANDLE hfSrc,IFILE size);
  6947. void txMailheaderClose(TX* text);
  6948. BOOL txMaileditorAttachW(TX* text,wchar* wszfilename,BOOL fNote);
  6949. void txMaileditSetDateNow(TX* text);
  6950. LRESULT txMaileditNotify(TX* text,UINT message,LPARAM lParam);
  6951. int maileditpopupOpenSubject(MAILEDIT* mailedit);
  6952. void maileditpopupOpenLastfocus(MAILEDIT* mailedit);
  6953. void maileditpopupClose(MAILEDIT* mailedit);
  6954. BOOL maileditOnSyskeydown(TX* text,WPARAM wParam);
  6955. BOOL maileditOnTab(TX* text);
  6956. BOOL txuiCheckMailedit(TX* text,BOOL fUi);
  6957. void txMailheaderRead(TX* text);
  6958. void mailheaderSetWindowPos(TX* text,RECT* r);
  6959. //MIME
  6960. typedef struct {
  6961.     int lchTopReturn;        // 0以外ならlchTopReturn文字ごとに改行を入れる(先頭行のみ)
  6962.                             // 0ならlchReturnを使う
  6963.     int lchTopIndent;        // 0以外なら先頭に空白を入れる(先頭行のみ)
  6964.                             // 0なら入れない
  6965.     int lchReturn;            // 0以外ならlchReturn文字ごとに改行を入れる
  6966.     int lchIndent;            // 0以外なら改行を入れた後に空白を入れる
  6967.     BOOL fDataEndReturn;    // データの末尾に改行を2つ入れる
  6968. } BASE64ENCODEARG;
  6969. BOOL txBase64Encode(TX* text,wchar* wszfilename);
  6970. BOOL txBase64Decode(TX* text,wchar* wszfilename);
  6971. mchar* memBase64Decode(mchar* buff,int lch,int* plchResult);
  6972. mchar* memBase64Encode(mchar* buff,int lch,int* plchResult,BASE64ENCODEARG* arg);
  6973. BOOL txDecodeBase64(TX* text);
  6974. #if WZFUNC_EMAIL
  6975. BOOL txConfigIsMail(TX* text);
  6976. BOOL txConfigIsMailPreview(TX* text);
  6977. BOOL txConfigIsNoteEditor(TX* text);
  6978. #endif
  6979. #endif // !__TXC__
  6980.  
  6981. //##PARAATR
  6982.  
  6983. #if !__TXC__
  6984. PARAATR* txParaatrGet(TX* text,NPARA npara);
  6985. void txParaatrTerm(TX* text);
  6986. IBUFF txNparaGetParaTop(TX* text,IBUFF ibuff,NPARA npara);
  6987. BOOL txNparaGetApfuBeamtabInfinity(TX* text,NPARA npara);
  6988. BOOL txParaatrClearNlineAll(TX* text);
  6989. BOOL txParaatrClearEditAll(TX* text);
  6990. BOOL txParaatrGetEdit(TX* text,NPARA npara);
  6991. //
  6992. IBUFF txGplGetParaoff(TX* text,NPARA npara);
  6993. void txGplDebug(TX* text);
  6994. //
  6995. BOOL txPsbCounting(TX* text);
  6996. void txPsbCalcOnIdle(TX* text);
  6997. //
  6998. int txCparaGet(TX* text,IBUFF curpara,NPARA npara);
  6999. void txParaatrClearCparaAll(TX* text);
  7000. //
  7001. WORD* txParaatrbeamGet(TX* text,NPARA npara,int iTab);
  7002. UINT txBeamtabGetOffset(TX* text,IBUFF paratop,int iTab);
  7003. BOOL txBeamtabSetLx(TX* text,NPARA npara,int iTab,int lx);
  7004. BOOL txBeamtabGetExist(TX* text,IBUFF paratop);
  7005. int txBeamtabGetCount(TX* text,IBUFF paratop);
  7006. BOOL txBeamtabFlushScreen(TX* text);
  7007. void txParaatrbeamClearAll(TX* text);
  7008. #endif // !__TXC__
  7009.  
  7010. //##その他
  7011.  
  7012. //罫線
  7013. BOOL TXAPI_(645) txKeisenIsNeedOp(TX* text,int op);
  7014. mchar* TXAPI_(646) txKeisenGetLeft(TX* text);
  7015. BOOL TXAPI_(647) txuiKeisenInsertTable(TX* text);
  7016. BOOL TXAPI_(648) txKeisenProperty(TX* text);
  7017. BOOL TXAPI_(649) txKeisenOp(TX* text,int op,mchar* szstr);
  7018. //バイナリ編集
  7019. BOOL TXAPI_(927) txIsCurDigitH(TX* text);
  7020. BOOL TXAPI_(928) txIsCurDigitL(TX* text);
  7021. void TXAPI_(929) txSetCurDigitH(TX* text);
  7022. void TXAPI_(930) txSetCurDigitL(TX* text);
  7023. //ime    //WZ4.00Ca 991203 txImeGetOpen,txImeSetOpenが使えなくなっていたのを修正。
  7024. #define txImeGetOpen(text)            wndImeGetOpen(text->hwndtext)        //WZ3.90L 981121 
  7025. #define txImeSetOpen(text,fOpen)    wndImeSetOpen(text->hwndtext,fOpen)    //WZ3.90L 981121 
  7026.  
  7027. #if !__TXC__
  7028. //txvar
  7029. BOOL txVarSetString(TX* text,mchar* szName,mchar* szContent);
  7030. mchar* txVarReadString(TX* text,mchar* szName,mchar* szDefault);
  7031. //hook
  7032. void txAddHookWndproctext(TX* text,WNDTEXTHOOKPROC lpHook);
  7033. void txAddHookWndprocbase(TX* text,WNDTEXTHOOKPROC lpHook);
  7034. void txAddHookWndproc(TX* text,WNDTEXTHOOKPROC lpHook,UINT flag);
  7035. //speak
  7036. BOOL speak(LPCSTR lpszText,UINT fuType);
  7037. void speakNoAttachFile(void);
  7038. void txSpeakText(TX* text,UINT fuType,BOOL fTxf);
  7039. //オープン中のfFrameテキスト管理
  7040. BOOL shareInit(void);
  7041. void shareTerm(void);
  7042. void shareProcEndSession(void);
  7043. BOOL textAdd(HWND hwnd);
  7044. BOOL textAddEx(HWND hwnd,WZPROCESS* arg);
  7045. BOOL textDelete(HWND hwnd);
  7046. BOOL frametextAdd(TX* text,wchar* wszCmdLine);
  7047. BOOL frametextSetTextFree(TX* text);
  7048. int frametextGetTextCount(void);
  7049. HWND isopenW(wchar *path);
  7050. //オープン時の処理
  7051. void __on_txFrameNewHtml(TX* text);
  7052. void __on_txFrameNewSpeak(TX* text);
  7053. void __on_txNewSpeakFilelist(TX* text);
  7054. void __on_txNewSpeakGrep(TX* text);
  7055. void __on_txFrameNewSpeak(TX* text);
  7056. //ネットワーク版WZ
  7057. void shStartNetwork(void);
  7058. //その他
  7059. LRESULT txSendWmNotify(TX* text,int txn);
  7060. void imeSetPosPrim(TX* text);
  7061. BOOL txuiMemo(TX* text);
  7062. void tryalOnConfigInit(void);
  7063. #endif // !__TXC__
  7064.  
  7065. //{###WZ/PWZアプリケーション特有
  7066.  
  7067. //##システムAPI、アプリケーション
  7068.  
  7069. BOOL TXAPI_(517) sysApAdd(HWND hwndbase);
  7070. BOOL TXAPI_(518) sysApDelete(HWND hwndbase);
  7071. HWND TXAPI_(513) sysApSetFocus(HWND hwndbase);
  7072. HWND TXAPI_(514) sysApGetFocus(void);
  7073. HWND TXAPI_(515) sysApGetPopup(void);
  7074. TX* TXAPI_(516) sysApIsEditor(void);
  7075. LRESULT TXAPI_(530) sysApDefWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);    //WZ4.00Db 000215 permanent複数プロセス対応。
  7076.  
  7077. #if 1    //WZ4.00Ca 991123 旧名サポート
  7078. #define wzexecW        osExecW
  7079. #define wzexec        osExec
  7080. //
  7081. #define hwndbaseSet                    sysApSetFocus
  7082. #define hwndbaseGet                    sysApGetFocus
  7083. #define hwndbaseGetTopPopupWindow    sysApGetPopup
  7084. #define hwndbaseIsWzeditor            sysApIsEditor
  7085. #define pwzapFocused                sysApSetFocus
  7086. #define pwzapAdd                    sysApAdd
  7087. #define pwzapDelete                    sysApDelete
  7088. #define wzapAdd                        pwzapAdd
  7089. #define wzapDelete                    pwzapDelete
  7090. #define wzapFocused                    pwzapFocused
  7091. #endif
  7092.  
  7093. HWND TXAPI_(1011) apGrep(wchar* wszcmdline,UINT mode);
  7094.     #define AP_SINGLE        0x0001    // 返り値はHWND
  7095.     #define AP_NEWPROCESS    0x0002    // 新しいプロセスで起動。返り値はBOOL
  7096. mchar* TXAPI_(1104) sysGetName(void);
  7097. mchar* TXAPI_(1105) sysGetVersion(void);
  7098. mchar* TXAPI_(1106) sysGetVersionPrim(void);
  7099.  
  7100. #if !__TXC__
  7101. void sysApSendMessageAll(UINT message,WPARAM wParam,LPARAM lParam);
  7102. int sysApSearch(HWND hwndbase);    //WZ4.00Bm 990930 new
  7103. HWND apFiler(wchar* wszcmdline,UINT mode);
  7104. HWND apMemo(wchar* wszcmdline,UINT mode);
  7105. HWND apIcon(wchar* wszcmdline,UINT mode);
  7106. HWND apMailer(wchar* wszcmdline,UINT mode);
  7107. mchar* sysGetNameStrcat(mchar* szAdd);
  7108. void hwndbaseDelete(HWND hwnd);
  7109. BOOL CheckExSample(void);
  7110. #endif // !__TXC__
  7111.  
  7112. //##SHAREアクセスロック
  7113.  
  7114. #define LOCK_NULL            0    // 欠番
  7115.                                 // 以下、空きの番号はもったいないので作らない事
  7116. #define LOCK_WZPROCESS        1
  7117. #define LOCK_HIST            2
  7118. #define LOCK_WZAP            3
  7119. #define LOCK_PROFILE        4
  7120. #define LOCK_KEYMACRO        5
  7121. #define LOCK_WZICON            6
  7122. #define LOCK_WZMEMO            7
  7123. #define LOCK_WZTERMREAD        8
  7124. #define LOCK_WZTERMCHECK    9
  7125. #define LOCK_TXCEVENTPRMSAVE 10    //WZ4.00Db 000215 
  7126. #define LOCK_MBMSGEDIT        11    //WZ4.00Ea 000726 for WZFUNC_MAILBASE
  7127. #define LOCK_N                11    // 最終番号と同じにする
  7128. void TXAPI_(575) sysLock(int no);
  7129. void TXAPI_(576) sysUnlock(int no);
  7130.  
  7131. #if 1    //WZ4.00Ca 991123 旧名サポート
  7132.     #define wzlock        sysLock
  7133.     #define wzunlock    sysUnlock
  7134. #endif
  7135.  
  7136. //##OS(Windows,CE,UNIX)関係
  7137.  
  7138. BOOL TXAPI_(537) osExecW(wchar* lpszCmdline);
  7139. BOOL TXAPI_(809) osExec(mchar* lpszCmdline);
  7140. BOOL TXAPI_(951) osOpenURL(mchar* szURL,HWND hwndParent);
  7141.  
  7142. //##permanent変数記憶
  7143.  
  7144. #if __TXC__
  7145. int __prmSave(void);
  7146. #endif
  7147.  
  7148. // 以下のAPIは内部用です。TXCプログラムから直接使用しないでください。
  7149. void TXAPI_(240) _permanentGetInt(mchar* szAppName,mchar* szName,LPVOID pVar,UINT size);
  7150. void TXAPI_(241) _permanentSetInt(mchar* szAppName,mchar* szName,LPVOID pVar,UINT size);
  7151. void TXAPI_(242) _permanentGetTxstr(mchar* szAppName,mchar* szName,TXSTR string);
  7152. void TXAPI_(243) _permanentSetTxstr(mchar* szAppName,mchar* szName,TXSTR string);
  7153. void TXAPI_(244) _permanentFlush(mchar* szAppName);    //WZ4.00Db 000215 voidから引数変更
  7154. #if !__TXC__
  7155. void on_WM_TXCEVENT(WPARAM wParam);
  7156. #endif
  7157.  
  7158. //##スタイルシート
  7159. //WZ3.90K 981113 new
  7160.  
  7161. typedef struct {
  7162.     mchar* szfilenameCfg;    // スタイルを保存するCFGファイル名
  7163.     void (*txMsghdrGetset)(TX* text,LPVOID appContext,BOOL fSet);    // txMsghdrGetsetするクライアント定義関数。
  7164.     LPVOID appContext;    // クライアント定義コンテキスト
  7165.     BYTE fTXC:1;        //WZ4.00Ca 991130 TX-Cからの利用?
  7166. } STYLESHEETARG;
  7167.  
  7168. int TXAPI_(1064) stylesheet_uiMente(STYLESHEETARG* arg,mchar szStyle[CCHWORD]);
  7169. BOOL TXAPI_(1065) stylesheet_Load(STYLESHEETARG* arg,mchar* szStyle);
  7170. BOOL TXAPI_(1066) stylesheet_Save(STYLESHEETARG* arg,mchar* szStyle);
  7171.  
  7172. //##アプリケーションレイヤの設定
  7173. //WZ3.90L 981116 new
  7174. // 設定の読み書きはあまり早くはないが、基本レイヤの設定とは別にしたいので。
  7175.  
  7176. typedef struct {
  7177.     mchar dicpath[CCHPATHNAME];        // 用語統一辞書パス
  7178.     mchar if_path[CCHPATHNAME];        // ファイルの挿入初期パス
  7179.     mchar prj_path[CCHPATHNAME];    // プロジェクトのパス
  7180. // クリッカブルURL
  7181.     mchar url_service[CCHNAME];        // サービス
  7182.     mchar url_topic[CCHNAME];        // トピック
  7183. } CONFIGAPP;
  7184.  
  7185. void configappLoad(CONFIGAPP* config);
  7186. void configappSave(CONFIGAPP* config);
  7187.  
  7188. //##パス文字列
  7189.  
  7190. wchar* TXAPI_(495) wpathFullConfig(wchar* wszfilenameDst,wchar* wszfilename);
  7191. mchar* TXAPI_(806) pathFullConfig(mchar* szfilenameDst,mchar* szfilename);
  7192. mchar* TXAPI_(890) pathFullExedir(mchar* szfilenameDst,mchar* szfilename);
  7193. wchar* TXAPI_(891) wpathFullExedir(wchar* wszfilenameDst,wchar* wszfilename);
  7194. wchar* wpathFullConfigNoCreate(wchar* wszfilenameDst,wchar* wszfilename);
  7195. BOOL wpathFullConfigNetwork(wchar wszdst[CCHPATHNAME],wchar* wszfilename);
  7196.  
  7197. //##ダイアログ
  7198.  
  7199. typedef struct tagDTRECT {    // ダイアログ座標
  7200.     SHORT x;    // cxChar/4 単位
  7201.     SHORT y;    // cyChar/8 単位
  7202.     SHORT cx;
  7203.     SHORT cy;
  7204. } DTRECT;
  7205. #if WINDOWSCE
  7206.     #define NFONT_MAX    100
  7207. #else
  7208.     #define NFONT_MAX    1000    //WZ3.90P 981206 100だと足りない(300個ある場合もある)ので1000に拡大
  7209. #endif
  7210. typedef struct {
  7211.     WORD nFont;    // 数
  7212.     wchar tFontName[NFONT_MAX][LF_FACESIZE];
  7213.     BYTE lfPitch;            // PitchAndFamily
  7214.     BYTE lfCharSet;            // lfCharSet
  7215.     WORD fPrinterFont:1;    // プリンタフォントの取得中
  7216.     WORD fPrinterFontOnly:1;
  7217.     WORD fEnableUserfont:1;    //WZ4.00Ec 010201 new
  7218.     WORD freserved:13;
  7219.     HDC hdcPrinter;
  7220. } FONTNAMES;
  7221. typedef struct {
  7222.     BYTE lfPitch;
  7223.     BYTE lfCharSet;
  7224.     BYTE sizeLfHeight;                // lfHeightのサイズ(0,1:BYTE,2;WORD,4:DWORD)
  7225.     BYTE lcxFaceName;                // 0:default
  7226.     BYTE lcxFaceSize;                // 0:default
  7227.     HDC hdcPrinter;                    // プリンタフォントも列挙するばあいは、プリンタのhdc
  7228.     WORD fPrinterFontOnly:1;        //1.99F プリンタフォントのみ
  7229.     WORD fEnableDefaultFaceName:1;    //2.95 970128 "標準"フォント名を選択可能にする
  7230.                                     // 選択値は""になる
  7231.     WORD fEnableDefaultHeight:1;    //2.95 970128 "標準"サイズを選択可能にする
  7232.                                     // 選択値は0になる
  7233.     WORD fEnableUserfont:1;            //WZ4.00Bl 990919 ユーザ定義フォントセットを選択可能にする。
  7234.     WORD freserved:12;
  7235.     FONTNAMES* fontnames;            //1.99H 同じフォント名セットを複数使う場合に対応
  7236.     BYTE reserved[17];
  7237. } SELFONTARG;
  7238. #define CCHFONTSIZE    20
  7239. typedef struct {
  7240.     WORD id;                    // 対応付けられているフォント名コンボボックスのid
  7241.     FONTNAMES* fontnames;        // フォント名
  7242.     // フォントサイズ
  7243.     WORD nFontSize;                // 数
  7244.     BYTE tFontSize[NFONT_MAX];    // 内容
  7245.     WORD nFontType;                // EnumFaceSizeで返される
  7246.     // 初期値の受け取り/結果の受け渡し用
  7247.     mchar* lfFaceName;
  7248.     BYTE* lfHeight;
  7249.     BYTE sizeof_lfHeight;            // lfHeight=BYTE/WORD/DWORD?
  7250.                                     //WZ3.90G 980826 class -> sizeof_lfHeight
  7251.     WORD fEnableDefaultFaceName:1;    //2.95 970128 "標準"フォント名を選択可能にする
  7252.                                     // 選択値は""になる
  7253.     WORD fEnableDefaultHeight:1;    //2.95 970128 "標準"サイズを選択可能にする
  7254.                                     // 選択値は0になる
  7255.     WORD freserved:14;
  7256. } CONTEXTSELFONT;
  7257. typedef struct tagDIALOG {
  7258. #if __TXC__
  7259.     LPVOID dialog;
  7260. #else
  7261.     DLGTEMPLATE* dialog;    // 
  7262. #endif
  7263.     DWORD sizeDialog;        // dialogのサイズ
  7264.     LPBYTE pBuff;            // dialogに現在書き込み中のポインタ
  7265.     LPBYTE itemTop;            // dialogのアイテムの先頭位置
  7266.     LPBYTE itemNow;            // 現在アクセス中のアイテム
  7267. //
  7268.     int xMax;
  7269.     int xMaxLf;
  7270.     int yMax;
  7271.     int yMaxLf;
  7272.     int xBase;                // 改行時、復改位置
  7273.     int yBase;                // 改行時、復改位置
  7274.     DTRECT r;                // 現在位置
  7275.     int cxInt;                // 項目間
  7276.     int cyInt;                // 行間
  7277.     CBOOL fNoSetHist;        // dialogReadでヒストリをいじらない
  7278.     FBOOL fNoAddDefaultButton;//WCE1.01 980201 標準の"OK","Cancel"を付けない?
  7279. //
  7280.     struct tagITEMINFO* info;// ITEMINFO配列
  7281.     int sizeinfo;            // ITEMINFO配列の確保した要素数
  7282.     int ninfo;                // 現在の要素数
  7283. //
  7284.     int id;                    // 現在の自動設定ID
  7285.     int idUpdown;            // 次に追加するアップダウンコントロールのID
  7286. // user指定
  7287.     int setid;                // 0:自動ID else IDを指定値にセット
  7288.     CBOOL fH;                // 横に並べる?
  7289.     FBOOL fCmd;                // OK,Cancelボタン不要
  7290. #if __TXC__
  7291.     LPVOID dlgproc;            // ダイアログプロシジャー
  7292. #else
  7293.     DLGPROC dlgproc;        // ダイアログプロシジャー
  7294. #endif
  7295.     FBOOL fDlgprocTxpcode;    // dlgprocはTX-PCODE中にある?
  7296.     WORD stateHook;            // dlgprocフックステート
  7297.     LPVOID custdata;        // user data
  7298.     LPVOID custdata2;        //PWZ2BETA0.3 980519 user data2
  7299.     LPVOID custdata3;        //PWZ2BETA0.3 980519 user data3
  7300.     HWND hwndParent;        // 親ウィンドウ
  7301.     FBOOL fHwndParentSeted;    // hwndParentが設定された(NULLも設定できるよう)
  7302.     FBOOL fModelessAutoClose;// WM_CLOSEで閉じる?
  7303.     BYTE fWizard:1;            //WZ3.90G 980830 ウィザード?
  7304.     BYTE fNoApplyNow:1;        //WZ4.00Ca 991203 [適用]ボタンを付けない?
  7305.     BYTE fPspcGuideLf:1;    //WZ4.00Be 990509 ガイド文字の後で改行する?
  7306.     BYTE fPspcGuideLfOnce:1;//WZ4.00Be 990511 
  7307.     BYTE fPspcCaptionNoLf:1;//WZ4.00Be 990509 dialogCaption etcで自動折り返し追加しない?
  7308.     BYTE fPspcNoLimitSize:1;//WZ4.00Be 990512 PsPCでダイアログサイズを制限しない?
  7309.     BYTE fApply:1;            //WZ4.00Ea 001127 [一時設定(&A)]ボタンを付ける?
  7310.     BYTE fPpcPopup:1;        //WZ4.00Eb 010101 PocketPCで、全画面ダイアログでなく、ポップアップダイアログを表示する?
  7311.     int cx;                    // サイズ
  7312.     int cy;                    // サイズ
  7313.     int notifyIdd;            // dialogSetNotifyAsOK
  7314.     int notify;                // dialogSetNotifyAsOK
  7315.     int idFocus;            // 
  7316.     int idDialoghelp;        // ダイアログヘルプのアンカー番号    //WZ4.00Ab 990124 new
  7317.     mchar* szfilenameChelpBuffAlloced;    //WZ4.00Ca 991203 dialogControlHelpEx用
  7318. // user直接指定
  7319.     BYTE fAutoAccessKey:1;    //WZ3.90H 980910 アクセスキーを自動で付ける?
  7320.                             // chAutoAccessKeyを初期化すること。
  7321.     BYTE fUseLastFontnames:1;//WZ4.00Bl 990920 FONTNAMESをアロケートせずに、最後にアロケートしたものを使用?
  7322.     BYTE chAutoAccessKey;    //WZ3.90H 980910 現在の自動決定アクセスキー
  7323.     TX* text;                //WZ3.90I 981026 dialogControlReferで"-html"を指定する場合に必要
  7324. // フォント選択
  7325.     #define SELFONT_N            20
  7326.     CONTEXTSELFONT* tFontselContext;    // コンテキスト
  7327.     int nFontselContext;                // 現在のコンテキスト数
  7328.     #define FONTNAMES_N            2        // FONTNAMESコンテキスト最大数
  7329.     FONTNAMES *tFontnames;                // FONTNAMESコンテキスト
  7330.     int nFontnames;                        // 現在のFONTNAMESコンテキスト数
  7331. // for property sheet
  7332.     struct tagDIALOG* child;
  7333.     struct tagDIALOG* parent;
  7334.     struct tagDIALOG* next;
  7335.     int iStartPage;
  7336.     FBOOL fApplyed;            //WCE0.95 970923 IDD_APPLYが押された
  7337.     #if !WINDOWSCE
  7338.     FBOOL fCentered;        //WZ3.90I 981005 既に中央に位置をセット済み
  7339.     #endif
  7340. // dialog open時 status
  7341.     HWND hwndDlg;            // ダイアログウィンドウハンドル
  7342.     HWND hwndDlgPage;        //WZ4.00Ca 991023 new
  7343.     HWND hwndbase;            //WZ3.90L 981122 ダイアログを開いたときのhwndbaseGet()の内容
  7344.     FBOOL fActived;            // ページがアクティブになった?
  7345.     FBOOL fModeless;        // モードレスダイアログ?
  7346.     FBOOL fCaptionOkBtn;    // タイトルバーに[OK]を付ける?
  7347.     struct tagDIALOG* now;    // 現在選択されているページ
  7348.     struct tagDIALOG* nextModeless;    // 次のモードレスダイアログ
  7349. // 以下、次にaddするコントロールの属性
  7350. BYTE controlTop;
  7351.     FBOOL fHist;            // ヒストリ付き?
  7352.     FBOOL fHistRead;        // readonly history
  7353.     FBOOL fSbAlloced;        // sb is alloced
  7354.     FBOOL fDisenable;        // 無効化
  7355.     FBOOL fControlReverseBool;
  7356.     FBOOL fRadioV;
  7357.     DWORD fUpdown;            // アップダウンコントロールを付ける?
  7358.                             // 0なら、付けない。
  7359.                             // MAKELONG(max,min)なら付ける。
  7360.     BYTE idMap;                //WCE1.01 980210 idMap
  7361.     HSTRBLK sb;
  7362.     int cyLastControl;        // 最後に追加したコントロールのウィンドウの高さ
  7363.     int idContextHelp;        // コンテキストヘルプIDが指定された
  7364.     mchar* szfilenameContextHelp;    //WZ4.00Ca 991203 dialogControlHelpEx用
  7365.     SIGNED_BYTE dtyAdd;        // y座標に付加する値
  7366.     mchar szguide[CCHWORD];    // ガイド文字列
  7367.     int wguide;                // ガイドの幅
  7368.     mchar* szRefer;            // 参照ボタン
  7369.     int idrefer;            // 参照ボタンのID
  7370.     LPVOID procConv;        //WZ3.90L 981115 コンバータ
  7371. BYTE controlEnd;
  7372. // 以下、クリアしない次にaddするコントロールの属性
  7373.     DWORD controlStyle;
  7374. } DIALOG,*HDIALOG;
  7375. #define DIALOGHOOKSTATE_HOOKONCE    0x01    // 一度だけ標準ダイアログをスキップする
  7376. #define DIALOGHOOKSTATE_HOOKALL        0x02    // 全フックする
  7377. #define DTCX                4        // 1文字の幅
  7378. #define DTCY                8        // 1文字の高さ
  7379. #define DTCXINT                4        // 標準の間隔
  7380. #if WINDOWSCE2
  7381.     #define DTCYINT            1    // 標準の間隔
  7382.                                 //WCE1.01 980312 2->1
  7383.                                 // ダイアログのフォントが大きくなって
  7384.                                 // ダイアログボックスが画面からはみ出るため。
  7385. #else
  7386.     #define DTCYINT            2    // 標準の間隔
  7387. #endif
  7388. #define DTCYKEY                10        // (&K)などのアンダーバーも含む高さ
  7389. #define DTCYBOX                12        // TEXTBOXの高さ
  7390. #define DTCYCMDBUTTON        14        // コマンドボタンの高さ
  7391. #define DTCYBUTTON            12        // ボタンの高さ
  7392. #define DTCYBOX_KEY            2        // DTCYBOX - DTCYKEY
  7393. // dialogSetDlgprocのWM_INITDIALOGでの返り値の定義
  7394. // FALSEを返すのは、INITDIALOG_TRUEを返すのと同じ
  7395. #define INITDIALOG_TRUE            0    // WM_INITDIALOGの返り値にTRUEを返す
  7396.                                     // (WindowsがデフォルトのSETFOCUSをする)
  7397. #define INITDIALOG_FALSE        1    // FALSEを返す
  7398.                                     // (WindowsがデフォルトのSETFOCUSをしない)
  7399. #define INITDIALOG_SKIP_TRUE    2    // dialog.c内のWM_INITDIALOG処理をスキップ
  7400. #define INITDIALOG_SKIP_FALSE    3    // 同上
  7401. //
  7402. #define DCS_PUSHBUTTON        0x01    // "BUTTON",    BS_PUSHBUTTON | WS_TABSTOP
  7403. #define DCS_DEFPUSHBUTTON    0x02    // "BUTTON",    BS_DEFPUSHBUTTON | WS_TABSTOP
  7404. #define DCS_CHECKBOX        0x03    // "BUTTON",    BS_CHECKBOX | WS_TABSTOP
  7405. #define DCS_RADIOBUTTON        0x04    // "BUTTON",    BS_RADIOBUTTON | WS_TABSTOP
  7406. #define DCS_GROUPBOX        0x05    // "BUTTON",    BS_GROUPBOX | WS_TABSTOP
  7407. #define DCS_LTEXT            0x06    // "STATIC",    SS_LEFT | WS_GROUP
  7408. #define DCS_CTEXT            0x07    // "STATIC",    SS_CENTER | WS_GROUP
  7409. #define DCS_RTEXT            0x08    // "STATIC",    SS_RIGHT | WS_GROUP
  7410. #define DCS_ICON            0x09    // "STATIC",    SS_ICON
  7411. #define DCS_EDITTEXT        0x0A    // "EDIT",        ES_LEFT | WS_BORDER | WS_TABSTOP
  7412. #define DCS_SCROLLBAR        0x0B    // "SCROLLBAR",    SBS_HORZ
  7413. #define DCS_LISTBOX            0x0C    // "LISTBOX",    LBS_NOTIFY | WS_BORDER | WS_VSCROLL
  7414. #define DCS_COMBOBOX        0x0D    // "COMBOBOX",    CBS_SIMPLE | WS_TABSTOP
  7415. //
  7416. BOOL TXAPI_(42) __dialogAddItem(HDIALOG hd,mchar *szClass,mchar *szText,int id,DTRECT *dtRect,long style);
  7417. BOOL TXAPI_(43) _dialogAddItem(HDIALOG hd,int nDcs,mchar *szText,int id,DTRECT *dtRect,long style);
  7418. int TXAPI_(1116) _dialogAddControlInfo(HDIALOG hd,int id);
  7419. BOOL TXAPI_(44) dialogAddItem(HDIALOG hd,BYTE nDcs,mchar *szText,int id,DTRECT *dtRect,long style);
  7420. int TXAPI_(45) dialogAddListbox(HDIALOG hd,mchar *szcaption,int width,int height);
  7421. void TXAPI_(46) dialogWriteItem(HDIALOG hd,int id);
  7422. HSTRBLK TXAPI_(47) dialogGetItemStrblk(HDIALOG hd,int id);
  7423. HWND TXAPI_(48) dialogGetItemUpdown(HDIALOG hd,int id);
  7424. void TXAPI_(49) dialogWrite(HDIALOG hd);
  7425. void TXAPI dialogWriteEx(HDIALOG hd,DWORD mode);
  7426. void TXAPI_(50) dialogReadItem(HDIALOG hd,int id);
  7427. void TXAPI dialogReadItemEx(HDIALOG hd,int id,DWORD mode);
  7428. void TXAPI_(51) dialogRead(HDIALOG hd);
  7429. void TXAPI_(52) dialogReadEx(HDIALOG hd,DWORD mode);
  7430.     #define DIALOGREAD_NOSETHIST    0x0001    // ヒストリをいじらない
  7431. BOOL TXAPI_(1118) dialogSetDialoghelpEx(HDIALOG hd,mchar* szfilename,int id);
  7432. #define dialogSetDialoghelp(hd,idd)    dialogSetDialoghelpEx(hd,NULL,idd)
  7433. #if __TXC__
  7434. #define dialogSetDlgproc            dialogSetDlgprocTxpcode
  7435. #else
  7436. void TXAPI dialogSetDlgproc(HDIALOG hd,DLGPROC proc);
  7437. #endif
  7438. void TXAPI_(53) dialogSetDlgprocTxpcode(HDIALOG hd,FARPROC proc);
  7439. LPVOID TXAPI_(54) dialogSetCustdata(HDIALOG hd,LPVOID custdata);
  7440. LPVOID TXAPI_(1071) dialogSetCustdata2(HDIALOG hd,LPVOID custdata);
  7441. LPVOID TXAPI dialogSetCustdata3(HDIALOG hd,LPVOID custdata);
  7442. void TXAPI_(55) dialogSetNotifyAsOK(HDIALOG hd,int idd,int notify);
  7443. void TXAPI_(56) dialogSetStyle(HDIALOG hd,long style);
  7444. void TXAPI_(58) dialogSetContexthelp(HDIALOG hd,DWORD fSet);
  7445. void TXAPI_(59) dialogSetFocus(HDIALOG hd,int id);
  7446. void TXAPI_(60) dialogSetNoButton(HDIALOG hd);
  7447. LPVOID TXAPI_(61) dialogGetCustdata(HDIALOG hd);
  7448. LPVOID TXAPI_(1070) dialogGetCustdata2(HDIALOG hd);
  7449. LPVOID TXAPI dialogGetCustdata3(HDIALOG hd);
  7450. DWORD TXAPI_(62) dialogGetStyle(HDIALOG hd);
  7451. #if __TXC__
  7452. LPVOID TXAPI_(63) dialogGetDlgtemplate(HDIALOG hd);
  7453. #else
  7454. DLGTEMPLATE* TXAPI_(63) dialogGetDlgtemplate(HDIALOG hd);
  7455. #endif
  7456. HWND TXAPI_(64) dialogGetWindow(HDIALOG hd);
  7457. void TXAPI_(65) dialogSetIntXY(HDIALOG hd,int dtcx,int dtcy);
  7458. void TXAPI_(66) dialogResetInt(HDIALOG hd);
  7459. void TXAPI_(67) dialogSetH(HDIALOG hd);
  7460. void TXAPI_(68) dialogSetV(HDIALOG hd);
  7461. BOOL TXAPI_(69) dialogControlGuide(HDIALOG hd,mchar *szguide,int wguide);
  7462. void TXAPI_(70) dialogControlStyle(HDIALOG hd,DWORD style);
  7463. void TXAPI_(71) dialogControlHist(HDIALOG hd,HHIST hhist);
  7464. void TXAPI_(72) dialogControlHistRead(HDIALOG hd,HHIST hhist);
  7465. void TXAPI_(73) dialogControlStrblk(HDIALOG hd,HSTRBLK sb);
  7466. void TXAPI_(74) dialogControlStrblkHist(HDIALOG hd,HSTRBLK sb);
  7467. void TXAPI_(75) dialogControlEnable(HDIALOG hd,BOOL fEnable);
  7468. void TXAPI_(76) dialogControlReverseBool(HDIALOG hd);
  7469. #if WINDOWSCE
  7470.     #define dialogControlHelp(hd,id)    //WZ4.00Ab 990117 PWZではdialogControlHelpは何もしない#defineに変更。プログラムサイズ削減のため。
  7471.     #define dialogControlHelpEx(hd,sz,id)    //WZ4.00Ca 991204 
  7472. #else
  7473. void TXAPI_(77) dialogControlHelp(HDIALOG hd,int id);
  7474. #endif
  7475. BOOL TXAPI_(58) dialogControlHelpEx(HDIALOG hd,mchar* szfilename,int id);
  7476. void TXAPI_(78) dialogControlID(HDIALOG hd,int id);
  7477. void TXAPI_(79) dialogControlUpdown(HDIALOG hd,int minSpin,int maxSpin);
  7478. void TXAPI dialogControlConvertproc(HDIALOG hd,LPVOID procConv);
  7479. void TXAPI_(80) dialogControlMap(HDIALOG hd,int idMap);
  7480.     #define DIALOGCONTROLMAP_TWIPS_MCM    1    // TWIPS(1/1440 inch)データを1/10mm単位で表示
  7481.     #define DIALOGCONTROLMAP_10            2    // データを/10して表示
  7482. int TXAPI_(81) dialogCaption(HDIALOG hd,mchar *szCaption);
  7483. int TXAPI_(82) dialogCaptionDynamic(HDIALOG hd,mchar *szCaption,int width);
  7484. int TXAPI_(83) dialogCaptionDynamicEx(HDIALOG hd,mchar *szCaption,int width,int height);
  7485. int TXAPI_(1080) dialogCaptionGuide(HDIALOG hd,mchar *szCaption);
  7486. int TXAPI_(84) dialogColor(HDIALOG hd,mchar* szCaption,mchar* szTitle,COLORREF* rgb,int wCaption,LPVOID pPreview);
  7487. int TXAPI_(85) dialogPushbutton(HDIALOG hd,mchar *szCaption,int wCaption);
  7488. int TXAPI_(86) dialogPushbuttonBig(HDIALOG hd,mchar *szCaption,int wCaption);
  7489. int TXAPI_(87) dialogCmd(HDIALOG hd,mchar *szCaption,int wCaption);
  7490. int TXAPI_(88) dialogCmdDefault(HDIALOG hd,mchar *szCaption,int wCaption);
  7491. int TXAPI_(89) dialogCmdID(HDIALOG hd,mchar *szCaption,int wCaption,int id);
  7492. int TXAPI_(90) dialogCheck(HDIALOG hd,mchar *szCaption,BOOL *bool);
  7493. int TXAPI_(91) dialogCheckB(HDIALOG hd,mchar *szCaption,BBOOL *bool);
  7494. int TXAPI_(92) dialogOK(HDIALOG hd,int wCaption);
  7495. int TXAPI_(93) dialogCancel(HDIALOG hd,int wCaption);
  7496. void TXAPI_(94) dialogApply(HDIALOG hd,int dtx,int dty);
  7497. int TXAPI_(95) dialogClose(HDIALOG hd,int wCaption);
  7498. int TXAPI_(12) dialogString(HDIALOG hd,mchar *szCaption,int wCaption,mchar *szText,int cchText,int wBox);
  7499. int TXAPI_(113) dialogTxstr(HDIALOG hd,mchar *szCaption,int wCaption,TXSTR szText,int wBox);
  7500. int TXAPI_(13) dialogStringW(HDIALOG hd,mchar *szCaption,int wCaption,wchar *wszText,int cchText,int wBox);
  7501. int TXAPI dialogAstring(HDIALOG hd,mchar *szCaption,int wCaption,mchar** paszText,int wBox);    //WZ4.00Da 000206 
  7502. int TXAPI_(14) dialogInteger(HDIALOG hd,mchar *szCaption,int wCaption,int *integer,int wBox);
  7503. int TXAPI_(15) dialogIntegerW(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_WORD* integer,int wBox);
  7504. int TXAPI_(16) dialogIntegerB(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_BYTE* integer,int wBox);
  7505. int TXAPI_(17) _cdecl dialogChoice(HDIALOG hd,mchar *szCaption,int wCaption,int *data,int wBox,mchar* szItem,...);
  7506. int TXAPI_(18) _cdecl dialogChoiceW(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_WORD* data,int wBox,mchar* szItem,...);
  7507. int TXAPI_(19) _cdecl dialogChoiceB(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_BYTE* data,int wBox,mchar* szItem,...);
  7508. int TXAPI_(20) _cdecl dialogChoiceString(HDIALOG hd,mchar *szCaption,int wCaption,mchar* szText,int cchText,int wBox,mchar* szItem,...);
  7509. int TXAPI _cdecl dialogChoiceStringWA(HDIALOG hd,mchar *szCaption,int wCaption,wchar* szText,int cchText,int wBox,mchar* szItem,...);
  7510. int TXAPI_(21) _cdecl dialogChoiceRadio(HDIALOG hd,int *data,mchar* szItem,...);
  7511. int TXAPI_(22) _cdecl dialogChoiceRadioW(HDIALOG hd,SIGNED_WORD* data,mchar* szItem,...);
  7512. int TXAPI_(23) _cdecl dialogChoiceRadioB(HDIALOG hd,SIGNED_BYTE* data,mchar* szItem,...);
  7513. int TXAPI_(25) dialogList(HDIALOG hd,mchar* szCaption,TX* text,int width,int height);
  7514. int TXAPI dialogChoiceList(HDIALOG hd,mchar* szCaption,int* data,int width,int height);
  7515. void TXAPI_(26) dialogIndent(HDIALOG hd,int dx);
  7516. void TXAPI_(27) dialogLFV(HDIALOG hd);
  7517. void TXAPI_(28) dialogCmdLFV(HDIALOG hd);
  7518. void TXAPI_(29) dialogLF(HDIALOG hd);
  7519. void TXAPI_(30) dialogSpace(HDIALOG hd);
  7520. void TXAPI_(31) dialogSpaceH(HDIALOG hd);
  7521. void TXAPI_(32) dialogSpaceV(HDIALOG hd);
  7522. void TXAPI_(33) dialogGetPos(HDIALOG hd,DTRECT *r);
  7523. int TXAPI_(34) dialogGetPosX(HDIALOG hd);
  7524. int TXAPI_(35) dialogGetPosY(HDIALOG hd);
  7525. void TXAPI_(36) dialogSetPos(HDIALOG hd,DTRECT *r);
  7526. void TXAPI_(37) dialogSetPosLX(HDIALOG hd,int lx);
  7527. void TXAPI_(38) dialogSetPosX(HDIALOG hd,int x);
  7528. void TXAPI_(39) dialogSetPosY(HDIALOG hd,int y);
  7529. void TXAPI dialogSetPosXY(HDIALOG hd,int x,int y);
  7530. #define dialogAddPosY(hd,y)    (dialogSetPosY(hd,(dialogGetPosY(hd) + y)))
  7531. int TXAPI_(897) dialogHeadline(HDIALOG hd,mchar* szCaption,int wHeadline);    //WZ4.00A 981229 
  7532. HDIALOG TXAPI_(40) dialogFromHwnd(HWND hwnd);
  7533. void TXAPI_(41) dialogTerm(HDIALOG hd);
  7534. HDIALOG TXAPI_(10) dialog(mchar* szCaption);
  7535. void TXAPI_(672) dialogSetHookState(HDIALOG hd,int state);
  7536. int TXAPI_(11) dialogOpen(HDIALOG hd);
  7537. #define dialogLFSetV(hd)    {dialogSetV(hd);dialogLF(hd);}
  7538. #if WINDOWSCE
  7539.     #define dialogLFIndentPSPC(hd,n)        if (_pspc) {dialogLF(hd);dialogIndent(hd,n);}
  7540.     #define dialogLfPSPC(hd)                if (_pspc) {dialogLF(hd);}
  7541.     #define dialogSetGuideLfPSPC(hd)        {hd->fPspcGuideLf = _pspc;}
  7542.     #define dialogSetGuideLfOncePSPC(hd)    {hd->fPspcGuideLfOnce = _pspc;}
  7543.     #define dialogSetCaptionNoLfPSPC(hd,f)    {hd->fPspcCaptionNoLf = _pspc * f;}
  7544. #else
  7545.     #define dialogLFIndentPSPC(hd,n)        ;
  7546.     #define dialogLfPSPC(hd)                ;
  7547.     #define dialogSetGuideLfPSPC(hd)        ;
  7548.     #define dialogSetGuideLfOncePSPC(hd)    ;
  7549.     #define dialogSetCaptionNoLfPSPC(hd,f)    ;
  7550. #endif
  7551. void TXAPI_(577) dialogSetPosLF(HDIALOG hd);
  7552. void TXAPI_(578) dialogSetParent(HDIALOG hd,HWND hwndParent);
  7553. BOOL TXAPI_(579) dialogAddPage(HDIALOG hd,HDIALOG hdPage);
  7554. void TXAPI_(580) dialogSetStartPage(HDIALOG hd,int iStartPage);
  7555. void dialogAddAboutTimeLimit(HDIALOG hd);
  7556. void TXAPI dialogSetSize(HDIALOG hd,DTRECT *r);
  7557. void TXAPI dialogApplyEx(HDIALOG hd,int dtx,int dty,mchar* szCaption);
  7558. HWND TXAPI_(581) dialogGetBaseWindow(HDIALOG hd);
  7559. HWND TXAPI dialogGetPageWindow(HDIALOG hd,int iPage);
  7560. void TXAPI_(582) dialogControlRadioV(HDIALOG hd);
  7561. int TXAPI_(583) dialogEditWz(HDIALOG hd,mchar* szCaption,TX* text,int width,int height,DWORD ws);
  7562. HWND TXAPI_(584) dialogCreate(HDIALOG hd);
  7563. BOOL TXAPI_(585) dialogFree(HWND hwnd);
  7564. BOOL TXAPI_(586) dialogControlRefer(HDIALOG hd,mchar *szpath);
  7565. int TXAPI_(587) dialogSelectFont(HDIALOG hd,mchar* szCaption,int wCaption,mchar* lfFaceName,BYTE* lfHeight,SELFONTARG* arg);
  7566. // sub dialog proc
  7567. BOOL subdlgprocSblist(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam,HSTRBLK sb);
  7568. void comboboxex_Exec(HWND hwnd);
  7569. // dialog application
  7570. mchar* TXAPI_(588) dialogaSelHistEx(mchar* szCaption,HHIST hist,DWORD mode,TX* text);
  7571. mchar* TXAPI_(589) dialogaSelectSb(mchar* szCaption,HSTRBLK sb,DWORD mode,TX* text,mchar* szStdAdd);
  7572.     #define SELHIST_FILEOPEN    0x0001
  7573.     #define SELHIST_IMECONVERT    0x0002
  7574.     #define SELHIST_READMODE    0x0004    // 編集不可
  7575.     #define SELHIST_REVERSE        0x0008    // 内部用
  7576.     #define SELHIST_REFERFOLDER    0x0010
  7577.     #define SELHIST_PATH        0x0020
  7578. mchar* TXAPI_(590) dialogaSelHist(mchar* szCaption,HHIST hist);
  7579. mchar* TXAPI_(591) dialogaSelFolderlist(mchar szResult[CCHPATHNAME],mchar* szStdAdd);
  7580. int TXAPI_(592) TXAPIBASE dialogaText(TX* text,mchar* szcaption);
  7581. #if 1//WZ4.00Be 990405 CE2.11ではprintf,wprintfが既定義。
  7582.     #if __TXC__    // TX-Cの関数名は変えない様にする。CE1.01やCE2.0のTX-CでコンパイルしたTXMと互換性を保つため。
  7583.         void TXAPI_(593) printf(LPCSTR szFormat,...);
  7584.         void wprintf(wchar* szFormat,...);
  7585.     #else
  7586.         #if !UNIX
  7587.             void ty_printf(LPCSTR szFormat,...);
  7588.             void ty_wprintf(wchar* szFormat,...);
  7589.             #define printf    ty_printf
  7590.             #define wprintf    ty_wprintf
  7591.         #endif
  7592.     #endif
  7593. #else
  7594. void TXAPI_(593) printf(LPCSTR szFormat,...);
  7595. void wprintf(wchar* szFormat,...);
  7596. #endif
  7597. TX* printfGetText(void);
  7598. void TXAPI_(594) dialogaDebugEnd(void);
  7599. HWND TXAPI_(595) dialogaDebugStart(void);
  7600. int TXAPI_(893) dialogGetPage(HDIALOG hd);
  7601. // ダイアログ作成 for TX-C互換
  7602. int TXAPI_(869) dialogSelect(HDIALOG hd,mchar* szCaption,int* data,int wCaption,int wBox,HSTRBLK sb);
  7603. int TXAPI_(870) _varyarg dialogSelectID(HDIALOG hd,mchar* szCaption,int* data,int wCaption,int wBox,mchar* szItem,...);
  7604. int TXAPI_(871) _varyarg dialogSelectStr(HDIALOG hd,mchar* szCaption,TXSTR data,int wCaption,int wBox,mchar* szItem,...);
  7605. int TXAPI_(872) dialogButton(HDIALOG hd,mchar *szCaption,mchar* szMacro,int wCaption);
  7606. int TXAPI_(873) dialogButtonBig(HDIALOG hd,mchar *szCaption,mchar* szMacro,int wCaption);
  7607. // 簡単ダイアログ for TX-C互換
  7608. BOOL TXAPI_(862) inputint(mchar* szcaption,int* data);
  7609. BOOL TXAPI_(863) inputstr(mchar* szcaption,TXSTR dst);
  7610. int  TXAPI_(864) _varyarg intselect(mchar* szcaption,mchar* szstr,...);
  7611. mchar* TXAPI_(877) _varyarg strselect(mchar* szcaption,mchar* szstr,...);
  7612. //
  7613. #if !__TXC__
  7614. BOOL IntoModal(BOOL fOutputErrorMessage);
  7615. void ExitModal(void);
  7616. void dialogaErrorOpenDialog(void);
  7617. BOOL dialogaAutoFilename(TX* text,mchar* szfilename,DWORD mode);
  7618.     #define AFN_SILENT    0x0001
  7619.     #define AFN_REFER    0x0002
  7620.     #define AFN_DETAIL    0x0004
  7621. HDIALOG TXAPI dialogGetPageDialog(HDIALOG hd,int iPage);
  7622.     #if !UNIX
  7623.         #ifndef TXC_DLL
  7624.         DWORD    (WINAPI *txpcodeCallAddress)(LPBYTE pc,UINT nArg,LPVOID pArg);
  7625.         #endif
  7626.     #endif
  7627. BOOL dialogWriteFontHdcPrinter(HDIALOG hd,int id,HDC hdc);
  7628. int dialogPushbuttonID(HDIALOG hd,mchar *szCaption,int wCaption,int id);
  7629. #endif
  7630. void dialogAddConvertChar(HDIALOG hd,CCCONTEXT* ccc);
  7631. HDIALOG dialogNewAbout(mchar* szAppName,mchar* szVersion);
  7632. int dialogOpenAbout(HDIALOG hd);
  7633. void dialogAddAboutCopyright(HDIALOG hd);
  7634. //WZ4.00Bk 990902 dialogTreeニーズに応え復活。
  7635. LPVOID TXAPI_(24) dialogTree(HDIALOG hd,mchar* szCaption,TX* text,int width,int height);
  7636. void dialogAddSearchopt(HDIALOG hd,SEARCHOPT* opt,int mode);
  7637.  
  7638. //##information/question/attention
  7639.  
  7640. void _cdecl TXAPI_(539) winformation(wchar* szformat,...);
  7641. void _cdecl TXAPI_(540) wattention(wchar* szformat,...);
  7642. int _cdecl TXAPI_(541) wquestion(wchar* szformat,...);
  7643. int _cdecl TXAPI_(542) wquestionYesNo(wchar* szformat,...);
  7644. int _cdecl TXAPI_(543) wquestionNoYes(wchar* szformat,...);
  7645. int _cdecl wquestionNoYesCancel(wchar* szformat,...);
  7646. void _cdecl TXAPI_(544) wstatprintf(wchar* szformat,...);
  7647. wchar* TXAPI_(545) rcStringW(int ids);
  7648. mchar* TXAPI_(546) rcString(int ids);
  7649. #ifndef TXC_DLL
  7650. void _cdecl statprintf_V(mchar** szformat);
  7651. void _cdecl TXAPI_(7) statprintf(mchar* szformat,...);
  7652. #endif
  7653. void _cdecl TXAPI_(4) information(mchar* szformat,...);
  7654. void _cdecl TXAPI_(5) attention(mchar* szformat,...);
  7655. int _cdecl TXAPI_(6) question(mchar* szformat,...);
  7656. void TXAPI_(900) txStatusbarPrintf(TX* text,mchar* szformat,...);
  7657. #define pdb    information("%d",__LINE__);
  7658. #if !__TXC__
  7659. void statprintfClearFlush(TX* text);
  7660. void statprintfClear(TX* text);
  7661. void debugf(mchar* szformat,...);
  7662. int TXAPIBASE textinformation(TX* text,mchar* szcaption);
  7663. int myMessageBoxW(LPCWSTR lpText,UINT uType);
  7664. int questionOverwrite(wchar* wszfilename);
  7665. #endif
  7666.  
  7667. //WZ4.00Ca 991229 FILER/ファイルリストコントロールを廃止
  7668.  
  7669. //##IDMコマンド
  7670.  
  7671. #if !__TXC__
  7672. BOOL txIDM_UIEXIT(TX* text);
  7673. BOOL txIDM_UISAVEAS(TX* text);
  7674. BOOL txIDM_UISAVEASVZ(TX* text);
  7675. BOOL txIDM_UICLOSE(TX* text);
  7676. BOOL txIDM_FILEMENUVZ(TX* text);
  7677. BOOL txIDM_OPENBACKUP(TX* text);
  7678. BOOL txIDM_UISAVEALL(TX* text);
  7679. BOOL txIDM_UICLOSEOPEN(TX* text);
  7680. BOOL txIDM_UIAPPENDVZ(TX* text);
  7681. BOOL txIDM_UIRENAMEVZ(TX* text);
  7682. BOOL txIDM_UICLOSEALLVZ(TX* text);
  7683. BOOL txIDM_UICLOSEALLFORCE(TX* text);
  7684. BOOL txIDM_UIQUITALL(TX* text);
  7685. BOOL txIDM_PREVWINDOW(TX* text);
  7686. BOOL txIDM_NEXTWINDOW(TX* text);
  7687. BOOL txIDM_UISAVECLOSE(TX* text);
  7688. BOOL txIDM_UIQUIT(TX* text);
  7689. BOOL txIDM_UISEARCH(TX* text);
  7690. BOOL txIDM_UIREPLACE(TX* text);
  7691. BOOL txIDM_UIREPLACEQUERY(TX* text);
  7692. BOOL txIDM_UIREPLACENOQUERY(TX* text);
  7693. BOOL txIDM_UISEARCHSET(TX* text);
  7694. BOOL txIDM_SEARCHCONTINUECBPREV(TX* text);
  7695. BOOL txIDM_SEARCHCONTINUECB(TX* text);
  7696. BOOL txIDM_SEARCHCONTINUEPREV(TX* text);
  7697. BOOL txIDM_SEARCHCONTINUE(TX* text);
  7698. BOOL txIDM_ABOUT(TX* text);
  7699. BOOL txIDM_UISELECTIDM(TX* text);
  7700. BOOL txIDM_DOWNHIGH(TX* text);
  7701. BOOL txIDM_UPHIGH(TX* text);
  7702. BOOL txIDM_JUMPLINETOP(TX* text);
  7703. BOOL txIDM_JUMPLINETAIL(TX* text);
  7704. BOOL txIDM_NEXTROLL(TX* text);
  7705. BOOL txIDM_PREVROLL(TX* text);
  7706. BOOL txIDM_DOWN(TX* text);
  7707. BOOL txIDM_UP(TX* text);
  7708. BOOL txIDM_RIGHTBINEDIT(TX* text);
  7709. BOOL txIDM_RIGHT(TX* text);
  7710. BOOL txIDM_LEFT(TX* text);
  7711. BOOL txIDM_LEFTWORD(TX* text);
  7712. BOOL txIDM_LEFTWORDMI(TX* text);
  7713. BOOL txIDM_RIGHTWORD(TX* text);
  7714. BOOL txIDM_RIGHTWORDMI(TX* text);
  7715. BOOL txIDM_JUMPWORDTOPMI(TX* text);
  7716. BOOL txIDM_JUMPWORDENDMI(TX* text);
  7717. BOOL txIDM_DELETECHAR(TX* text);
  7718. BOOL txIDM_DELETEPREV(TX* text);
  7719. BOOL txIDM_DELETEWORD(TX* text);
  7720. BOOL txIDM_DELETEWORDMI(TX* text);
  7721. BOOL txIDM_DELETEWORDPREV(TX* text);
  7722. BOOL txIDM_DELETEPARATOP(TX* text);
  7723. BOOL txIDM_DELETEPARAEND(TX* text);
  7724. BOOL txIDM_DELETEPARA(TX* text);
  7725. BOOL txIDM_DELETELINE(TX* text);
  7726. BOOL txIDM_DELETEPARALINETOP(TX* text);
  7727. BOOL txIDM_DELETEPARALINEEND(TX* text);
  7728. BOOL txIDM_DELETEPARALINE(TX* text);
  7729. BOOL txIDM_INSERTFIND(TX* text);
  7730. BOOL txIDM_DELETEPREVWORD(TX* text);
  7731. BOOL txIDM_SHIFTENTER(TX* text);
  7732. BOOL txIDM_INSERTRETURN(TX* text);
  7733. BOOL txIDM_INSERTBEAM(TX* text);
  7734. BOOL txIDM_MOVEPREVPARA(TX* text);
  7735. BOOL txIDM_MOVENEXTPARA(TX* text);
  7736. BOOL txIDM_TAB(TX* text);
  7737. BOOL txIDM_SHIFTTAB(TX* text);
  7738. BOOL txIDM_JUMPFILETOPLINE(TX* text);
  7739. BOOL txIDM_JUMPFILEENDLINE(TX* text);
  7740. BOOL txIDM_JUMPFILETOP(TX* text);
  7741. BOOL txIDM_JUMPFILEEND(TX* text);
  7742. BOOL txIDM_SELECT(TX* text);
  7743. BOOL txIDM_SELECTWORD(TX* text);
  7744. BOOL txIDM_SELECTBOX(TX* text);
  7745. BOOL txIDM_SELECTSWITCH(TX* text);
  7746. BOOL txIDM_PASTE(TX* text);
  7747. BOOL txIDM_PASTESELECT(TX* text);
  7748. BOOL txIDM_PASTECHAR(TX* text);
  7749. BOOL txIDM_PASTEVZ(TX* text);
  7750. BOOL txIDM_CUT(TX* text);
  7751. BOOL txIDM_CUTVZ(TX* text);
  7752. BOOL txIDM_CLEAR(TX* text);
  7753. BOOL txIDM_COPY(TX* text);
  7754. BOOL txIDM_COPYQUIT(TX* text);
  7755. BOOL txIDM_COPYQUITVZ(TX* text);
  7756. BOOL txIDM_JUMPPARATOP(TX* text);
  7757. BOOL txIDM_JUMPPARAEND(TX* text);
  7758. BOOL txIDM_UNDOPARA(TX* text);
  7759. BOOL txIDM_UNDO(TX* text);
  7760. BOOL txIDM_REDO(TX* text);
  7761. BOOL txIDM_SWITCHDISPUNDER(TX* text);
  7762. BOOL txIDM_SWITCHDISPLINE(TX* text);
  7763. BOOL txIDM_SWITCHDISPTOOLBAR(TX* text);
  7764. BOOL txIDM_SWITCHDISPRULER(TX* text);
  7765. BOOL txIDM_SWITCHDISPTAB(TX* text);
  7766. BOOL txIDM_SWITCHDISPJSPACE(TX* text);
  7767. BOOL txIDM_SWITCHWINDOWFULLY(TX* text);
  7768. BOOL txIDM_SWITCHDISPTAG(TX* text);
  7769. BOOL txIDM_SWITCHSCROLLBARV(TX* text);
  7770. BOOL txIDM_PAGEUPPRIM(TX* text);
  7771. BOOL txIDM_PAGEUP(TX* text);
  7772. BOOL txIDM_PAGEDOWNPRIM(TX* text);
  7773. BOOL txIDM_PAGEDOWN(TX* text);
  7774. BOOL txIDM_SWITCHPAGE(TX* text);
  7775. BOOL txIDM_CLEARSEARCHMODE(TX* text);
  7776. BOOL txIDM_SELECTALL(TX* text);
  7777. BOOL txIDM_NEW(TX* text);
  7778. BOOL txIDM_UINEW(TX* text);
  7779. BOOL txIDM_NEWPROCESS(TX* text);
  7780. BOOL txIDM_UIOPEN(TX* text);
  7781. BOOL txIDM_UIOPENVZ(TX* text);
  7782. BOOL txIDM_UIOPENREADVZ(TX* text);
  7783. BOOL txIDM_UIOPENHIST(TX* text);
  7784. BOOL txIDM_UIINSERTFILE(TX* text);
  7785. BOOL txIDM_UIREOPEN(TX* text);
  7786. BOOL txIDM_UISAVE(TX* text);
  7787. BOOL txIDM_UISAVEEDITED(TX* text);
  7788. BOOL txIDM_UICONFIGREAD(TX* text);
  7789. BOOL txIDM_UIJUMP(TX* text);
  7790. BOOL txIDM_JUMPPREV(TX* text);
  7791. BOOL txIDM_JUMPNEXT(TX* text);
  7792. BOOL txIDM_UIJUMPBACK(TX* text);
  7793. BOOL txIDM_POP(TX* text);
  7794. BOOL txIDM_UNDELETE(TX* text);
  7795. BOOL txIDM_SEARCHGET(TX* text);
  7796. BOOL txIDM_INSERTPARA(TX* text);
  7797. BOOL txIDM_SWITCHINSERT(TX* text);
  7798. BOOL txIDM_UIINSERTSEARCH(TX* text);
  7799. BOOL txIDM_UIINSERTCOPY(TX* text);
  7800. BOOL txIDM_UIINSERTSTR(TX* text);
  7801. BOOL txIDM_UIINSERTDELETE(TX* text);
  7802. BOOL txIDM_UIINSERTFILENAME(TX* text);
  7803. BOOL txIDM_SWITCHAUTOFORM(TX* text);
  7804. BOOL txIDM_FORM(TX* text);
  7805. BOOL txIDM_FORM(TX* text);
  7806. BOOL txIDM_FORMREFNAME(TX* text);
  7807. BOOL txIDM_ALTENTER(TX* text);
  7808. BOOL txIDM_UIFORMPROPERTY(TX* text);
  7809. BOOL txIDM_CONTEXTMENU(TX* text);
  7810. BOOL txIDM_INSERTHR(TX* text);
  7811. BOOL txIDM_UICONVERTTEXT(TX* text);
  7812. BOOL txIDM_ZENHANWORD(TX* text);
  7813. BOOL txIDM_CASEWORD(TX* text);
  7814. BOOL txIDM_UIINSERTDATE(TX* text);
  7815. BOOL txIDM_UIINFO(TX* text);
  7816. BOOL txIDM_SWITCHREADMODE(TX* text);
  7817. BOOL txIDM_SWITCHOUTLINE(TX* text);
  7818. BOOL txIDM_FLUSHOUTLINE(TX* text);
  7819. BOOL txIDM_UIINSERTTEMPLATE(TX* text);
  7820. BOOL txIDM_UIINSERTCONTROL(TX* text);
  7821. BOOL txIDM_JUMPSCREENTOP(TX* text);
  7822. BOOL txIDM_JUMPSCREENEND(TX* text);
  7823. BOOL txIDM_UIREPLACECONTINUE(TX* text);
  7824. BOOL txIDM_SELECTJUMP(TX* text);
  7825. BOOL txIDM_DUPEPARA(TX* text);
  7826. BOOL txIDM_SELECTLINE(TX* text);
  7827. BOOL txIDM_UISEARCHPREV(TX* text);
  7828. BOOL txIDM_UISEARCHNEXT(TX* text);
  7829. BOOL txIDM_SETLYTOP(TX* text);
  7830. BOOL txIDM_SWITCHLY(TX* text);
  7831. BOOL txIDM_DISPCUR(TX* text);
  7832. BOOL txIDM_TOSEARCHBOX(TX* text);
  7833. BOOL txIDM_ISEARCH(TX* text);
  7834. BOOL txIDM_ISEARCHPREV(TX* text);
  7835. BOOL txIDM_ISEARCHRE(TX* text);
  7836. BOOL txIDM_COMPLETEPREV(TX* text);
  7837. BOOL txIDM_COMPLETENEXT(TX* text);
  7838. BOOL txIDM_UIGENE(TX* text);
  7839. BOOL txIDM_DUP(TX* text);
  7840. BOOL txIDM_UIINSERTTABLE(TX* text);
  7841. BOOL txIDM_RUBY(TX* text);
  7842. BOOL txIDM_PROOF(TX* text);
  7843. BOOL txIDM_DISPALL(TX* text);
  7844. BOOL txIDM_FLUSHTABLE(TX* text);
  7845. BOOL txIDM_FLUSHTABLEALL(TX* text);
  7846. BOOL txIDM_UISORT(TX* text);
  7847. BOOL txIDM_SWITCHBINARY(TX* text);
  7848. BOOL txIDM_UIADDTOFILE(TX* text);
  7849. BOOL txIDM_PRJ_UIOPEN(TX* text);
  7850. BOOL txIDM_PRJ_UISAVE(TX* text);
  7851. BOOL txIDM_PRJ_UISAVEADD(TX* text);
  7852. void txIDM_PRJ_SAVERESUME(TX* text);
  7853. BOOL txIDM_RESUME(TX* text);
  7854. BOOL txIDM_SWITCHDETAIL(TX* text);
  7855. BOOL txIDM_UIPRINTSTYLE(TX* text);
  7856. BOOL txIDM_UIPRINTSTYLESET(TX* text);
  7857. BOOL txIDM_UIPRINT(TX* text);
  7858. BOOL txIDM_UIPRINTEXEC(TX* text);
  7859. BOOL txIDM_PV_SWITCH(TX* text);
  7860. BOOL txIDM_PV_ZOOMOUT(TX* text);
  7861. BOOL txIDM_PV_ZOOMIN(TX* text);
  7862. BOOL txIDM_PV_ZOOMOUTD(TX* text);
  7863. BOOL txIDM_PV_ZOOMIND(TX* text);
  7864. BOOL txIDM_PV_ZOOMFIT(TX* text);
  7865. BOOL txIDM_PV_ZOOMFITX(TX* text);
  7866. BOOL txIDM_PV_ZOOMUNDO(TX* text);
  7867. BOOL txIDM_UIINSERTBITMAP(TX* text);
  7868. BOOL txIDM_INSERTTAGCHAR(TX* text);
  7869. BOOL txIDM_UICHARPROPERTY(TX* text);
  7870. BOOL txIDM_UIPARAPROPERTY(TX* text);
  7871. BOOL txIDM_UIINSERTFOOTNOTE(TX* text);
  7872. BOOL txIDM_FOOTNOTE(TX* text);
  7873. BOOL txIDM_INSERTFF(TX* text);
  7874. BOOL txIDM_SWITCHHEADLINE(TX* text);
  7875. BOOL txIDM_SWITCHHEADLINEPREV(TX* text);
  7876. BOOL txIDM_MACRO_HELP(TX* text);
  7877. BOOL txIDM_MACRO_HELPAPI(TX* text);
  7878. BOOL txIDM_SEARCHFUNCTION(TX* text);
  7879. BOOL txIDM_UICOMPLETE(TX* text);
  7880. BOOL txIDM_WINDOWFULLY(TX* text);
  7881. BOOL txIDM_WINDOWMULTI(TX* text);
  7882. BOOL txIDM_GREP(TX* text);
  7883. BOOL txIDM_HTML_BROWSER(TX* text);
  7884. BOOL txIDM_PROOFAUTO(TX* text);
  7885. BOOL txIDM_UIREWORDING(TX* text);
  7886. BOOL txIDM_UISPLCHK(TX* text);
  7887. BOOL txIDM_UISPLCHKCUR(TX* text);
  7888. BOOL txIDM_MACRO_UIEXEC(TX* text);
  7889. BOOL txIDM_TXC_CONFIG(TX* text);
  7890. //
  7891. BOOL _txIDM_SEND(TX* text,int idm);
  7892. BOOL _txIDM_UIIMEREGISTERWORD(TX* text,HWND hwndParent);
  7893. //
  7894. BOOL apIDM_MEMO(wchar* wszcmdline);
  7895. BOOL apIDM_GREP(wchar* wszcmdline);
  7896. BOOL apIDM_FILER(wchar* wszcmdline);
  7897. BOOL apIDM_ICON(void);
  7898. BOOL apIDM_MAILER(wchar* wszcmdline);
  7899. BOOL apIDM_TERMINAL(wchar* wszcmdline);
  7900. BOOL apIDM_HELP(wchar* wszcmdline);
  7901. #endif    // !__TXC__
  7902.  
  7903. //{###TX-Cサポート
  7904.  
  7905. //##TX-C専用のAPI
  7906.  
  7907. #if __TXC__
  7908. HWND TXAPI_(847) txGetNextEditor(TX* text);
  7909. BOOL TXAPI_(885) txInit(TX* text,mchar* szfilename);
  7910. BOOL TXAPI_(855) fileCopy(mchar* szfilenameSrc,mchar* szfilenameDst);
  7911. BOOL TXAPI_(856) fileDelete(mchar* szfilename);
  7912. BOOL TXAPI_(857) fileRename(mchar* szfilenameSrc,mchar* szfilenameDst);
  7913. int TXAPI_(858) mkdir(mchar* szpath);
  7914. int TXAPI_(859) rmdir(mchar* szpath);
  7915. BOOL TXAPI_(860) CommandExec(mchar* szline);
  7916. txstr TXAPI_(768) txstrcpylen(txstr dst,mchar* src,int lch);
  7917. txstr TXAPI_(769) _strmid(txstr dst,mchar* str,int offset,int lchmid);
  7918. txstr TXAPI_(770) _strleft(txstr dst,mchar* str,int lchleft);
  7919. txstr TXAPI_(771) _inttostr(txstr dst,int num);
  7920. txstr TXAPI_(772) _chartostr(txstr dst,int ch);
  7921. mchar* TXAPI_(773) strright(mchar* str,int lchright);
  7922. mchar* TXAPI_(774) strrear(mchar* str,int lchleft);
  7923. extern "stdlib" {
  7924.     BOOL CommandBar_mySetMenu(HWND hwndCB,WORD iButton,HMENU hmenuAdd);
  7925. }
  7926. #if !WINDOWSCE
  7927.     #define CommandBar_Height(hwnd)        (0)
  7928. #endif
  7929. #endif
  7930.  
  7931. //##TX-C3.0以前との互換
  7932.  
  7933. #if __TXC__
  7934. #define beepAsterisk()                    MessageBeep(0x0040)
  7935. #define beepDefault()                    MessageBeep(0)
  7936. #define beepExclamation()                MessageBeep(0x0030)
  7937. #define beepHand()                        MessageBeep(0x0010)
  7938. #define beepQuestion()                    MessageBeep(0x0020)
  7939. #define    txReplaceContinue(t)            txIdmExec(t,IDM_UIREPLACECONTINUE)
  7940. #define txSearch(text,sz)                txSearchEx(text,sz,SEARCH_NOSENSECASE|SEARCH_NOSENSEZENHAN)
  7941. #define txSearchPara(text,sz)            txSearchEx(text,sz,SEARCH_CUR|SEARCH_PARATOP)
  7942. #define txSearchPrev(text,sz)            txSearchEx(text,sz,SEARCH_CUR|SEARCH_PARATOP|SEARCH_PREV)
  7943. #define txGetCharPrev(text)                txGetPrevChar(text)
  7944. #define txGetWordBuff(text,sz,cch)        txGetWordEx(text,sz,cch)
  7945. #define informationex                    statprintf
  7946. #define isreturn(c)                        txchIsReturn(c)
  7947. #define iszenkaku(c)                    txchIsKanji(c)
  7948. #define txClipboardCopy(text)            txSelectCopy(text)
  7949. #define txClipboardCut(text)            txSelectCopyDelete(text)
  7950. #define txClipboardPaste(text)            txPaste(text)
  7951. #define txSelectTsPush(text)            txPrivatePush(text)
  7952. #define txTsClear(text)                    txPrivateClear(text)
  7953. #define txTsPaste(text)                    txPrivatePaste(text)
  7954. #define txTsPop(text)                    txPrivatePop(text)
  7955. #define txTsPopJump(text)                txPrivatePopJump(text)
  7956. #define exec(sz)                        WinExec(sz,SW_SHOWNORMAL)
  7957. #define wzExec(sz)                        wzexec(sz)
  7958. #define txofnGetOpenFileName(text,sz,szCaption)            txuiGetOpenFileName(text,sz,szCaption,NULL)
  7959. #define txofnGetOpenFileNameEx(text,sz,szCaption,mode)    txuiGetOpenFileName(text,sz,szCaption,NULL)
  7960. #define txofnReferFileName(text,sz,szCaption)            txuiGetOpenFileName(text,sz,szCaption,NULL)
  7961. #define dialogbig(sz)                    dialog(sz)
  7962. #define dialogGroup(hd,sz)
  7963. #define dialogGroupEnd(hd)
  7964. #define dialogSetGroupRight(hd,x)
  7965. #define dialogEdit(hd,sz,text,lcx,lcy)        dialogEditWz(hd,sz,text,lcx,lcy,WS_VSCROLL)
  7966. #define dialogInt(hd,sz,data,lcx,lcxBox)    dialogInteger(hd,sz,lcx,data,lcxBox)
  7967. #define dialogStr(hd,sz,txstr,lcx,lcxBox)    dialogTxstr(hd,sz,lcx,txstr,lcxBox)
  7968. #define dialogStrC(hd,sz,str,lcx,cch,lcxBox)    dialogString(hd,sz,lcx,str,cch,lcxBox)
  7969. #define dialogButtonCmd(hd,sz,szMacro,lcx)    dialogButtonBig(hd,sz,szMacro,lcx)
  7970. #define dialogRadioID                    dialogChoiceRadio
  7971. #define isopen(sz)                        SearchText(sz)
  7972. #define txSearchText(text,sz)            SearchText(sz)
  7973. #define txSearchTitle(text)                txHeadlineSearchNext(text)
  7974. #define txSearchTitlePrev(text)            txHeadlineSearchPrev(text)
  7975. #define txOpenNew(text)                    textFrameOpen(NULL)
  7976. #define call(sz)                        macroExec(sz,text)
  7977. #define fork(sz)                        forkstd(sz,NULL)    // WZ3.0とは若干意味が異なります。forkstdのAPIヘルプを参照してください。
  7978. #define forksw(sz,szSw)                    forkstd(sz,szSw)    // WZ3.0とは若干意味が異なります。forkstdのAPIヘルプを参照してください。
  7979. #endif
  7980.  
  7981. //##日付関数
  7982.  
  7983. #if __TXC__
  7984. int TXAPI_(866) timeGetEx(int mode);
  7985. #define timeGetDay()        timeGetEx(0)
  7986. #define timeGetDayofWeek()    timeGetEx(1)
  7987. #define timeGetDayofweek()    timeGetEx(1)    //WZ4.00Bp 991013 TX-C:timeGetDayofweek(WZ3と同じ名前)を追加
  7988. #define timeGetHour()        timeGetEx(2)
  7989. #define timeGetMinute()        timeGetEx(3)
  7990. #define timeGetMonth()        timeGetEx(4)
  7991. #define timeGetSecond()        timeGetEx(5)
  7992. #define timeGetYear()        timeGetEx(6)
  7993. #define timeGetYoubi()        ((mchar*)timeGetEx(7))
  7994. #endif
  7995.  
  7996. #endif    // RC_INVOKED
  7997. #endif    //__WZ_H
  7998.