home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 November
/
VPR9711A.ISO
/
VPR_DATA
/
Special
/
Wz30demo
/
wz30demo.lzh
/
STD
/
_TEXT.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-06-16
|
247KB
|
6,565 lines
// TX object define
// (c)1995-97 TY
// included by WZ.EXE and TX-C
#ifndef __TEXT_H
#define __TEXT_H
// extern ""する関数は、_pascalか_cdeclか明示すること!
// sizeof(BOOL) == 2.
// テキストバッファの構造
// text1 空のこともありうる
// gap 最低表示行一行の最大長 + @(20位)は確保しておくこと
// text2
// LFLF ストッパ
typedef struct tagtx tx;
typedef struct tagtx TX;
//##version.h
#if 0
#define STRICT // typecheck強化
// これでコンパイルしたバイナリは実行できない
#endif
#define __DEVDRV__ "C:" // 開発ドライブ
#define __WZ__ 0x3002 //1.00D WZのバージョン番号
#define VER_WZEDITOR "3.00B"
#define VER_WZFILER VER_WZEDITOR
#define VER_TXC VER_WZEDITOR
#define VER_WZGREP VER_WZEDITOR
#define VER_WZCONSOLE VER_WZEDITOR
// 次のバージョンの設定も忘れずに
// _compile.c "TXCVERSION" __TXC__
// _compile.c "TX-PCODE"
// _text2.c "TX-ATRTEXT"
// _undo.c "TX-UNDO"
// _share.c "TX-PROJECT"
// _txc2.c "TX-EXPORT"
// apidb2.c "TX-APIDB"
// _config.c "TX-CONFIGxxx"
// WZ2.0の機能を有効にする?
#define __WZ2__ 01
#define __TXCOPTI__ 0 // 埋め込み関数使用?
#define __CCJAPAN__ // 日本語Cコンパイラ依存部分
#define __BYTEORDERLOW__ // バイト順(low-high)に依存部分
#define __SINGLETASK__ // シングルスレッド依存部分
#define __ANSICODE__ // ANSI文字コード依存部分
#define __END__ // 依存部分終了
#define __BINCOMPATIBLE__ // WZ16/32でバイナリコンパチ
// 構造体の場合、メンバの型は次の型のみ使える
// BYTE,WORD,DWORD,
// SIGNED_BYTE,SIGNED_WORD,SIGNED_DWORD,
// BBOOL,mchar
//##base.h
#ifdef __TXC__
#pragma TXCEX+
// LPSTR等が<char>なので、漢字を扱うのが不便。
// そこで<char=unsigned char>とする
#pragma char=unsigned
//#ifndef ___WIN_TX_H
extern "USER.EXE" {
#define VOID void
#define PASCAL _pascal
#define CDECL _cdecl
#define FAR
#define NEAR
typedef int BOOL;
#define FALSE 0
#define TRUE 1
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned int UINT;
typedef signed long LONG;
typedef int INT;//1.00F EXEのint型
#ifdef __FLAT__
#define MAKELONG(a, b) ((LONG)(((WORD)(a)) | (((DWORD)((WORD)(b))) << 16)))
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
#else
#define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)((UINT)(w) >> 8))
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
#endif
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;
#define MAKELPARAM(low, high) ((LPARAM)MAKELONG(low, high))
#define MAKELRESULT(low, high) ((LRESULT)MAKELONG(low, high))
#ifndef NULL
#define NULL 0
#endif
typedef char NEAR* PSTR;
typedef char NEAR* NPSTR;
typedef char FAR* LPSTR;
typedef const char FAR* LPCSTR;
// LPSTR,LPCSTRはsigned charで、日本語が扱いにくいので使わない
typedef BYTE NEAR* PBYTE;
typedef BYTE FAR* LPBYTE;
typedef int NEAR* PINT;
typedef int FAR* LPINT;
typedef WORD NEAR* PWORD;
typedef WORD FAR* LPWORD;
typedef long NEAR* PLONG;
typedef long FAR* LPLONG;
typedef DWORD NEAR* PDWORD;
typedef DWORD FAR* LPDWORD;
typedef void NEAR* PVOID;//1.00F
typedef void FAR* LPVOID;
#define MAKELP(sel, off) ((void FAR*)MAKELONG((off), (sel)))
#define SELECTOROF(lp) HIWORD(lp)
#define OFFSETOF(lp) LOWORD(lp)
#define FIELDOFFSET(type, field) ((int)(&((type NEAR*)1)->field)-1)
#ifdef __FLAT__
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;
#else
#ifdef STRICT
typedef const void NEAR* HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; \
typedef const struct name##__ NEAR* name
#define DECLARE_HANDLE32(name) struct name##__ { int unused; }; \
typedef const struct name##__ FAR* name
#else /* STRICT */
typedef UINT HANDLE;
#define DECLARE_HANDLE(name) typedef UINT name
#define DECLARE_HANDLE32(name) typedef DWORD name
#endif /* !STRICT */
#endif
//
// std define for Windows
//
#ifdef __FLAT__
#define __stdcall _pascal
#define __import
#define WINAPI __stdcall __import
#define CALLBACK __stdcall
#else
#define WINAPI _pascal
#define CALLBACK _pascal
#endif
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(HMENU);
typedef int HFILE;
#define HFILE_ERROR ((HFILE)-1)
DECLARE_HANDLE(HGLOBAL);
DECLARE_HANDLE(HINSTANCE);
typedef HINSTANCE HMODULE;
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HPEN);
DECLARE_HANDLE(HBRUSH);
DECLARE_HANDLE(HRGN);
DECLARE_HANDLE(HPALETTE);
DECLARE_HANDLE(HFONT);
DECLARE_HANDLE(HICON);
DECLARE_HANDLE(HDC);
typedef HICON HCURSOR;
typedef DWORD COLORREF;
#ifdef __FLAT__
typedef int (FAR WINAPI *FARPROC)();
#else
typedef int (CALLBACK* FARPROC)();
#endif
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
#ifdef __FLAT__
typedef struct tagRECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
typedef struct tagPOINT {//2.94
LONG x;
LONG y;
} POINT;
typedef struct tagSIZE {//2.94
LONG cx;
LONG cy;
} SIZE;
#else
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
typedef struct tagPOINT {//2.94
int x;
int y;
} POINT;
typedef struct tagSIZE {//2.94
int cx;
int cy;
} SIZE;
#endif
// Virtual key codes
#define VK_BACK 0x08 // [Backspace]
#define VK_TAB 0x09 // [Tab]
#define VK_CLEAR 0x0C //
#define VK_RETURN 0x0D // [Enter]
#define VK_ESCAPE 0x1B // [Esc]
#define VK_PRIOR 0x21 // [PageUp]
#define VK_NEXT 0x22 // [PageDown]
#define VK_END 0x23 // [End]
#define VK_HOME 0x24 // [Home]
#define VK_LEFT 0x25 //
#define VK_UP 0x26 //
#define VK_RIGHT 0x27 //
#define VK_DOWN 0x28 //
#define VK_INSERT 0x2D // [Ins]
#define VK_DELETE 0x2E // [Del]
#define VK_HELP 0x2F // [Help]
}
#define LF_FACESIZE 32
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
//#endif// ___WIN_TX_H
// 基本型
#include "base.h"
//1.91A txstrに格納できる文字数-1を返すcchtxstr(str)マクロを追加
#define cchtxstr(str) *(((WORD*)(str)) - 1)
// Windowsからコールバックされる関数
#ifdef __FLAT__
#define TXCALLBACK __stdcall
#else
#define TXCALLBACK _pascal _arg16 // ※_arg16は_pascal/_cdeclの後に指定
#endif
#if __TXCOPTI__
typedef DWORD SIZE_I;
#define DECL_I _pascal
#else
typedef WORD SIZE_I;
#define DECL_I _cdecl
#endif
// C std libs
extern "TX" {
typedef UINT size_t; //1.00F __FLAT__対応(unsigned short -> UINT)
//{#API}
//{###文字列操作}
//文字列の長さを数えたり、コピー、比較、走査する機能を提供します。
int _cdecl _txapibase strlen(mchar *str);
// strの文字数(バイト数)を返す。漢字は2バイトとして数える。
// ヌルターミネータは数えない。
pmchar _cdecl _txapibase strcpy(mchar *str1,mchar *str2);
// str1にstr2をコピー
// ※バッファの長さチェックはされない
pmchar _cdecl strncpy(mchar *str1,mchar *str2,size_t len);
// str1にstr2を最大lenバイトコピー
// ※バッファの長さチェックはされない
pmchar _cdecl _txapibase strcat(mchar *str1,mchar *str2);
// str1の末尾にstr2をコピーして連結
// ※バッファの長さチェックはされない
pmchar _cdecl strnset(mchar *str,int ch,size_t len);
// str1の先頭からlenバイトに文字chをセット
// (len > strlen(str))なら、len = strlen(str)として実行
// ※バッファの長さチェックはされない
int _cdecl _txapibase strcmp(mchar *str1,mchar *str2);
// 2つの文字列を比較
// {返り値}str1がstr2より小さい場合、負の値、
// str1がstr2と等しい場合、0、
// str1がstr2より大きい場合、正の値、を返す
int _cdecl _txapibase stricmp(mchar *str1,mchar *str2);
// strcmpと同じだが、半角英大小文字は区別しないで比較
int _cdecl _txapibase strncmp(mchar *str1,mchar *str2,size_t len);
// strcmpと同じだが、最大len文字まで比較
int _cdecl _txapibase strnicmp(mchar *str1,mchar *str2,size_t len);
// strncmpと同じだが、半角英大小文字は区別しないで比較
pmchar _cdecl _txapibase strstr(mchar *str1,mchar *str2);
// str1を調べ、str2が最初に現れる位置をポインタで返す
// 見つからなければ0を返す
pmchar _cdecl _txapibase stristr(mchar *str1,mchar *str2);
// strstrと同じだが、半角英大小文字は区別しないで比較
pmchar _cdecl _txapibase stristrword(mchar *str1,mchar *str2);
// stristrと同じだが、str2を単語としてstr1から検索
// 1.00Cで追加
pmchar _cdecl _txapibase strchr(mchar *str1,WORD c);
// str1を調べ、文字cが最初に現れる位置をポインタで返す
// cに全角文字を指定できます
// {返り値}見つからなければ0を返す
pmchar _cdecl _txapibase strichr(mchar *str1,WORD c);
// strichrと同じだが、半角英大小文字は区別しないで比較
pmchar _cdecl _txapibase strchrs(mchar *str1,mchar *found);
// strchrと同じですが、found文字列の各文字のうち、
// 最初に現れる文字の位置をポインタ返します
// 見つからなければ0を返します
// foundには全角文字を含めることができます
pmchar _cdecl _txapibase strupr(mchar *str);
// 文字列内の半角英小文字を大文字に変換
pmchar _cdecl _txapibase strlwr(mchar *str);
// 文字列内の半角英大文字を小文字に変換
long _cdecl _txapibase atoi(const mchar *str);
// 文字列を整数に変換し、結果を返す
// 文字列が次の形式の時だけ変換。そうでなければ0を返す
// [タブ|半角スペースの並び][符号][数字]
// 認識されない文字が現れた所で変換を終了
// オーバーフローは考慮しない
void vsprintf(mchar *szdst,mchar *_format,void *pparam);
// %c,%ld,%d,%u,%s,%pだけ使えるvsprintf
//{###ファイル操作}
int _cdecl rename(const mchar *szoldname,const mchar *sznewname);
// oldnameのファイルをnewnameにリネーム
// ドライブを指定する場合、oldとnewで同じでないといけない
// ディレクトリは同じでなくてもよい
// {返り値}成功すると0、失敗すると-1を返す
int _cdecl remove(mchar *szfilename);
// ファイルを削除
// ファイルがオープンされている場合、削除する前に必ずクローズすること
// {返り値}成功すると0、失敗すると-1を返す
int _cdecl mkdir(const mchar *szpath);
// ディレクトリを作成
// {返り値}成功すると0を返す
int _cdecl rmdir(const mchar *szpath);
// ディレクトリを削除
// {返り値}成功すると0を返す
//{###メモリ操作}
LPVOID DECL_I _txapibase memcpy(void *mem1,void *mem2,SIZE_I size);
// mem2のsizeブロックを、mem1にコピー
// mem1とmem2が重複する場合の動作は未定義
LPVOID _cdecl _txapibase memmove(void *mem1,void *mem2,size_t size);
// mem2のsizeブロックを、mem1にコピー
// mem1とmem2が重複していても正確に動作
LPVOID _cdecl _txapibase memset(void *mem1,int c,size_t size);
// mem1のsizeバイトを、バイトデータcで埋める。
int DECL_I _txapibase memcmp(void *mem1,void *mem2,SIZE_I size);
// 2つのメモリブロックの内容を比較
// {返り値}mem1がmem2より小さい場合、負の値、
// mem1がmem2と等しい場合、0、
// mem1がmem2より大きい場合、正の値、を返す
LPVOID _txapibase memchr(LPVOID mem,int ch,size_t size);
// メモリブロック:mem,サイズ:sizeからchを探す。見つかればポインタを返す
// 見つからなければNULLを返す
//2.00Bで追加
LPVOID _cdecl _txapibase malloc(DWORD size);
// sizeバイトのメモリブロックを確保してポインタを返す
void _cdecl _txapibase free(LPVOID pmem);
// mallocで確保したメモリブロックを解放する
LPVOID _cdecl _txapibase realloc(LPVOID pmem,DWORD size);
// mallocで確保したメモリブロックのサイズを変更する
//{#ENDAPI}
#if 0 // 未サポート
DWORD _cdecl memsize(LPVOID pmem);
#endif
}
#include "std.txh"
#endif// __TXC__
//1.97
typedef signed char SIGNED_BYTE;
typedef signed short SIGNED_WORD;
typedef signed long SIGNED_DWORD;
#ifdef __TXC__
extern "tx" {
#endif
//##_time.h
typedef long TIME;
typedef struct {
int tm_sec; // 秒
int tm_min; // 分
int tm_hour; // 時(0-23)
int tm_mday; // 月内の通し日数
int tm_mon; // 月(0-11)
int tm_year; // 年(西暦-1900)
int tm_wday; // 曜日(日曜:0-土曜:6)
int tm_yday; // 年内の通し日数
int tm_isdst; // 0:夏時間が無効,1:有効
} TM;
//{#API}
//{###時間}
void _cdecl timeGet(TIME *time);
// 現在時刻を整数値としてtimeに得る
//1.00CからはitimeGetNowを使って下さい。
void _cdecl timeGetLocal(TM *tm,TIME *time);
// 整数値の時刻timeを、tmに変換する
//1.00CからはitimeToTmを使って下さい。
//{#ENDAPI}
//##_macro.h
// コンパイラオプション
// これを変更したら、config.cの"_txcConfig"と"_compile.c"の_copt、
// _share.hのTXCONFIGSHAREも変更すること
typedef struct __BINCOMPATIBLE__ {
DWORD sizeCode;
WORD nErrorMessage;
BBOOL fWarnFuncNotCall;
BBOOL fWarnSignMismatch;
BBOOL fWarnLoseDigit;
BBOOL fReportTxapi;
BBOOL fReportAutoDef;
BBOOL fnotxcex;
BBOOL fstdout; //1.00Fで仕様変更 [stdoutのオープン]
// 0:エラー時だけ
// 1:エラー,警告
// 2:いつも
BBOOL fautomake; // .cをユーザが眺めてて、書き換えたりしてるうち、
// うっかりautosaveされてしまうことがあるため
BBOOL fNoAutoDef; //2.00B 変数の自動定義を無効にする?
BYTE reserved[19];
} TXCOPTION;
// マクロ関数のアドレス構造体
typedef struct {
WORD imodule; // モジュール
DWORD address; // アドレス (0なら、無効アドレス)
} PMACROFUNC;
// exec stat
typedef WORD MPEXECSTAT;
#define MPEXECERR 1 // 実行できない
#define MPEXECEND 2 // 実行は終了した
#define MPEXECSLEEP 3 // 実行停止中
#define MPEXECNONE 4 // 実行しなかった
// 関数が見つからなかった
// (mpAwakeで起きなかった)
#define MPEXECFORK 5 // forkした
// macro kind
typedef BYTE TXPKIND; //1.00H WORD->BYTE
#define TXP_ERROR 0 // エラー
#define TXP_TXM 1
#define TXP_TXE 2
#define TXP_TXW 3
#define TXP_TLL 4
#define TXP_TWA 5 //2.0
// getch
#define GC_VK 0x7000U
#define GC_SHIFT 0x0100U
#define GC_CONTROL 0x0200U
#define GC_MENU 0x0400U
#define GC_ISVK(c) (((WORD)(c) & 0xF000U) == 0x7000U)
#define GC_GETVK(c) (GC_ISVK(c) ? (c) & 0xFF : 0)
#define GC_WITHSHIFT(c) ((c) & GC_SHIFT)
#define GC_WITHCONTROL(c) ((c) & GC_CONTROL)
#define GC_WITHMENU(c) ((c) & GC_MENU)
#define GCVK_LEFT (GC_VK|VK_LEFT)
#define GCVK_UP (GC_VK|VK_UP)
#define GCVK_RIGHT (GC_VK|VK_RIGHT)
#define GCVK_DOWN (GC_VK|VK_DOWN)
#define macroFreeWndProc macroFreeCallBackProc
//{#API}
//{###マクロ}
#ifdef __TXC__
void _cdecl _txapibase sleep(DWORD tm);
// tmミリ秒だけマクロの実行を休んで制御を他アプリに渡します
// このAPIはWZとWZ以外の他アプリと同期を取る事を主な目的として提供されています。
// sleep中は、マクロの実行はストップし、WZのメッセージループに処理が移りますので、
// 思わぬ動作をすることがあります。
// また、sleepは、sleepを呼び出したマクロコンテキストが現在実行されているときに有効です。
// sleep中に、callなどで新しいマクロコンテキストが作られて実行されると無効になります。
#endif
TXCHAR _cdecl getch(void);
// キー入力を待ちます。入力されたキーを返します
// <例> (getch() == 'あ')、(getch() == ' ')、(getch() == '\r')
// 矢印キーは、GCVK_LEFT,GCVK_UP,GCVK_RIGHT,GCVK_DOWNを返します。
// その他、文字を生成しないキー入力は次のように調べます
// c = getch();として、キー入力後、
// GC_GETVK(c) 押されたキーのコードを返す
// VK_BACK [Backspace]
// VK_TAB [Tab]
// VK_CLEAR
// VK_RETURN [Enter]
// VK_ESCAPE [Esc]
// VK_PRIOR [PageUp]
// VK_NEXT [PageDown]
// VK_END [End]
// VK_HOME [Home]
// VK_LEFT,VK_UP,VK_RIGHT,VK_DOWN(矢印キー)
// VK_INSERT [Ins]
// VK_DELETE [Del]
// VK_HELP [Help]
// 0 文字を生成するキー入力だった
// GC_WITHSHIFT(c) SHIFTが同時に押されていたら真
// GC_WITHCONTROL(c) CONTROLが同時に押されていたら真
// GC_WITHMENU(c) MENUが同時に押されていたら真
// ※漢字が入力されたときはSHIFTキーなどは取れません
// GC_ISVK(c) 文字を生成しないキーなら真
// ※BS/TAB/RETURN/ESC/^H/^I/^M/^[が入力されたときも真
// <例>
// c = getch();
// if (GC_GETVK(c) == VK_INSERT) { // [Ins]キー
// if (GC_WITHSHIFT(c)) { // SHIFTが押されている
BOOL _cdecl macroHookWndBase(void);
// マクロから、WZのウィンドウ(text->wndbase)のプロシジャーをフックします。
// 成功したらTRUEを返します。
// マクロに、__wndprocbase関数がないとエラーとしてFALSEを返します
// __wndprocbaseでは、フックしたらHOOK_CAPTURE,
// しなかったらHOOK_CONTINUEを返してください
// フックした場合、WZのウィンドウプロシジャは呼ばれません
BOOL _cdecl macroHookWndText(void);
// マクロから、WZのウィンドウ(text->wndtext)のプロシジャーをフックします。
// マクロに、__wndproctext関数がないとエラーとしてFALSEを返します
HOOKRESULT macroHookWndBaseReturn(DWORD ret);
// __wndprocbaseで、WZのウィンドウプロシジャが返す値をretにセットします。
// __wndprocbaseで、HOOK_CAPTUREを返した場合、セットした値が返されます。
// セットが成功したらHOOK_CAPTURE、失敗したらHOOK_ERRORを返します。
HOOKRESULT macroHookWndTextReturn(DWORD ret);
// __wndproctextで、WZのウィンドウプロシジャが返す値をretにセットします。
BOOL _cdecl macroHookWndBaseFree(void);
// macroHookWndBaseのフックを解放します
// 成功したらTRUEを返します。
// 1.00Cで追加
BOOL _cdecl macroHookWndTextFree(void);
// macroHookWndTextのフックを解放します
// 成功したらTRUEを返します。
// 1.00Cで追加
FARPROC _cdecl macroMakeWndProc(mchar *szname);
// マクロのszname関数を、Windowsからコールバックされる
// sznameは大文字小文字は区別しません
// ウィンドウプロシジャーとして登録します。
// "funcname"のように指定すると、このAPIを呼び出したマクロのfuncname関数、
// "module.fumcname"のように指定すると、モジュールのfuncname関数を登録します。
// szFuncNameは"TXCALLBACK"関数として定義しないといけません。
// 成功したら関数ハンドルを返します。このハンドルをWindowsAPIに
// 渡すと、マクロの関数がコールバックされます。
// 失敗したら0を返します
// 不要になったらmacroFreeWndProcを呼び出して解放してください。
// macroMakeCallBackProcとあわせて10個までしか同時に登録できません
FARPROC _cdecl macroMakeCallBackProc(mchar *szFuncName,WORD sizeArg);
// マクロのszFuncName関数を、Windowsからコールバックされる
// プロシジャーとして登録します。
// szFuncNameはmacroMakeWndProcと同じように指定します。
// sizeArgには、szFuncNameが受け取る引数のバイト数を指定します。
// 各引数を、WZ32では各4バイト、
// WZ16ではchar/int/BYTE/WORD/BOOLは2バイト、他は4バイトと数え、
// 合計します。
// 成功したら関数ハンドルを返します。このハンドルをWindowsAPIに
// 渡すと、マクロの関数がコールバックされます。
// 失敗したら0を返します
// 不要になったらmacroFreeCallBackProcを呼び出して解放してください。
// WZ32では、sizeArgには16しか指定できません。運がいいと、8か32を指定しても
// 成功することがあります。この制限はそのうち解除する予定です。
void _cdecl macroFreeCallBackProc(FARPROC lpfnMacroCallBackFunc);
// macroMakeWndProc,macroMakeCallBackProcで登録した
// コールバック関数を削除します。
// 関数macroFreeWndProcを呼び出しても同じです。
MPEXECSTAT _cdecl macroCall(mchar *szName,LPDWORD lpRet,WORD nArg,...);
// szNameのマクロの関数を呼び出します
// szNameは大文字小文字は区別しません
// "launcher":launcherマクロのmain関数を呼び出す
// "launcher.root":launcherマクロのroot関数を呼び出す
// このように、「マクロ名.関数名」の書式で指定します。
// マクロ名は、TX-PCODEファイルの拡張子を取り除いて指定します。
// マクロ名を絶対パスで指定すると、そのパスだけ調べます。
// ファイル名だけで指定すると、txpathで検索します。
// lpRetには関数の返り値の代入先を指定します。0を指定すると代入されません
// nArgには引数の個数を指定します。
// nArgに続けて、引数を指定します。引数は全て4バイトとして指定してください
// 例:macroCall("abc",0,3,(DWORD)a,(DWORD)b,(DWORD)c);
BOOL macroExist(mchar *szname);
// マクロの指定関数が存在するか調べて結果を返します。
// sznameは大文字小文字は区別しません
// 例:macroExist("launcher"); //launcherマクロのmain関数があるか?
// 例:macroExist("launcher.root"); //launcherマクロのroot関数があるか?
BOOL macroGetFuncAddress(mchar *szFunction,PMACROFUNC *pfunc);
// この関数を呼び出したマクロのszFunction関数のポインタを、
// pfuncに取得します。
// szFunctionは大文字小文字は区別しません
// "module.fumcname"のように指定すると、モジュールのfuncname関数のポインタを取得します
// 取得できたか返します。
MPEXECSTAT _cdecl macroCallAddress(PMACROFUNC *pfunc,LPDWORD lpRet,WORD nArg,...);
// macroCallと同じですが、
// マクロ関数を、マクロ関数ポインタで指定します。
MPEXECSTAT macroCallAddressV(PMACROFUNC *pfunc,LPDWORD lpRet,WORD sizeArg,LPBYTE pArg);
// macroCallAddressと同じですが、
// 引数を、引数メモリブロックへのポインタとサイズで指定します。
MPEXECSTAT macroCallStr(mchar *szNameArg,LPDWORD lpRet);
// szNameArgに呼び出すマクロ関数名と引数もまとめて指定し、呼び出します。
// マクロ関数名は大文字小文字は区別しません
// 引数は4個までです。数値または文字列を渡せます。
// !引数チェックはしないので注意してください。引数チェックは追加する予定です。
// 数値を指定するには、そのまま記述します。-を付ければ負の値になります。
// '\'の特殊な意味を消して文字列を指定するには[]で囲みます。
// []を使うとパス名を簡単に指定できます。
// '\'の特殊な意味を消さずに文字列を指定するには{}で囲みます。
// 例:macroCallStr("module(123,{abc\n},[a:\log\nif\*.*])",0);
// 例:macroCallStr("module.funcname(123,{abc\n},[a:\log\nif\*.*])",0);
LPBYTE macroGetFileName(void);
// この関数を呼び出したマクロのファイル名を、
// 拡張子は付けずにフルパスで返します
// 返された内容を変更してはいけません。
BOOL macroCompile(mchar *szname);
// sznameのマクロをmakeし、コンパイルし、組み込みます
// コンパイルできたか返します
// すでに組み込まれていればコンパイルしません
BOOL macroFlush(mchar *szname);
// sznameのマクロをmakeし、コンパイルします。組み込みは行いません
// コンパイルできたか返します
// すでに組み込まれていてもコンパイルします
// コンパイル中のメッセージは出しません。
TXPKIND macroGetKind(mchar *szname);
// sznameのマクロの種類を返します
// マクロをロードして、判別します。
// TXP_TXM,TXP_TXE,TXP_TXW,TXP_TLLのどれかを返します。
// マクロがロードできないなど、エラーの場合は0を返します。
LPVOID macroGetExport(mchar *szfilename,DWORD *size);
// szfilenameのマクロファイルの#EXPORT情報があれば、
// グローバルメモリをmemAllocして読み込んで、ポインタを返します。
// 使い終わったら、呼び出し側でmemFreeしてください。
// *sizeに#EXPORT情報のサイズを返します。
// szfilenameにはTX-PCODE形式のファイル名を拡張子も含めフルパスで指定してください。
// szfilenameのファイルを_lopenして調べます
// なければNULLを返します
mchar* macroGetFuncName(mchar *szmacro,int ifunc);
// szmacroのマクロの外部にEXPORTする関数の名前を取得します
// ifuncに-1を指定すると、EXPORTする関数の数(N)を返します
// ifuncに0から(N-1)を指定すると関数名を返します
mchar* macroGetFullFileName(mchar *szmacro,mchar szfilename[CCHPATHNAME]);
// sznameのマクロのファイル名を
// 拡張子(.txm,.tll,.txe)を含めてフルパスで返します
// エラーのときはszfilename[0] = 0とします。
DWORD TXAPI txCall(TX* text,mchar* szApi);
// szApiにTXCMDのTXAPI(txJumpFileTop等)を指定すると、それを実行して、
// 結果を返します。
// szApiにマクロコマンド名(search.txuiSearchPrev等)を指定すると、そのマクロを
// 呼び出して結果を返します。
// いずれの場合も、引数にtext一つを取るAPI、マクだけが指定できます。
//2.98 970305 new
//{#ENDAPI}
#ifndef __TXC__
int mpGetExec(void);
BOOL mpIsGetch(void);
BOOL mpIsFetch(void);
BOOL mpIsSuspend(void);//1.01A
void mpGetch(TXCHAR wParam);
MPEXECSTAT mpAwake(void);
BOOL macroDump(mchar *szName);
void macroFreeAll(void);
void macroSavePrmAll(void);
void macroLoadPrmAll(void);
void *macroInit(WORD sizeusermem);
BOOL macroTerm(void);
void txcCloseWindow(void);
BOOL macroIsCompile(mchar *szname);
DWORD call(mchar *szNameArg);
#ifdef __FLAT__
void _cdecl itimeFromFileTime(TIME *time,FILETIME *ft);
#endif
#endif// __TXC__
//##_key.h
typedef WORD TXFUNC; // function number
#define CCHKEY 20 // キーボードのキー表記を文字列で表した時の最大長
#define TXK_MAXPRE 10 // 2ストロークキーMAX
//##TX key code
#define TXK_NULL 0x00 // NULL
#define TXK_ASCIITOP 0x01 // ASCII(0x40)
#define TXK_ASCIIEND 0x20 // ASCII(0x5F)
#define TXK_NUMTOP 0x21 // 2ストロークのときは,TXK_CONTROLにとって代わる
#define TXK_NUMEND 0x2A // 同上
#define TXK_CONTROLTOP 0x21 // コントロールコード先頭
#define TXK_RLUP 0x21 // VK_PRIOR
#define TXK_RLDN 0x22 // VK_NEXT
#define TXK_INS 0x23
#define TXK_DEL 0x24
#define TXK_UP 0x25
#define TXK_LEFT 0x26
#define TXK_RIGHT 0x27
#define TXK_DOWN 0x28
#define TXK_HOME 0x29 // VK_HOME(98:CLR)
#define TXK_END 0x2A // VK_END(98:HELP)
#define TXK_ESC 0x2B
#define TXK_TAB 0x2C
#define TXK_BS 0x2D
#define TXK_RET 0x2E
#define TXK_SPACE 0x2F
#define TXK_MOUSEL 0x30
#define TXK_MOUSEL2 0x31
#define TXK_MOUSEL3 0x32
#define TXK_MOUSEL4 0x33
#define TXK_MOUSER 0x34
#define TXK_MOUSERCLIP 0x35
#define TXK_F1 0x36
#define TXK_F15 (TXK_F1 + 15 - 1)
#define TXK_CONTROLEND TXK_F15 // コントロールコードこれまで
#define TXKSIZE (TXK_CONTROLEND + 1)
#define TXK_S_SHIFT (TXKSIZE * 1)
#define TXK_S_CONTROL (TXKSIZE * 2)
#define TXK_S_SHIFTCONTROL (TXKSIZE * 3)
#define TXK_S_MENU (TXKSIZE * 4)
#define TXK_S_SHIFTMENU (TXKSIZE * 5)
#define TXK_S_CONTROLMENU (TXKSIZE * 6)
#define TXK_S_SHIFTCONTROLMENU (TXKSIZE * 7) //1.00Cで追加
#define TXK_S_PRE(i) (TXKSIZE * 8 + (TXK_NUMEND + 1) * (i))
// Shiftキーを追加したらwzkeyToSzkeyも変更すること
//##TX function code
#define TXF_KEYUP 9
#define TXF_KEYDOWN 10
typedef struct {
WORD iName; // (szName)
// tMacroNameBuffからのオフセット
WORD lchName;
} MACRONAME;
typedef struct {
mchar pre[CCHKEY];
int lchpre;
} PREKEY;
typedef struct {
// 2ストロークキー
int npre;
PREKEY pre[TXK_MAXPRE];
// キーに割り当てられたコマンド
WZCMD txfuncFromVzk[TXK_S_PRE(TXK_MAXPRE)];
} KEY;
#ifndef __TXC__
BOOL IsIgnoreWM_CHAR(WPARAM wParam);
TXFUNC txfuncFromStr(mchar *pFind,int lchFind);
LPVOID txfuncGetAddress(TXFUNC hfunc);
BOOL txfuncExec(tx *text,TXFUNC hfunc,int txk,int n);
DWORD txfuncCall(tx *text,TXFUNC hfunc,BOOL fMacro,int nRepeat);
BOOL wzkeyInit(mchar* szkey,BOOL ffirstprocess);
void wzkeyTerm(void);
BOOL ProcWM_KEY(tx *text,UINT message,WPARAM wParam,LPARAM lParam);
void autosaveCheckAndExec(tx *text);
void keyRescue(void);
void keyIdle(void);
MPEXECSTAT callmacro(tx *text,mchar *szfunc,DWORD *ret);
void statusbarClear(TX* text);
void autosaveAddCmd(tx *text,BOOL fedit);
BOOL keymacroDoing(void);
BOOL keymacroPop(void);
BOOL keymacroAdd(WZCMD wzcmd);
BOOL keymacroRecording(void);
BOOL keymacroExist(void);
void keymacroRecord(void);
BOOL keymacroStop(int txk);
void keymacroPlay(tx *text);
BOOL keymacroPlayStep(tx *text);
void keymacroPlayContinue(tx *text);
#endif// __TXC__
//##_text.h
#define EDITORNAME "WZ Editor"
// 基本型定義
typedef DWORD NLINE; // 表示行番号
typedef DWORD NPARA; // 論理行番号
typedef WORD NPAGE; // ページ番号
typedef DWORD IFILE; // テキストファイルインデックス
typedef UINT IMEM; // CPUネイティブのメモリアクセスインデックス型
typedef UINT IBUFF; // テキストバッファインデックス
#ifndef __TXC__
typedef mchar * txstr;
#endif
//1.90
#ifdef __FLAT__
#define IBUFF_ERROR ((IBUFF)0xFFFFFFFFU)
#else
#define IBUFF_ERROR ((IBUFF)0xFFFFU)
#endif
// 文字数定義
#ifdef __FLAT__
#define CCHLINE 512U // 表示行一行の最大文字数
// (\0、禁則追い出し域も含む)
#else
#define CCHLINE 251U // 表示行一行の最大文字数
// (\0、禁則追い出し域も含む)
#endif
#define CCHWORD 80 // 検索文字列サイズ(最大CCHLINE程度)
// 一般的な文字列の長さ
#define CCHSWORD 40 // CCHWORDの半分
#define CCHNAME 30 // 各種識別子
#define MINWIDTH 10U // 最小折り返し幅
#define MAXWIDTH (CCHLINE-11U) // 最大折り返し幅(禁則域は除く)
#define MAXTABSIZE 64 // 最大タブサイズ
#define MAXMARK 5 // 最大マーク数
#define CCHMARK 40 // マーク文字列
#define CCHLPSTYLE 40 // 印刷スタイル名
// テキストバッファ関連
#define TEXTBUFFSIZE 65520U //1.00F (IBUFF) -> U , 65536U-16U -> 65520U
// テキストバッファサイズ
// 16の倍数であること。最大、65536-16=65520まで。
// これはあくまで確保するサイズ。
// バッファに入っているテキストデータのバイト数は、
// tx.buffsizeに入っている。
#define MAXPARASIZE 8192U //1.00F (IBUFF) -> U
// 論理行の最大サイズの目安
// これを越える論理行も編集できるが、折り返し表示、
// 論理行頭・行末ジャンプ・削除がいい加減になる。
// 編集内容を破壊したり、飛んだりすることはない。
#define STDGAPSIZE 2048U //1.00F (IBUFF) -> U
// 最低2048、最大8192程度
// (CCHLINE * 2)より大きいこと
#define STDSWAPSIZE (TEXTBUFFSIZE / 2)
// 一度にSwapIn/Outする標準サイズ
// 最大サイズは、MAXSWAPSIZE
#define MAXSWAPSIZE (STDSWAPSIZE + MAXPARASIZE)
// 一度にSwapIn/Outする最大サイズ
// (STDSWAPSIZE + MAXPARASIZE)より大きいこと
#define MAXVIEWPAGE 1024U //1.00F U
// ViewMode時、最大(MAXVIEWPAGE * 32KB)のファイルを表示できる
//## ヒュージメモリブロック サブアロケーター
//2.97 970217 start
// NULL = 0
typedef WORD TYP;
#define TYPMAXBLOCKSIZE 4080
typedef struct __BINCOMPATIBLE__ {
BYTE HUGE* hpMem; // サブアロケートに使うメモリ
DWORD cbMem; // hpMemのサイズ
DWORD cbAllocate; // アロケート中のメモリブロック数
TYP typFreeNext; // 次の空きブロックへのリンク
} TYMALLOC;
LPVOID typGetLP(TYMALLOC *ty,TYP typ);
TYP tymalloc(TYMALLOC *ty,UINT cb);
TYP typFromLP(TYMALLOC *ty,LPVOID p);
BOOL tyfree(TYMALLOC* ty,TYP typ0);
void tydelete(TYMALLOC* ty);
//##_word.h
//##文字アトリビュート
// sizeof <= 8のこと
// sizeofが変ったら、_text.hのgapCharatrを調整すること
//2.97 970216 CHARATRフォーマット変更。WZ2.0の.WZファイルはコンバートが必要。
typedef struct __BINCOMPATIBLE__ {
WORD fLink:1; // CHAR_PLUGのcharatrであることを示す
// これが真ならCHARATR_PLUG型とみなす
WORD fBold:1;
WORD fItalic:1;
WORD fUnderline:1;
WORD modeScript:2; // (未完成) 0:標準,1:下付き,2:上付き
WORD fHide:1; // (HTML)コメント表示(淡色表示)
// (!HTML)隠し文字
// 表示のみサポート
// 折り返し位置、カーソル位置等はcharatrを参照せねばならず
// 遅くなりそうなにでサポートしない
WORD fHottext:1; //2.99G 970405 (HTML)ホットテキスト 下線+色分け表示
WORD fReserved:8; //
// 境界(WZ16ではビットフィールドはUINTまで)
WORD fStrikeout:1; // (未完成)取り消し線
WORD fFixed:1; // (HTML)固定ピッチ (表示サポートなし)
WORD fFontsize:1; // (HTML)文字サイズ/相対フォントサイズが指定されている? (表示サポートなし)
WORD fColor:1; // 色が指定されている?
WORD r:4; // red / 16 (255->15)
WORD g:4; // green / 16 (255->15)
WORD b:4; // blue / 16 (255->15)
} CHARATR;
#define CHARATR_GAP 4 //1.95 CHARATR拡張予備
//2.97 970217 CHARATR_LINKフォーマット変更
typedef struct {
WORD fLink:1; // CHAR_PLUGのcharatrであることを示す
// これが真ならCHARATR_PLUG型とみなす
WORD fBold:1;
WORD fItalic:1;
WORD fUnderline:1;
WORD modeScript:2; // (未完成) 0:標準,1:下付き,2:上付き
WORD fHide:1; // (HTML)コメント表示(淡色表示)
// (!HTML)隠し文字
// 表示のみサポート
// 折り返し位置、カーソル位置等はcharatrを参照せねばならず
// 遅くなりそうなにでサポートしない
WORD fHottext:1; //2.99G 970405 (HTML)ホットテキスト 下線+色分け表示
WORD fReserved:8; //
// 境界(WZ16ではビットフィールドはUINTまで)
TYP ibitmap; // typ plugatr index
} CHARATR_LINK;
//2.97 970218 CHARATR_TAB,CHARATR_HR,CHARATR_BR 廃止
// 旧CHARATRメンバ
// WORD nFontSize:3; // 文字サイズ
#define NFONTSIZE_N 7
// WORD modeFontSize:2; // 相対フォントサイズ指定
#define FONTSIZE_ABS 0
#define FONTSIZE_PLUS 1
#define FONTSIZE_MINUS 2
//2.97 970218 charatrGetIlink,charatrGetIbitmap廃止
//2.97 970218 new
#define charatrGetPlug(charatr) (((CHARATR_LINK*)(&(charatr)))->ibitmap)
//##埋め込みアトリビュート PLUGATR
//2.97 970217 new
// PLUGATR内に、TYPなど、ポインタを保持してはいけない。
// Cut&Pasteでは、ポインタまで見ない。
//3.00B1 970609 RUBI->RUBY
typedef struct __BINCOMPATIBLE__ {
BYTE modePlug; // プラグモード
#define PLUG_LINK 1 // ファイルリンク
#define PLUG_ANCHOR 2 // アンカー
#define PLUG_FOOTNOTE 3 // 脚注
#define PLUG_RUBY 4 // ルビ
#define PLUG_PROOF 5 // 校正
#define PLUG_OLE 6 // OLE
#define PLUG_FONT 7 // マルチフォント
#define PLUG_IMG 8 // 図
#define PLUG_IMG_LINK 9 // 図とlink
#define PLUG_HTML_TAG 10 // (HTML)タグ+アトリビュート
#define PLUG_TAB 11 // 表の縦罫線、桁揃え、小見出し
#define PLUG_HR 12 // 水平線
TYP typWork; // 内部ワーク
BYTE reserved[8];
} PLUGHEAD;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
mchar szfilename[CCHPATHNAME32]; // リンク先のファイル名
mchar szCaption[CCHWORD]; // 表示文字列
} PLUGLINK;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
WORD number; // 脚注番号
WORD cchFootnoteAlloc; // szFootnoteのサイズ-1
WORD lchFootnote; // 脚注の長さ
mchar szFootnote[1]; // 脚注の内容
} PLUGFOOTNOTE;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
mchar szTarget[CCHWORD]; // ルビ対象文字列
mchar szRuby[CCHWORD]; // ルビ文字列
} PLUGRUBY;
//2.99 970312 PLUGPROOFのフォーマット変更
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
mchar szReader[CCHSWORD]; // 校正者
//
WORD ichProof; // szTarget_szProofのszProof開始位置
WORD cchProofAlloc; // szTagのサイズ-1
mchar szTarget_szProof[1]; // 校正の内容(szTarget:校正対象文字列,szProof:校正内容文字列)
} PLUGPROOF;
#define CCHSTORAGE 32 // STORAGE/STREAM名
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
mchar szname[CCHPATHNAME32];// DOCファイルの中のオブジェクトSTORAGE名
// 以下、"非"永続項目
#ifdef __OLECPP__
LPSTORAGE pIStorageObject; // sznameのストレージオブジェクト
PBox pBox; // コンテナC++オブジェクト
#else
LPVOID pIStorageObject;
LPVOID pBox;
#endif
// 以下、一時作業用
LPVOID tmp1;
LPVOID tmp2;
} PLUGOLE;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
mchar lfFaceName[LF_FACESIZE]; // フォント名
WORD lfHeight; // フォントサイズ
mchar szStr[CCHWORD]; // このフォントで表示する文字列
} PLUGFONT;
typedef struct __BINCOMPATIBLE__ {
WORD cx; // 幅
WORD cy; // 高さ
SIGNED_WORD width; // atr WIDTH
// 負の値の時は、%指定。0はデフォルト
SIGNED_WORD height; // atr HEIGHT
// 負の値の時は、%指定。0はデフォルト
BYTE fWidthOriginal;// 図のオリジナルサイズを使う?
BYTE modeAlign; // atr ALIGN
WORD hspace; // atr HSPACE
WORD vspace; // atr VSPACE
BYTE border; // atr BORDER
mchar szAlt[CCHWORD]; // atr ALT
BYTE reserved[16];
} PLUGIMGATR;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
PLUGIMGATR atr;
mchar szfilename[CCHPATHNAME32]; // 図のファイル名
// HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
WORD cchTagAlloc; // szTagのサイズ-1
mchar szTag[1]; // タグの内容
} PLUGIMG;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
PLUGIMGATR atr;
mchar szfilename[CCHPATHNAME32]; // 図のファイル名
// 以上のメンバはPLUGIMGと同じ
mchar szlink[CCHPATHNAME32]; // リンク先のファイル名
// HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
WORD cchTagAlloc; // szTagのサイズ-1
mchar szTag[1]; // タグの内容
} PLUGIMG_LINK;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
WORD tag; // タグID
BYTE fTagTop; // 開始タグ?
// HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
WORD cchTagAlloc; // szTagのサイズ-1
mchar szTag[1]; // タグの内容
} PLUGHTMLTAG;
typedef struct __BINCOMPATIBLE__ {
PLUGHEAD head;
BYTE modeTab;
#define MODETAB_TABLE 1 // 表
#define MODETAB_BEAMTAB 2 // 桁揃え,行に1つの場合は小見出し
BYTE modeAlign; // セルデータの配置
// ALIGN_LEFT,ALIGN_CENTER,ALIGN_RIGHTのみ有効
BYTE modeAlignV; // セルデータの縦配置
// 表示には反映されない
BYTE fSpanClm; // 列にまたがる(未完成)
BYTE fSpanRow; // 行にまたがる(未完成)
BYTE fHead; // 見出し?
BYTE modeSepaLeft; // TAB位置に描画するセパレータの種類
#define MODESEPA_NONE 0 // なし
#define MODESEPA_STD 1 // 標準線
#define MODESEPA_BOLD 2 // 太線
#define MODESEPA_DOT 3 // 点線
BYTE modeSepaBottom;
// 内部情報
SIGNED_WORD cxIndent; // タブ位置から、文字表示位置までの幅
// セル内の文字列の中央寄せ、右寄せを実現
// 詳細モードでもMM_TEXT座標
SIGNED_WORD xTab; // タブ位置(MM_TEXT座標)
SIGNED_WORD lpxTab; //2.99C 970325 タブ位置(プリンタ座標)
//
WORD fTagEnd:1;
WORD fOriginalDesignate:1; //2.99E 970402 もともとのHTMLファイルに存在したタグ?
WORD fReserved:14;
// HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
WORD cchTagAlloc; // szTagのサイズ-1
mchar szTag[1]; // タグの内容
} PLUGTAB;
typedef struct {
PLUGHEAD head;
WORD width; // 幅
WORD height; // 高さ
BYTE modeAlign; // 配置
BYTE fNoShade; // 平面的?
// HTMLタグ,アトリビュート(必ず"WORD cchTagAlloc,mchar szTag[1]"であること)
WORD cchTagAlloc; // szTagのサイズ-1
mchar szTag[1]; // タグの内容
} PLUGHR;
//2.97A 970302 LINKATR,LINKATR_TAB廃止
//##論理行アトリビュート
// PARAATRではページの切れ目は保持できない。段落の途中でページが切れたら対応できない。
//1.99D 箇条書き関係全面変更
#define NESTARTICLE_N 7 // 箇条書きの最大ネスト数
#define LCXINDENT_STD 4 // 箇条書きなどの標準インデント数
// sizeof <= 16のこと
typedef struct __BINCOMPATIBLE__ {
WORD lcxIndent:6; // インデント数(0-63)
#define LCXINDENT_MAX 63
WORD lcxIndentTop:6; // 先頭行のインデント数(0-63)
//2.93 サポート
WORD modeDefine:2; // TAG_DT/TAG_DD
#define DEFINE_DT 1
#define DEFINE_DD 2
WORD modeDL:2; // TAG_DL
#define DL_NORMAL 1
#define DL_COMPACT 2
// 境界(WZ16ではビットフィールドはUINTまで)
WORD lcxIndentRight:6; // 右インデント数(0-63)
#define LCXINDENTRIGHT_MAX 63
WORD fArticle:1; // バレットが付いている段落?
// fReturnLineの場合は、段落内改行の各行にも
// 同じ値をセットすること
WORD modeArticle:4; // バレットのモード
#define ARTICLE_NONE 0
#define ARTICLE_DISC 1
#define ARTICLE_CIRCLE 2
#define ARTICLE_SQUARE 3
#define ARTICLE_NOTICE 4 //1.93 [※]記号
#define ARTICLE_AUTO 5 //1.99E 字下げに合わせて自動変化
#define ARTICLE_ALL 6 //1.99E 全て[・]
#define ARTICLE_NUMBER 11
#define ARTICLE_I 12
#define ARTICLE_i 13
#define ARTICLE_A 14
#define ARTICLE_a 15
WORD nArticle:4; // 箇条書きの番号の指定(0-15)
#define NARTICLE_N 15
WORD fReturnLine:1; // この行は、段落内改行か?
// 改段ではない。改行と改段を区別しないと、
// 箇条書きの途中で、行を改めたいときなどに困る。
// 境界(WZ16ではビットフィールドはUINTまで)
WORD modeTitle:3; // 見出し(0:なし)
WORD modeLineInt:3; // 行間
#define LINEINT_NORMAL 0 // 普通
#define LINEINT_HALF 1 // 1/2空ける
#define LINEINT_LINE 2 // 1行空ける
#define LINEINT_LINETOPEND 3 // 頭に1行、お尻に1行空ける
#define LINEINT_LINETOP 4 // 頭に1行空ける
#define LINEINT_LINEEND 5 // お尻に1行空ける
WORD modeAlign:3; // 文字揃え
WORD fPre:1; // TAG_PRE
WORD lplcxIndentHead:6; //2.99C 970325 (内部情報)小見出しのインデント幅(プリンタ座標)
// 境界(WZ16ではビットフィールドはUINTまで)
WORD fReservedItable:3; //2.98 970304 fTab,itable廃止
WORD fReturnFF:1; //2.98 970308 この行の行末は、改ページか?
WORD fEdited:1; //2.98 970304 編集が加えられた?
WORD fTableTop:1; //2.97 970216 (内部情報)表の開始行?
WORD fTableTail:1; //2.97 970217 (内部情報)表の終了行?
WORD lcxIndentHead:6; //2.97 970216 (内部情報)小見出しのインデント幅
WORD modeTab:2; //2.97 970216 (内部情報)same PLUGTAB modeTab
WORD fBodyTop:1; //2.97A 970227 本文の先頭行?
} PARAATR;
#define PARAATR_GAP 8 //1.95 PARAATR拡張予備
//2.98 970304 テキストモードのparaatr
typedef struct __BINCOMPATIBLE__ {
BYTE fEdited:1; //2.98 970304 編集が加えられた?
BYTE fReserved:7;
} PARAATR_TEXT;
//3.00B1 970521
typedef struct {
PARAATR_TEXT HUGE * buff; // PARAATR_TEXT buff
NPARA cur0; // gap start
NPARA cur; // gap end + 1
NPARA size; // buff size
} PARAATR_TEXT_CONTEXT;
//1.95 見出しスタイル
typedef struct {
WORD modeAlign:3;
WORD fBold:1;
WORD fItalic:1;
WORD fUnderline:1;
WORD reserved:10;
} HEADSTYLE;
#define paraatrIsTable(paraatr) ((paraatr)->itable)
//2.90 拡張 paraatr
typedef struct __BINCOMPATIBLE__ {
mchar szArticle[CCHSWORD]; // 見出し文字列
SIGNED_WORD lchArticle; // 0なら無効
SIGNED_WORD cxArticle;
WORD fArticleNum:1; // szArticleは番号付きか?
WORD fArticleSub:1; // szArticleは小見出しか?
WORD fReserved:14;
SIGNED_WORD nArticle; // 先頭番号(0なら番号指定なし)
SIGNED_WORD ichNum; // szArticleの番号のオフセット
// -1なら番号なし
SIGNED_WORD lchNum; // szArticleの番号の長さ
} PARAFORM_ARTICLE;
typedef struct __BINCOMPATIBLE__ {
PARAFORM_ARTICLE article;
mchar szLinetop[CCHSWORD];
SIGNED_WORD lchLinetop;
// szLinetop等を除く本文のインデント数
BYTE lcxIndent; // インデント数(0-255)
BYTE lcxIndentTop; // 先頭行のインデント数(0-255)
} PARAATR2;
//1.91A
//##ページアトリビュート
typedef struct {
IFILE address; // ページ先頭のaddress
WORD lpy;
WORD nlineByPage:8;
WORD fFF:1; // 前ページの終わりは改ページコード?
WORD reserved:7;
} PAGEATR;
// HTML,タグ
#define TAG_TOP 0 // WZ work
#define TAG_END 1 // WZ work
#define CCHTAG 30 // タグ最大文字数+1
//
#define TAG_NULL 0 // WZ work
#define TAG_H 1
#define TAG_UL 2
#define TAG_LI 3
#define TAG_B 4 // TAG_B - TAG_U 連続していること
#define TAG_I 5
#define TAG_U 6
#define TAG_TT 7
//#define TAG_S 8
#define TAG_STRONG 9
#define TAG_EM 10
#define TAG_CITE 11
#define TAG_CODE 12
#define TAG_KBD 13
#define TAG_SAMP 14
#define TAG_VAR 15
#define TAG_SUB 16
#define TAG_SUP 17
//#define TAG_BLINK 18
#define TAG_BR 20
#define TAG_P 21
#define TAG_HR 22
#define TAG_PRE 23
//#define TAG_NOBR 24
//#define TAG_WBR 25
#define TAG_FONT 26
#define TAG_BASEFONT 27
#define TAG_OL 28
//#define TAG_MENU 29
//#define TAG_DIR 30
#define TAG_DT 31
#define TAG_DD 32
#define TAG_DL 33
#define TAG_BLOCKQUOTE 34
#define TAG_LINK 35
#define TAG_IMG 36
#define TAG_HTML 37
#define TAG_HEAD 38
#define TAG_TITLE 39
#define TAG_BODY 40
#define TAG_ADDRESS 41
#define TAG_COMMENT 42 // <!-- ... -->
#define TAG_TABLE 43
#define TAG_TD 44
#define TAG_TR 45
#define TAG_TH 46
#define TAG_CAPTION 47
#define TAG_LEFT 48 // WZ TAG_LEFT - TAG_JUST は連続していること
#define TAG_CENTER 49
#define TAG_RIGHT 50 // WZ
#define TAG_JUST 51 // WZ
#define TAG_LINUM 52 // WZ
#define TAG_INDENT 53 // WZ
// <INDENT>:左インデント=4,右インデント=0
// <INDENT LEFT=10>:左インデント=10,右インデント=0
// <INDENT RIGHT=10>:左インデント=4,右インデント=10
// <INDENT TOP = 2>:左インデント=4,右インデント=0,先頭行左インデント=2
// </INDENT>:インデントなし
#define TAG_FORMFEED 54 // WZ
#define TAG_TEXTATR 55 // WZ
#define TAG_TAB 56 // WZ
#define TAG_LINOTICE 57 // WZ
#define TAG_CLEAR 58 // WZ
#define TAG_SELECT 59 //2.99 970319
#define TAG_OPTION 60 //2.99 970319
#define TAG_FRAME 61 //2.99 970320
#define TAG_FRAMESET 62 //2.99 970320
#define TAG_SCRIPT 63 //2.99C 970326
#define TAG_MAP 64 //2.99C 970326
#define TAG_AREA 65 //2.99C 970326
#define TAG_IECOMMENT 66 //2.99C 970326 <COMMENT>-</COMMENT>
#define TAG_OBJECT 67 //2.99C 970326
#define TAG_APPLET 68 //2.99C 970326
#define TAG_PARAM 69 //2.99C 970326
#define TAG_COL 70 //2.99C 970326
#define TAG_COLGROUP 71 //2.99C 970326
#define TAG_NOFRAME 72 //2.99C 970326
#define TAG_IFRAME 73 //2.99C 970326
#define TAG_DIV 74 //2.99C 970326
#define TAG_N 75 // 総タグ数(タグを増やしたら、総タグ数も増やすこと)
// (charatr.tagの制限)255種類まで
// 以下、ワーク用のタグ // WZ work
#define TAG_INDENTADD 300
#define TAG_DEFINECLEAR 301
#define TAG_DTDD 302
#define TAG_ANCHOR 303
#define TAG_COLOR 304 //2.00E4
#define TAG_VBSCRIPT 305 //2.97 970223
#define TAG_SUBHEAD 306 //2.97 970224 小見出し
#define TAG_FOOTNOTE 307 //2.98 970305
#define TAG_RUBY 308 //2.98 970305
#define TAG_PROOF 309 //2.98 970305
#define TAG_SEPARATOR 310 //2.98 970305
// align(3bit)
#define ALIGN_NONE 0 // なし
#define ALIGN_LEFT 1 // 左揃え
#define ALIGN_CENTER 2 // 中央寄せ
#define ALIGN_RIGHT 3 // 右揃え
#define ALIGN_JUST 4 // 両端揃え
#define ALIGN_TOP 5
#define ALIGN_BOTTOM 6
#define ALIGN_ALL 7
//2.98 970304
#ifdef __FLAT__
#define SZHTMLMASK "*.htm*"
#else
#define SZHTMLMASK "*.htm"
#endif
//##API
#ifndef __TXC__
BOOL TXAPI wordInit(tx* text);
void wordTerm(tx* text);
#endif
#ifndef __TXC__
extern CHARATR charatrNull;
CHARATR TXAPI echaratrRead(tx* text,IFILE address);
BOOL TXAPI echaratrWrite(tx* text,IFILE address,CHARATR charatr);
BOOL charatrInsert(tx* text,IFILE address,IMEM chars);
BOOL charatrDelete(tx* text,IFILE address,IFILE chars);
#endif
BOOL TXAPI charatrRead(tx* text,IFILE address,CHARATR* charatr);
BOOL TXAPI charatrWrite(tx* text,IFILE address,CHARATR* charatr);
#ifndef __TXC__
extern PARAATR paraatrNull;
PARAATR TXAPI eparaatrRead(tx* text,NLINE npara);
BOOL TXAPI eparaatrWrite(tx* text,NLINE npara,PARAATR paraatr);
BOOL paraatrInsert(tx* text,NLINE npara,IMEM nLf);
BOOL paraatrDelete(tx* text,NLINE npara,IMEM nLf);
#endif
BOOL TXAPI paraatrRead(tx* text,NLINE npara,PARAATR* paraatr);
BOOL TXAPI paraatrWrite(tx* text,NLINE npara,PARAATR* paraatr);
BOOL TXAPI paraatrText(tx* text,PARAATR* paraatr,BOOL fWrite,BOOL fDeleteOld);
BOOL TXAPI txCharatrSet(tx *text,int tag,LPVOID arg);
BOOL TXAPI txParaatrSet(tx *text,int tag,PARAATR* arg);
int TXAPI txParaatrRead(tx *text,PARAATR* arg,int* pLen);//1.93
BOOL TXAPI txParaatrWrite(tx *text,PARAATR* arg);//1.93
BOOL TXAPI txSetEditmode(tx* text,int editmode);
//##クリップボードハンドル
typedef UINT HCLIP; //1.00H2 HWND->UINT //1.00F WORD->HWND
#define HCLIP_ERROR ((HCLIP)999)//2.00E HCLIP_NULLは廃止
#define HCLIP_PRIVATE ((HCLIP)0) //2.00Eで追加 プライベートテキストスタック(プロセス固有)
// WZ32はマルチタスクなので、HCLIP_TSは他のWZのタスク
// と干渉します。
// スタックにPushしてPopする前に
// 他のWZがスタックを操作してしまうかもしれません。
// HCLIP_PRIVATEは他のWZとのデータ交換には使えない
// 代わりに他のWZのタスクと干渉しません
#define HCLIP_TS ((HCLIP)1) // テキストスタック
#define HCLIP_DELSTR ((HCLIP)2) // 削除文字列バッファ
#define HCLIP_WORK ((HCLIP)3) // ワークバッファ1
// 多重化起動時、世代ロード時にWZが内部で使用します
// それ以外のときは、自由に使えます
#define HCLIP_WORK2 ((HCLIP)4) // ワークバッファ2
// WZが内部で使用します。マクロでは使えません
// 多重化時の、挿入されたテキストデータの
// 受け渡しに使用
// 多重化起動時、世代ロード時にも使用
#define HCLIP_WORK3 ((HCLIP)5) // ワークバッファ3
// WZが内部で使用します。マクロでは使えません
// 多粛化起動時、世代ロード時にも使用
#define HCLIP_TXATR1 ((HCLIP)6) //1.99C CHARATR,PARAATR,PLUGATR
// テキストからクリップボードやテキストスタックにコピーした場合に、
// 文字装飾や書式データはここに入ります。
// スタックにはなっていませんが、
// HCLIP_TXATR1,HCLIP_TXATR2,HCLIP_TXATR3のトリオを
// スタックの様に使います。
#define HCLIP_TXATR2 ((HCLIP)7) //1.99C CHARATR,PARAATR,PLUGATR
#define HCLIP_TXATR3 ((HCLIP)8) //1.99C CHARATR,PARAATR,PLUGATR
#define HCLIP_TXATRP ((HCLIP)9) //2.00Eで追加 HCLIP_PRIVATE用HCLIP_TXATR
// テキストをHCLIP_PRIVATEにコピーした場合は、
// 文字装飾や書式データはここに入ります。
// スタックにはなっていません。
#define NCLIPINTERNAL 10 // TSの数
// 変更したら_share.c "_ts["も変更すること!
#define HCLIP_WIN ((HCLIP)10) // Windowsクリップボード
// ここでは0x00を含むバイナリデータは扱えない
// HCLIP_WORKxxxでは扱える
#define HCLIP_MEM ((HCLIP)11) // メモリクリップ
// WZが内部で使用します。マクロでは使えません
#define NCLIP 12 //1.00F HCLIP_WIN,MEMも含めWZでサポートするクリップ数
//##ツールバー
#define TXTOOLBAR_N 40
#define TOOLBAR_ICONSTR 20000
typedef struct {
WZCMD wzcmd; // コマンド
mchar szcaption[CCHWORD]; // ステータスバーに出す説明
mchar sztip[CCHSWORD]; // チップヘルプ
// 現在はszcaptionで代用
mchar sziconfilename[CCHWORD]; // このファイルからアイコンをロード
// iiconがTOOLBAR_ICONSTRなら、
// sziconnameで文字列ボタンとして表示
short int iicon; // ファイルのiicon番目のアイコンをロード
BYTE fSelAble:1; // 選択可能?
BYTE fReduce:1; // 1/4に縮小?
BYTE fCheck:1; // チェックボックススタイルのボタン
BYTE fChecked:1; // 押し込まれている
BYTE fDrag:1; // ボタンを離さなくてもコマンド発生
} TXTOOLBAR;
//1.95 フォントのスタイル
#define IFONT_STD 0 // 標準フォント
#define IFONT_ANK 1 // ANKフォント(無指定ならIFONT_STDを使用)
#define IFONT_N 2 // 個数
//2.96 970208
// IFONT_ANK2,3を使ってマルチフォント対応実験をしてみた。
// 表示はなんとかOKなものの、折り返し幅計算は文字コードだけを使っていて、
// charatrを見るとなるとコスト高になるので止めた。
typedef struct __BINCOMPATIBLE__ {
UCHAR tlfFaceName[IFONT_N][LF_FACESIZE];
// フォント名
BYTE tlfHeight[IFONT_N]; // ポイント数
WORD perNline; // 行どり(%)
// modeAlignから始まるbitfieldの先頭にあること
// テキストファイル埋め込み時は次のbitfieldをWORD値として
// 扱っているため
WORD modeAlign:3; // 配置 ALIGN_XXX
WORD fBold:1;
WORD fItalic:1;
WORD fUnderline:1;
WORD fStrikeout:1;
WORD reservedB:9; // これやんなんとTC++ではBYTEのビットフィールド、
// TX-CではWORDのビットフィールドになっちゃう
COLORREF rgcColor; // 色
BYTE reserved[32]; // 余裕
} FONTSTYLE;
#define SIZE_TFONTSTYLE (sizeof(FONTSTYLE) * FONTTX_N)
#define fontstyleFromItitle(text,ititle) \
(&(text)->tFontstyle[(ititle) + FONTTX_H1])
#define itxfontFromItitle(ititle) \
(FONTTX_H1 + ititle)
//1.99H dialog.tll font select fontname context
#define NFONT_MAX 1000
typedef struct {
WORD nFont; // 数
mchar tFontName[NFONT_MAX][LF_FACESIZE];
BYTE lfPitch; // PitchAndFamily
BYTE lfCharSet; // lfCharSet
WORD fPrinterFont:1; // プリンタフォントの取得中
WORD fPrinterFontOnly:1;
WORD freserved:14;
HDC hdcPrinter;
} FONTNAMES;
//##フォントハンドラ
// used WZ.EXE,filer.txe
typedef struct {
FONTSTYLE fs; // フォントスタイル
// fsに対する内部情報
HFONT hfont[IFONT_N]; // 必ず内部情報の先頭のメンバであること
BYTE lfProp[IFONT_N];
int cyChar; // 高さ
int cyBase; //2.96 970209 ベースラインまでの高さ
int cxChar; // 基準幅(半角)
int cxCharMax; // 最大幅
int lpcyChar; // (printer)高さ
int lpcxChar; // (printer)基準幅(半角)
int tcxCharAve[IFONT_N]; //1.99F 平均幅
int tcyChar[IFONT_N]; //
int tcyAscent[IFONT_N]; //
int tcyDescent[IFONT_N]; //
int tlpcyDescent[IFONT_N]; // (printer)
int tdyAscent[IFONT_N]; // 行頭からフォントyTopまでの高さ
int tdyDescent[IFONT_N]; // フォントyEnd+1からcyCharまでの高さ
int nline; // 本文フォントを基準1とした整数倍の高さ
LPBYTE tcxChar; // 幅
LPBYTE tlpcxChar; // (printer)幅
BYTE fKanji[IFONT_N]; //2.00E2 漢字フォントか?
WORD fWesternWordlap:1; //2.00E4 欧文禁則(アクセント付き文字の禁則)実行?
WORD lfWestern:1; //2.96 970208 欧文フォント?
WORD fReserved:14;
BYTE reservedI[28]; // 余裕
} FONTTX;
//
#define FONTTX_TEXT 0 // text/fast modeのフォント
// 以下、print modeのフォント
// レターヘッダ/フッタは、本文と同じ様にWZのファイルとして作成し、挿入する形とする
#define FONTTX_BODY 1 // 本文
#define FONTTX_H1 2 // H1
#define FONTTX_H2 3 // H2
#define FONTTX_H3 4 // H3
#define FONTTX_H4 5 // H4
#define FONTTX_H5 6 // H5
#define FONTTX_H6 7 // H6
// FONTTX_H?はデフォルトではゴシック
// サイズはH6=BODY,H5=H6+2,H4=H5+2,...
#define FONTTX_MARGIN 8 // ページヘッダ/ページフッタ
// デフォルトではゴシック
// サイズはBODYと同じ
//
#define FONTTX_N 9 // フォント数
//##印刷
// used WZ.EXE,word.tll
//2.98 970305 LPRINTの拡大により、wzprint.cfgの互換性なくなる。
typedef struct {
// 以下、ユーザ設定
BYTE configTop;
// configEndまでバイナリ出力されるので、__BINCOMPATIBLE__とする
mchar szstyle[CCHWORD]; // スタイル名
SIGNED_WORD dmPaperSize; // ページサイズ
SIGNED_WORD dmOrientation; // 用紙の向き
SIGNED_WORD dmScale; // スケーリング(100=等倍)(未完成)
SIGNED_WORD dmScaleFont; // フォント(本文と見出し)のスケーリング(100=等倍)
SIGNED_WORD dmDefaultSource; // 用紙供給元
SIGNED_WORD dmTTOption; // TrueTypeフォントの印刷方法
SIGNED_WORD nClm; // 段組数
BBOOL fLxPage; // 折り返し文字数を指定?
SIGNED_WORD lxPage; // 折り返し文字数
BBOOL fLyPage; // 1ページの行数を指定?
SIGNED_WORD lyPage; // 1ページの行数
BBOOL fDispLineNo; // 行番号を印刷?
mchar szHeader[CCHWORD]; // ヘッダ文字列
mchar szFooter[CCHWORD]; // フッタ文字列
mchar szHeader2[CCHWORD]; // 偶数ページのヘッダ文字列
mchar szFooter2[CCHWORD]; // 偶数ページのフッタ文字列
FONTSTYLE fontstyleMargin; // ヘッダ、フッタのフォント
// mcm:ミリセンチ(一単位:0.1mm)
BBOOL fUserPaperSize; // サイズをmm単位で指定するか?
SIGNED_WORD mcmMarginTop;
SIGNED_WORD mcmMarginLeft;
SIGNED_WORD mcmMarginBottom;
SIGNED_WORD mcmMarginRight;
SIGNED_WORD mcmPaperWidth; // fUserPaperSizeがTRUEの時に有効
SIGNED_WORD mcmPaperHeight; // fUserPaperSizeがTRUEの時に有効
SIGNED_WORD mcmLineInt; // 行間
SIGNED_WORD mcmCharInt; // 字間(未完成)
SIGNED_WORD mcmClmInt; // 段組間の空白
//2.00D
FONTSTYLE tFontstyle[FONTTX_H6];// 印刷フォント(FONTTX_BODY - FONTTX_H6)
BBOOL fUsePrintFontstyle; // LPRINTのtFontstyleを使用するかどうか
//2.96 970209 欧文編集の時は必ずtextの
// tFontstyleを使用
BBOOL ReservedlflpProp; //2.99 970320 廃止(プロポーショナルフォントで印刷)
BBOOL fNoHeaderPrint; // ヘッダを印刷しない
BBOOL fNoFooterPrint; // フッタを印刷しない
BBOOL fHeaderSymmerty; // 左右ページでヘッダフッタを対称に
BBOOL fMarginSymmerty; // 左右ページでマージンを対称に
//2.00E
BBOOL fPrinterName; // プリンタ名を指定するか
mchar szPrinterName[80]; // プリンタ名
SIGNED_WORD dmPrintQuality; // 印字品質(マイナス値の場合もある)
//2.96 970204
BBOOL fLineInt; // 行間を指定?
BBOOL fUseTextLxLyClm; // 文書の設定の文字数・行数・段組を使用?
BBOOL f2pages; // 袋とじ?
BBOOL fSpecifyHeader2; // 偶数ページのヘッダ/フッタを指定する?
BBOOL fHeadFontAuto; // 見出しフォントの自動設定?
BYTE modePrintFootnote; // 0:脚注を印刷しない,1:印刷する,2:文末に続けて印刷
SIGNED_WORD mcmMarginHeader; //2.96A 970214 ヘッダ上余白
SIGNED_WORD mcmMarginFooter; //2.96A 970214 ヘッダ下余白
mchar szTemplateHeader[80]; //2.98 970305 プリントレターヘッダ用テンプレート
mchar szTemplateFooter[80]; //2.98 970305 プリントレターフッタ用テンプレート
BYTE reserved[30]; // 余裕
BYTE configEnd;
// 以下、内部情報
// 設定保存しない、印刷時の設定
//1.99C 以前はconfigに入れていたが、プログラムで指定するので、
// 色々問題があった
BBOOL fNpagenum; // 開始ページのページ番号を指定?
NPAGE npagenum; // 開始ページのページ番号
NPAGE npagetop; // 開始ページ
NPAGE npageend; // 終了ページ
BBOOL fClip; // 選択範囲を印刷?
BBOOL f1page; // 1ページのみ印刷?
BYTE modePrintPage; // 0:全てのページを印刷,1:奇数ページを印刷,2:偶数ページを印刷
// text状態保持
TX* text; // 印刷テキスト
int editmode; // 印刷モード終了時に設定するtext->editmode
NPARA npara; // 印刷モードに入ったときのnpara
IFILE ich; // ich
int ly; // ly
RECT rect; //2.96 970210 ウィンドウ位置
BBOOL fNoCaret; //2.96 970210 fNoCaret
BBOOL flpPreview; //2.96 970210 flpPreview
BYTE nparaLetterHeader; //2.98 970305
//
NPAGE npageall; // 総ページ数
TIME time; // 印刷開始時刻
int iClm; // 印刷中の段
int icopy; // 印刷中の部数
int ncopy; // 印刷部数
//
int fPrint; // 印刷モードフラグカウンタ
int cbDevMode; // sizeof DEVMODE
HANDLE hDevMode; // デバイスモード
HANDLE hDevNames; // デバイス名
HDC hdc; // プリンタデバイスコンテキスト
HDC hic; //2.00B プリンタ情報コンテキストをhdcから分離
int fGetHdc; // GetHdcカウンタ
int fGetHic; //2.00B GetHicカウンタ
BYTE fNoLoadConfig; //2.96 970209 0以外ならtxLpOpでLPRINTを設定からロードしない
//2.00D 計算値
SIGNED_WORD cmcmMarginBottom; // 計算値
SIGNED_WORD cmcmMarginRight; // 計算値 (縦書き時は左マージン)
SIGNED_WORD cmcmLineInt; // 計算値
SIGNED_WORD clxPage; //2.00E6 計算値
SIGNED_WORD clyPage; //2.00E6 計算値
SIGNED_WORD xbase; //2.00E xbase
//2.96 970205 プレビュー
BYTE pvRate; //2.93 プレビューの拡大/縮小率
SIGNED_DWORD logPixelsX; //2.94 970120 1インチあたりのデバイスピクセル数
SIGNED_DWORD logPixelsY; //2.94 970120
HWND hwndPreviewCmd; //2.96A 970214 プレビューコマンド用モードレスダイアログ
SIGNED_WORD xViewportOrg; //2.98 970307 原点X
SIGNED_WORD yViewportOrg; //2.98 970307 原点Y
//2.96 970201 lpx:プリンタピクセル座標
SIGNED_WORD lpxMarginTop;
SIGNED_WORD lpxMarginLeft;
SIGNED_WORD lpxMarginBottom;
SIGNED_WORD lpxMarginRight;
SIGNED_WORD lpxMarginLeftAdd; // 縦書き & 袋とじ印刷用
SIGNED_WORD lpxMarginHeader; //2.96A 970214 ヘッダ上余白
SIGNED_WORD lpxMarginFooter; //2.96A 970214 ヘッダ下余白
SIGNED_WORD lpxPaperWidth; // fUserPaperSizeがTRUEの時に有効
SIGNED_WORD lpxPaperHeight; // fUserPaperSizeがTRUEの時に有効
SIGNED_WORD lpxLineInt; // 行間
SIGNED_WORD lpxCharInt; // 字間(未完成)
SIGNED_WORD lpxClmInt; // 段組間の空白
SIGNED_WORD lpcxClient; // 紙のサイズ(上下マージンの分も含む)
SIGNED_WORD lpcyClient; // 紙のサイズ(上下マージンの分も含む)
//2.96 970205 設定時のワーク用
FONTSTYLE fontstyleTemp[2];
SIGNED_DWORD idTemp[2][IFONT_N];
BBOOL lfPropTemp;
BBOOL fHeadFontAutoTemp;
//
int rateEdit; //2.96 970206 WYSIWYG編集時の縮小レート
IFILE sizeTemplateHeader; //2.98 970305 挿入したレターヘッダテンプレートのサイズ
IFILE sizeTemplateFooter; //2.98 970305 挿入したレターフッタテンプレートのサイズ
IFILE adrFootnote; //2.96 970207 脚注挿入開始アドレス
//2.99C 970324 印刷可能域
SIGNED_WORD mcmMarginMinTop; //2.99C 970324 印刷マージンの最小値
SIGNED_WORD mcmMarginMinLeft;
SIGNED_WORD mcmMarginMinBottom;
SIGNED_WORD mcmMarginMinRight;
BYTE configDisuse; //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
BYTE reservedI[55]; // 余裕
} LPRINT;
#define NPAGE_MAX 9999
//##メール
//2.90
typedef struct {
mchar szCaption[160]; // フック先のキャプション
mchar szCaptionOriginal[160]; // フック先のオリジナルのキャプション
mchar szTo[250];
mchar szCc[250];
mchar szTitle[250];
} MAIL;
//##検索
typedef DWORD SEARCHMODE; //1.92 検索モード
//1.01A スペルミス修正 SEARCH_FORWORD -> SEARCH_FORWARD
//2.92 long値であることを明示 for WZ16
#define SEARCH_FORWARD 0x00000000L // テキスト末尾方向へ検索(デフォルト)
#define SEARCH_PREV 0x00000001L // テキスト先頭方向へ検索
#define SEARCH_AREA 0x00000002L // 範囲内のみ検索する
#define SEARCH_NOESC 0x00000004L // 検索文字列中の'\'の特別な意味を消して検索
#define SEARCH_CUR 0x00000008L // カーソル位置の文字から検索
// 以前は、置換時、前方検索時は
// 無効でしたが、1.99Aから
// 有効になりました。
#define SEARCH_SELECT 0x00000010L // 見つけた文字列を選択する(置換時は無効)
#define SEARCH_ALL 0x00000020L // テキスト全体で検索(置換時のみ)
#define SEARCH_PARATOP 0x00000040L //1.00H2 論理行頭のみ検索
#define SEARCH_NOSENSECASE 0x00000080L // 大文字・小文字を区別しない
#define SEARCH_NOSENSEZENHAN 0x00000100L // 全角/半角文字を区別しない
#define SEARCH_WORD 0x00000200L // ワードサーチ
#define SEARCH_RE 0x00000400L // 正規表現による検索
#define REPLACE_CONFIRM 0x00000800L // 置換確認を行う(置換時のみ)
#define REPLACE_ONCE 0x00001000L //1.96 最初の1つだけ置換
#define SEARCH_NOSYMBOL 0x00002000L //2.98 970309 テキストの改行や空白や記号を無視して検索
//1.01A GREP_XXXの定義値変更
#define SEARCH_NOSELECT 0x00004000L // 検索で見つけた文字列の選択を行わない
#define SEARCH_ALLTEXT 0x00008000L //1.01A オープン中の全てのテキストを対象として検索
// (検索するtextが裏テキストの場合は無効)
// 特別検索モード
#define GREP_BACKUP 0x01000000L //2.92 バックアップファイル内も検索(WZ Grepのみ)
#define REPLACE_CONFIRMMODAL 0x02000000L //2.92 REPLACE_CONFIRMをモーダルで実行
#define SEARCH_NEXTTEXT 0x04000000L //2.00B WZ.EXE内部用
#define SEARCH_OLDDIALOG 0x08000000L // search.c
#define SEARCH_REPLACE 0x10000000L // search.c
#define SEARCH_DIALOGCOMPACT 0x20000000L //2.97 970225 search.c
#define GREP_DIRECTORY 0x20000000L // サブディレクトリ内も検索(WZ Grepのみ)
#define SEARCH_DIALOGSLIST 0x40000000L //2.97 970225 search.c
#define GREP_BINARY 0x40000000L // バイナリファイル内も検索(WZ Grepのみ)
//2.96 SEARCH_TXSETSEARCHMODE 0x80000000L //1.01A WZ.EXE内部用 廃止
typedef struct { //1.92 検索モード展開構造体
WORD fCategory:1; //1.96 category enable?
WORD reservedB:15;
UINT category; //1.96
#define SEARCHCATEGORY_NORMAL 0
#define SEARCHCATEGORY_WORD 1
#define SEARCHCATEGORY_RE 2
#define SEARCHCATEGORY_FUZZY 3
BOOL fSearchSenseCase;
BOOL fSearchSenseZenhan;
BOOL fSearchWord;
BOOL fSearchRE;
BOOL fSearchEscapeNo;
BOOL fSearchAllText;
BOOL fSearchArea;
BOOL fSearchCur;
BOOL fReplaceConfirm;//2.92
BOOL fSearchNoSymbol;//2.98 970309
BYTE reserved[8];
} SEARCHOPT;
// 検索・置換ダイアログモード
#define SEARCHDLG_PREV 0x0001
#define SEARCHDLG_MINI 0x0002
#define SEARCHDLG_VZ 0x0004
#define SEARCHDLG_REPLACE 0x0008
#define SEARCHDLG_CONFIRM 0x0010
#define SEARCHDLG_CAPTION 0x0020
#define SEARCHDLG_SZFIND 0x0040 // szfind not init
#define SEARCHDLG_MODELESS 0x0080 //1.96 modeless
//1.00H2 Replace Context WZ内部用
typedef struct {
DWORD searchmode;
mchar szFind[CCHWORD];
mchar szReplace[CCHWORD];
#if 1//3.00A2 970505 廃止
HWND reserved;
#else
HWND hwndReport; //2.92 for WZ Grep replace
#endif
} REPLACEARGEX;
#define IDREPLACEALL 101 // 置換確認ダイアログ:全て置換
typedef DWORD TXRECORD; // レコード(0 origin)
#define TXRECORD_ERROR 0xFFFFFFFF // エラー値
//2.00B TXREPORT仕様変更
#define TXREPORT_TEXTBUFF_INSERT 1 // address/nparaにcountバイト/nparaCount行、挿入された
#define TXREPORT_TEXTBUFF_DELETE 2 // address/nparaからcountバイト/nparaCount行、削除された
#define TXREPORT_KEY_INSERTSTR 3 // キー入力によってpStr文字列(ASCIZ)、長さcountバイト挿入される
// HOOK_CAPTUREを返すと挿入しません
#define TXREPORT_NLINE_CHANGE 4 //2.98 970309 文字列の挿入や削除によって表示行数が変化した
// 必ずしも正確ではない
typedef struct {
TX* text; // 対象テキスト
NPARA npara; // 対象npara
NPARA nparaCount; // 増減したnpara数
IFILE address; // 対象address
IFILE count; // 増減したバイト数またはpStrの文字数
mchar* pStr; // 対象文字列
} TXREPORT;
typedef struct {
BYTE crSave;
BYTE kcSave;
} TXFILETYPE;
//1.97 txSetUndispEx/txSetUndispEdit
// txSetUndispしてtxSetUndispExするとカーソル位置が保存されなかったのを修正
typedef struct {
int ly; //
NPARA npara; //
IFILE address; //
IFILE ich; //
} UNDISPCONTEXT;
#define UNDISPCONTEXT_N 5
//1.99A 裏テキストなど、fUndispがマイナス値の場合もある。
#define txGetUndispContextPre(text) \
((1 <= text->fUndisp && text->fUndisp <= UNDISPCONTEXT_N) ? &text->tUndispContext[text->fUndisp - 1] : NULL)
//1.99C
typedef DWORD TXATRATR;
#define TXATRATR_ARC 0x00000001LU // WZ圧縮文書ファイル
#define TXATRATR_TEXT_PLAIN 0x00000002LU //2.99 970316 プレーンテキストファイル出力
#define TXATRATR_TEXT_FORM 0x00000004LU //2.99 970316 整形テキストファイル出力
#define TXATRATR_TEXT_WZ 0x00000008LU //2.99 970316 装飾・体裁付きテキストファイル出力
#define TXATRATR_HTML_TEXT 0x00000010LU //2.99 970316 HTML文書ファイル出力
#define TXATRATR_ENABLE 0x00008000LU // 内部用(Saveの引数)
//##TEXTWINDOW STYLES,TEXTWINDOW FRAME STYLES
//1.97 WZをチャイルドウィンドウとして使用できるようにした。
// クラス名
//2.99C 970327 WZ16のクラス名を変更(末尾に16を追加)
// SHAREのバージョンチェックに対応していない旧WZと混ざらない様にするため
#ifdef __FLAT__
#define TXWS_SZCLASS "txText32"
#define TXBASE_SZCLASS "txBase32" //2.93
#define TXPARTITION_SZCLASS "txPartition32" //2.96A 970211
#else
#define TXWS_SZCLASS "txText16"
#define TXBASE_SZCLASS "txBase16" //2.93
#define TXPARTITION_SZCLASS "txPartition16" //2.96A 970211
#endif
// TXWS_SZCLASS ウィンドウスタイル
#define TXWS_TEXT 0x0001L // TEXT構造体をアロケートする
#define TXWS_OPENTEXT 0x0002L // いきなりtxOpenTextする
#define TXWS_CONFIGINHERIT 0x0004L //2.90 textfの設定を受け継ぐ
#define TXWS_ENABLEUNDO 0x0008L //2.90 undo可
#define TXWS_ALLOCMAIL 0x0010L //2.90 text->mailをアロケートする
#define TXWS_TEXTHWNDTEXT2 0x0020L //2.99 970316 hwndtext2用
#define TXWS_FRAME 0x0040L //2.95 970129 fFrame用にTEXT構造体をアロケートする
// これを指定するときは必ずTXWS_ENABLEUNDOと一緒に指定し、
// TXWS_ALLOCMAILは指定しないこと!!!
// アロケートしたTEXT+undoをfreeしないで再利用するため。
#define TXWS_TEXTINHERIT 0x0080L //2.99 970316 既にopenされてるtextを引き継ぐ
#define TXWS_FONTINHERIT 0x0100L //2.99D 970328 textfのフォント設定(フォント名、lfProp,lfWestern)を引き継ぐ
// フォントサイズは引き継がない
// デフォルトはダイアログのフォントになる
#define TXWS_FONTINHERITALL 0x0200L //2.99D 970328 TXWS_FONTINHERIT+フォントサイズも引き継ぐ
// TXWS_SZCLASS ウィンドウメッセージ
// message define // return wParam lParam
#define TXWM_GETTX (WM_TXUSER + 0) // TX* 0 0
// TXPARTITION_SZCLASS ウィンドウスタイル
#define WSPB_SEPARATOR 0x0001L // dialog box用セパレータ?
#define WSPB_SMALLFONT 0x0002L //2.99D 970330 小さいフォントを使う?
// TXPARTITION_SZCLASS partition bar message
// message wParam lParam 備考
#define WMPB_SETRANGE (WM_USER + 1) // min max
#define WMPB_GETRATE (WM_USER + 2) // void void
#define WMPB_SETRATE (WM_USER + 3) // rate void
#define SZCFG_STD "標準" // 拡張子別の設定がないときに参照する名前
//## txAllocText
#define TXALLOC_UNDO 0x0001 // undoができるようにする
//##WZ.EXE用 ウィンドウメッセージ、コマンド番号、タイマーID
// WZ専用ウィンドウメッセージ
// WM_USERからWM_TXUSER-1までを使用
// マクロではWM_TXUSER以降を使用可
#define WM_TXUSER (WM_USER+1000) //1.00H4
#if 0
●備考について
・"xxx"は、他プロセスに送ることができないメッセージを示します。
・"wndtxSendStr"は、wndtxSendStr関数だけを使って他プロセスにメッセ
ージを送ることができます。SendMessageやPostMessageを使ってメッセ
ージを送ることはできません。
・"wndtxSendMem"は、wndtxSendMem関数だけを使って他プロセスにメッセ
ージを送ることができます。SendMessageやPostMessageを使ってメッセ
ージを送ることはできません。
#endif
// 内部 WORK / SystemMessage
// message wParam lParam 備考
#define WM_TXINITMENU (WM_USER + 1) // 0 0
#define WM_TXFILERSELECTED (WM_USER + 2) // 0 lpStr wndtxSendStr
#define WM_TXIDLE (WM_USER + 3) // 0 0
#define WM_TXCLOSEEVERY (WM_USER + 4) // fForce 0 2.94
#define WM_TXCONTROLTAB (WM_USER + 5) // void void 2.95
#define WM_TXSETKEYMACRO (WM_USER + 7) // txk hfunc
#define WM_TXIDLEEXEC (WM_USER + 8) // id 0 2.93
// アイドル時に実行する内部動作
//2.93 WM_TXMTCMD (WM_USER + 9) 廃止
#define WM_TXCMDLINE (WM_USER + 10) // 0 lpsw wndtxSendStr
#define WM_TXSB_SETUPTEXT (WM_USER + 11) // hsl sztext xxx
#define WM_TXSB_SETTEXT (WM_USER + 12) // hsl sztext xxx 1.99E
#define WM_TXQUERYCLOSE (WM_USER + 13) // 0 0
#define WM_TXQUIT (WM_USER + 14) // 0 0
//2.96A WM_TXFLUSHKEY (WM_USER + 15) 廃止
#define WM_TXFLUSHMENU (WM_USER + 16) // 0 0
#define WM_TXWINDOWSIZE (WM_USER + 17) // 0 rect xxx
//2.96A WM_TXWINDOWREGISTER (WM_USER + 18) 廃止
#define WM_TXTOOLBARSELECTED (WM_USER + 19) // itoolbar 0 xxx 1.00F2
#define WM_WZCONSOLE_STOPED (WM_USER + 20) // 0 0 1.00H3
#define WM_TXSHAREMEMFREE (WM_USER + 21) // id 0 1.00H4
#define WM_TXACTIVE (WM_USER + 22) // 0 0 1.00H4
#define WM_TXOPENFINISH (WM_USER + 25) // stat 0 1.01A
// stat=0 : txOpen終了
// stat=1 : モーダルWM_TXREPLACEEX終了
#define WM_TXREPORT (WM_USER + 26) // code TXREPORT* 2.00B
#define WM_TXREPORTACK (WM_USER + 27) // free free 1.93 用途自由
#define WM_TXFLUSHWINDOWSIZE (WM_USER + 28) // 0 0 1.93
#define WM_TXCHECKFILETIME (WM_USER + 30) // 0 0 1.97
#define WM_TXCLOSE (WM_USER + 31) // 0 0 1.99A
// text->hwndbaseウィンドウが閉じられる直前に送られる
// 閉じるのをキャンセルすることはできない。
//2.94 970123 引数wParam廃止
#define WM_TXGETPROPERY (WM_USER + 32) // 0 0 1.99B
// TXPROPERTY型の構造体の実体を返す
#define WM_TXDISPTEXT (WM_USER + 33) // lyTop lyEnd 1.99C
#define WM_TX_TBN_ENDCMD (WM_USER + 34) // 0 0 1.99H
//2.94 WM_TXGETSZFORK (WM_USER + 35) // 0 廃止 0 xxx 2.00B
#define WM_TXSHAREMEMALLOC (WM_USER + 36) // id 0 2.00E6
// dialog.c and user
// message wParam lParam
#define WM_TXDIALOG (WM_USER + 50) // idm 0
#define WM_TXDIALOGOK (WM_USER + 51) // idm 0
#define WM_TXDIALOGREAD (WM_USER + 52) // 0 0
#define WM_TXDIALOGENTERIDLE (WM_USER + 53) // 0 0
#define WM_TXDIALOGCLEAR (WM_USER + 54) // 0 hdlg
#define WM_TXDIALOGPASTE (WM_USER + 55) // 0 hdlg
#define WM_TXDIALOGINIT (WM_USER + 56) // 0 hdlg
#define WM_TXDIALOGINITEND (WM_USER + 57) // 0 hdlg
#define WM_TXDIALOGWRITE (WM_USER + 58) // 0 0
#define WM_TXDIALOGWRITEITEM (WM_USER + 59) // id 0
#define WM_TXDIALOGREADITEM (WM_USER + 60) // id 0
#define WM_TXDIALOGPAGECHANGED (WM_USER + 61) // iPage 0 1.91A
#define WM_TXDIALOGCLOSE (WM_USER + 62) // 0 0 1.92
//2.00B wParamがIDOKならOKを押す
#define WM_TXDIALOGCOLORSELECTED (WM_USER + 63) // id 0 1.97
#define WM_TXDIALOGPAGECHANGE (WM_USER + 64) // oldpageid 0 1.99C
#define WM_TXDIALOGITEMSETCONTEXT (WM_USER + 65)// id context 1.99F
#define WM_TXDIALOGENABLEAPPLY (WM_USER + 66) // fEnable 0 2.00B
// 内部WORK
// message wParam lParam
#define WM_WKSYSKEYDOWN (WM_USER + 95) // 0 0 1.00H2
#define WM_WKLBUTTON4 (WM_USER + 96) // 0 0
#define WM_WKLBUTTON3 (WM_USER + 97) // 0 0
#define WM_WKKEYDOWN (WM_USER + 98) // 0 0
#define WM_WKCHAR (WM_USER + 99) // 0 0
// wndtxCallで呼べないTXAPIなどをメッセージ経由で呼び出すのに使います
// message wParam lParam 備考
#define WM_TXMOVEBYTE (WM_USER +101) // cbByte void
#define WM_TXCMPPRE (WM_USER +102) // void void HCLIP_WORKを使います
#define WM_TXMACROCONT (WM_USER +103) // void void
#define WM_TXJUMPMODAL (WM_USER +104) // void 行番号
#define WM_TXJUMPADDRESS (WM_USER +105) // void address
#if 0//1.00Fで廃止
#define WM_TXSAVETOMEM (WM_USER +106) // void lpMem xxx
#define WM_TXSAVETOFILE (WM_USER +107) // hfile void xxx
#define WM_TXWRITETOMEM (WM_USER +108) // cbWrite lpMem xxx
#define WM_TXWRITETOFILE (WM_USER +109) // hfile cbWrite xxx
#endif
#define WM_TXINSERTSTR (WM_USER +110) // void lpStr wndtxSendStr
#define WM_TXNEXTROLL (WM_USER +111) // void void
#define WM_TXPREVROLL (WM_USER +112) // void void
#define WM_TXSETEDIT (WM_USER +113) // fEdit void
#define WM_TXGETTEXTSIZE (WM_USER +114) // void void
#define WM_TXSETHIGH (WM_USER +115) // void void
#define WM_TXRESETHIGH (WM_USER +116) // void void
#define WM_TXRIGHTBYTES (WM_USER +117) // sizeMove void
#define WM_TXGETFMESSAGELOOP (WM_USER +118) // void void
//2.96 WM_TXSEARCH 廃止 (WM_USER +119) // void szfind wndtxSendStr
#ifdef __FLAT__
#define WM_TXGETFILENAME (WM_USER +120) // void hclip hclipにデータをセット
#else
#define WM_TXGETFILENAME (WM_USER +120) // void szbuff szbuffにデータをセット
#endif
#define WM_TXCALL (WM_USER +121) // void szmacro
//2.96 WM_TXSEARCHPREV 廃止 (WM_USER +122) // void szfind wndtxSendStr
#define WM_TXJUMPPARA (WM_USER +123) // void 行番号 //1.00Cで追加
#define WM_TXGETGENE (WM_USER +124) // void void //1.00H2
#define WM_TXGETNULLTEXT (WM_USER +125) // void void //1.00H2
#define WM_TXCALLEX (WM_USER +126) // void szmacro //1.01A wndtxSendStr
#define WM_TXSEARCHEX (WM_USER +127) // void replaceargex//1.01A wndtxSendMem
#define WM_TXREPLACEEX (WM_USER +128) // void replaceargex//1.01A wndtxSendMem
#define WM_TXSETSEARCHMODE (WM_USER +129) // void searchmode //1.01A searchmodeに合わせてtext->fSearchXXXをセット
#define WM_TXSETPAGINGMODE (WM_USER +130) // pagingmode void //1.01A
#define WM_TXAPPENDSTR (WM_USER +131) // void lpStr //2.00B wndtxSendStr
#define WM_TXPARAFORMSTART (WM_USER +135) // void void //2.90 paraform start
#define WM_TXCALLCMD (WM_USER +136) // void szapi //2.90 text->hwndtextにSendすると、
// textをカレントテキストとしてszapiを呼び出す
#define WM_TXISDIALOGMESSAGE (WM_USER +137) // void MSG* //2.90 for hwndtext
#define WM_TXGETTEXT1 (WM_USER +138) // void void //2.90 for hwndtext
//2.99 WM_TXHK_SENDMAIL (WM_USER +139) // 廃止
//2.99 WM_TXHK_POPUP (WM_USER +140) // 廃止
#define WM_TXPARAFORMCMD (WM_USER +141) // vk void //2.90 hwndtext
#define WM_TXNOTIFY (WM_USER +142) // hwndFrom id //2.97A 970228 汎用通知メッセージ
//2.99 WM_TXEHGETHWNDEH (WM_USER +143) // 廃止
#define WM_TXEHOP (WM_USER +144) // cmd arg //2.99 970315 旧WM_TXEHFLUSHWINDOW
#define WM_TXCOMMAND (WM_USER +145) // wParam lParam //2.99 970319 textfに拘わらずfFrameのtextにopする。
// WM_COMMANDは、textfにopする。
#define WM_TXKEYDOWN (WM_USER +146) // wParam lParam //2.99C 970324
// for outline keyboard interface
// lParam:TXKEYDOWNARG
// キー入力をフックする場合はTXKEYDOWNARG.fHook=TRUEとすること
#define WM_TXOPEN (WM_USER +147) // void void //3.00A 970427 text->hwndbaseを持つtextが生成されたことを
// test->hwndbaseに通知する
//2.99C 970324 WM_TXKEYDOWM lParam
typedef struct {
LPARAM lParam;
BOOL fHook;
} TXKEYDOWNARG;
//2.99 970317
// WM_TXNOTIFY id
#define TXN_CHANGENPARA 1 // ユーザ操作でy座標が変化した
#define TXN_CHANGEX 2 // ユーザ操作でx座標が変化した
#define TXN_REQUESTRESIZE 3 // 未完成
#define TXN_CONTROLTAB 4 // Ctrl+Tabが押された
// キャプチャーする場合は、次をする必要がある
// macroHookWndBaseReturn(TRUE);
// return HOOK_CAPTURE;
#define TXN_CONTROLF4 5 // Ctrl+F4が押された
// キャプチャーする場合は、次をする必要がある
// macroHookWndBaseReturn(TRUE);
// return HOOK_CAPTURE;
//1.99C 99->9に改正
#ifndef IDHELP
#define IDHELP 9
#endif
//2.94 970120 WM_COPYDATA dwData
// 30000以上はWZ本体が使用。30000未満はユーザ使用可
#ifndef __FLAT__
#define WM_COPYDATA 0x004A
typedef struct tagCOPYDATASTRUCT {
DWORD dwData;
DWORD cbData;
LPVOID lpData;
} COPYDATASTRUCT;
#endif
#define WM_COPYDATA_TXEXEC 30000
// wndprocbaseのWM_COMMANDのwParamの定義
// 0 - 29999までをアプリは自由につかって良い
// IDM_TXCOMMANDTOP以降のメッセージはTXが処理する
// これは、主に次の為に用いる
// ・TX-APIにする必要のないもの
// ・TX-APIにできないもの
// ・マクロで実現されている機能を呼ぶ
#define IDM_TXCOMMANDTOP 30000 //2.96A 970213 旧IDM__TXCOMMANDTOP
//2.96A 970213 IDM__FILEHIST -> IDM_TXFILEHIST
//2.96A 970213 IDM__QUITALLFORCE,IDM__CLOSEALLEVERYCONT廃止
#define IDM_TXUISAVEEX 30001 //2.98 970310 編集されているときだけ保存
#define IDM_TXUISAVE 30002 //2.96A 970213 旧 IDM__FILESAVE
#define IDM_TXFILEHIST 30003
#define IDM_TXFILEHISTTAB 30004 // キーとファイル名の間に'\t'付き
#define IDM_TXLPRINT 30005
#define IDM_TXLPRINTSTYLEEDIT 30006
#define IDM_TXLPRINTSTYLESELECT 30007
#define IDM_TXLOADONDEMAND 30008 //1.90 まだ内容をloadしていないメニュー
#define IDM_TXWINDOWLIST 30009 //1.90 ウィンドウリスト
//2.96A 970213 IDM__MACROxxx -> IDM_TXMACROxxx
#define IDM_TXMACROFORKTEXT 30010
#define IDM_TXMACRODUMPTEXT 30011
#define IDM_TXMACROCOMPILETEXT 30012
#define IDM_TXMACROINSTALL 30014
#define IDM_TXMACROUNINSTALL 30015
#define IDM_TXMACROEXECTEST 30016
#define IDM_TXTEXTTOAPIDB 30017
//2.96A 970213 IDM__GREP,IDM__FILER,IDM__LAUNCHERxxx 廃止
#define IDM_TXSTDOUTOPEN 30025 //2.96 970209 旧IDM__WINDOWSTDOUT
#define IDM_TXPARAFORMFAILED 30026 //2.99 970314 通知(paraformできなかった)
#define IDM_TXGENEMAN 30030
#define IDM_TXUISAVEAS 30031 //2.99D 970331 new
#define IDM_TXUISAVETO 30032 //2.99D 970331 new
#define IDM_TXABOUT 30052 //2.96A 970213 旧IDM__TXABOUT
#define IDM_TXGETVERSION 30054
//
#define IDM_TXUIPRJRESUME 30060
#define IDM_TXUIPRJOPEN 30061
#define IDM_TXUIPRJSAVETO 30062
#define IDM_TXPRJOPEN 30063 //1.00C
#define IDM_TXPFSAVE 30064 //1.00D
#define IDM_TXPREVIEWEXIT 30065 //2.96A 970214 内部用
#define IDM_TXFLUSHTABLEALL 30066 //2.99D 970329
//
#define IDM_TXUIIMEREGWORD 30070
#define IDM_TXUPREPEAT 30071
#define IDM_TXDOWNREPEAT 30072
// 内部用
#define IDM_TXFILEHISTTOP 30100
#define IDM_TXFILEHISTEND 30199
#define IDM_TXFILEHISTMAX 100
// 内部用
//2.96A 970213 IDM__WINDOWxxx -> IDM_TXWINDOW
#define IDM_TXWINDOWTOP 30200
#define IDM_TXWINDOWEND 30299
// これ以降、TX function・マクロ ID
//2.96A 970213 IDM__TXFUNC廃止。IDM_WZCMDTOPを使ってください
#define IDM_WZCMDTOP 30500
//1.01A
// タイマーID
// 0-29999まではマクロで自由に使えます
#define TIMER_TOP 30000
#define TIMER_TX 30000
#define TIMER_TXSCROLL 30001
#define TIMER_TXFLUSHTOOLBAR 30002 //2.97 970216 旧TIMER_TXFLUSH
#define TIMER_TXAUTOSAVE 30003
#define TIMER_TXSLEEP 30004
#define TIMER_TXTERM 30005
#define TIMER_TXFLUSHPAGE 30006 //1.99I
#define TIMER_TXFLUSHBINEDIT 30007 //2.00E
#define TIMER_TXFLUSHTABLE 30008 //2.97 970216
#define TIMER_TXFLUSHPARAFORM 30009 //2.98 970309
#define TIMER_TXFLUSHMAILEDIT 30010 //2.99 970315
#define TIMER_TXACTIVATE 30011 //2.99D 970401 new
#define TIMER_TXDISPALL 30012 //3.00A2 970506 new
#define TIMER_END 30012 //2.99D 970330 タイマを増やしたらここも増やす
//1.99A
// ヘルプトピック ID
#define IDH_OPEN 101
#define IDH_SEARCH 102
#define IDH_REPLACE 103
#define IDH_GENMNGR 104
#define IDH_PRINT 105
#define IDH_HTMLTAG 106 //2.99D 970402 HTMLタグ挿入用
//
#define IDH_CUSTKEY 110
#define IDH_CUSTMENU 111
#define IDH_CUSTTOOL 112
//
#define IDHC_FORMAT 121
#define IDHC_STYLE 122
#define IDHC_COLOR 124
#define IDHC_SCROLL 125
#define IDHC_CURSOR 126
#define IDHC_INTERFACE 127
#define IDHC_FILE 128
#define IDHC_EDIT 129
#define IDHC_SEARCH 130
#define IDHC_STRING 131
#define IDHC_MACRO 132
#define IDHC_WINDOW 133
#define IDHC_HELP 134
#define IDH_FILER 140
//##for メニューチェック
//2.99 970319
// メニューが開かれたときに、メニューに登録されているマクロのat_cmdcheckが呼び出されます
// これに応じて返り値を返すことによって、メニューをチェックしたり使用不能にすることが
// できます。WZ2.99 970319 からです。
#ifndef MF_ENABLED
#define MF_ENABLED 0x0000 // コマンド実行可能
#define MF_GRAYED 0x0001 // コマンド実行不可能
#define MF_UNCHECKED 0x0000 // コマンドは現在OFF
#define MF_CHECKED 0x0008 // コマンドは現在ON
#endif
//##
//2.00C txCharConvert arg
// size = 4bytes fixed
//2.99C 970324 記号のうち、"、'、“”、‘’は変換しないようにした
typedef struct {
WORD fJkataToKana:1; // 全角カタカナ->半角カナ
WORD fJkanaToKana:1; // 全角ひらがな・カタカナ->半角カナ
WORD fJankToAnk:1; // 全角ANK->半角ANK
WORD fJalphabetToAnk:1; // 全角アルファベット->半角ANK
WORD fJnumberToAnk:1; // 全角数字->半角ANK
WORD fJkigouToAnk:1; // 全角記号->半角ANK
WORD fJspaceToAnk:1; // 全角空白->半角ANK
WORD fKanaToJhira:1; // 半角カナ->全角ひらがな
WORD fKanaToJkata:1; // 半角カナ->全角カタカナ
WORD fAnkToJank:1; // 半角ANK->全角ANK
WORD fAlphabetToJank:1; // 半角アルファベット->全角ANK
WORD fNumberToJank:1; // 半角数字->全角ANK
WORD fKigouToJank:1; // 半角記号->全角ANK
WORD fSpaceToJank:1; // 半角空白->全角ANK
WORD fJhiraToKana:1; //2.99C 970324 全角ひらがな->半角カナ
WORD reserved:1;
WORD fAc:1; // オートコレクト
WORD fJbraceToBrace:1; //2.00B 「」を[]へ変換
WORD reserved2:14;
} CHARCONVERT;
//1.99B for WM_TXGETPROPERY
typedef struct {
WORD fTxWinApp:1;
WORD freserved1:15;
WORD freserved2:16;
} TXPROPERTY;
//1.99C 現在画面に表示中の行についての情報
typedef struct {
BYTE fDirty:1; // 表がアンダーライン表示で消された
BYTE reserved:7;
} LINEINFO;
// 書式文字列
#define HEAD_N 6 // 見出し数
#define TITLE_N 6 //1.90 見出し数
// 見出し1-3文字列
// 正規表現を指定できるようにバッファを大きくとってある
#define SZTITLE_N 3 // タイトル文字列数
#define CCHTITLE 80
// 書式文字列
// 印刷スタイルに入れたほうが良い様な向きもあるが、テキストに固有な属性と考える。
// たとえば、Cソースプログラムとテキストファイルとでは、書式文字列は全く異なった
// ものになり、これを印刷スタイルに入れると共有できなくなってしまう。
#define CCHFORMAT 20 // CCHTITLEより短いこと!
// この定義を変更したら、_config.c tszformat[]も変更すること
// また、config.cなどが#defineの順番に依存している
// 文字装飾
#define SZFORMAT_BOLD_TOP 0 // 太字
#define SZFORMAT_BOLD_END 1
#define SZFORMAT_UNDERLINE_TOP 2 // 下線
#define SZFORMAT_UNDERLINE_END 3
#define SZFORMAT_ITALIC_TOP 4 // 斜体
#define SZFORMAT_ITALIC_END 5
// 見出し
#define SZFORMAT_TITLE4 6
#define SZFORMAT_TITLE5 7
#define SZFORMAT_TITLE6 8
// 箇条書き
#define SZFORMAT_ARTICLE 9 // 箇条書き
#define SZFORMAT_ARTICLENUM 10 // 番号付き箇条書き
#define SZFORMAT_ARTICLENOTICE 11 // 注釈箇条書き
// 段落書式
#define SZFORMAT_INDENT 12 // インデント
#define SZFORMAT_CENTER 13 // センタリング
#define SZFORMAT_RIGHT 14 // 右寄せ
#define SZFORMAT_FORMFEED 15 // 改ページ
#define SZFORMAT_TABLE 16 // 表(TABで項目を区切る)
#define SZFORMAT_TAB 17 // 桁揃えまたはフローインデント
// (境界線の無い表。TABで項目を区切る)
// 特殊文字
#define SZFORMAT_BR 18 // 改行(改段ではない)
#define SZFORMAT_BITMAP 19 // 図
#define SZFORMAT_HR 20 // 水平線
//2.98 970305 SZFORMATが増えてWZ.CFGの互換性がなくなった
#define SZFORMAT_FOOTNOTE_TOP 21 // 脚注
#define SZFORMAT_FOOTNOTE_END 22 //
#define SZFORMAT_RUBY_TOP 23 // ルビ
#define SZFORMAT_RUBY_END 24 //
#define SZFORMAT_FONT_TOP 25 // 特殊文字
#define SZFORMAT_FONT_END 26 //
#define SZFORMAT_PROOF_TOP 27 // 校正
#define SZFORMAT_PROOF_END 28 //
#define SZFORMAT_LINK_TOP 29 // リンク
#define SZFORMAT_LINK_END 30 //
#define SZFORMAT_SEPARATOR 31 // ルビ、フォント、校正の項目の区切り記号
#define SZFORMAT_BODY 32 // 本文の開始
#define FORMAT_N 33 // 書式文字列数
// タイトル文字列正規化
#define COLORTITLE_N (SZTITLE_N + SZFORMAT_TAB - SZFORMAT_TITLE4 + 1)
//2.93 多重化コンテキスト
// sizeof(TX)に影響を与える
typedef struct {
IFILE address;
BYTE ly;
SIGNED_WORD lyUnder;
SIGNED_WORD xbase;
BYTE lcywindow;
IFILE cliptop;
WORD fClip:1;
WORD fClipSearch:1;
WORD fClipMouse:1;
WORD freserved:13;
WORD reserved;
} MT_CONTEXT;
//2.93 UNDOPACKコンテキスト
// sizeof(TX)に影響を与える
typedef struct {
SIGNED_BYTE fPacking; // for クライアント動作チェック
IFILE adrPackTop; // pack開始時text->pundo
WORD nPacked; // packされたコマンド数
WORD fPackParaatr:1; //2.98 970307 UC_PARAATR_WRITEがpackされた?
WORD fReserved:15; //2.98 970307
} UNDOPACK_CONTEXT;
//2.93 GENEコンテキスト
typedef DWORD IGENE;// 世代番号
typedef struct {
IGENE igene; // 世代
// openテキストが0世代
BOOL fBack; // 直前の世代移動は、遡り移動だった?
DWORD nSave; // UC_OPEN/SAVE/AUTOSAVE counter
DWORD nOpen; // UC_OPEN counter
TIME time; // 世代
mchar szComment[CCHWORD]; //1.97 コメント
} GENESTAT;
typedef struct {
mchar szdocname[CCHPATHNAME]; // 作業用DOCファイル名
#ifdef __OLECPP__
LPSTORAGE pIStorageDoc; // 作業用DOCファイルのストレージオブジェクト
LPSTORAGE pIStorageWz; // .WZのload/save中のストレージ
LPSTREAM pIStreamWz; // .WZの文書データストリーム
LPSTORAGE pIStorageWzDoc; // .WZのオブジェクトストレージ
#else
LPVOID pIStorageDoc;
LPVOID pIStorageWz;
LPVOID pIStreamWz;
LPVOID pIStorageWzDoc;
#endif
} OLECONTEXT;
//2.94 970120
// コマンドライン解析結果
typedef struct {
BOOL fNeedCreateInstance; // このコマンドラインの実行には、
// 新しいインスタンスを生成する必要がある
// 以下、コマンドライン解析結果
BOOL fNoTextPathSearch; // テキストファイルのパス検索をしない
BOOL fBinedit; // バイナリエディトモード
BOOL fBinary; // 全角文字を半角2文字として扱う
BOOL fCompile; // szForkのコンパイルを行う
BOOL fDump; // szForkのダンプを行う
BOOL fFork; // szForkを実行
BOOL fExecTxm; // szForkを.txmマクロとして実行
BOOL fViewer; // ビューモードで起動する
BOOL fPrint; // 印刷のみ行う
mchar szlpstyle[CCHLPSTYLE];//2.99D 970330 印刷スタイル名
BOOL fNoWndBase; // text->hwndbaseを表示しない(作成はされる)
BOOL fnewfile; // 新規ファイルとしてオープンする(VZ)
// 旧static fnewfileはtextに持つ
BOOL fNoCheckDuplicate; // 多重化でもなく、二重化でもなく、
// ファイルを複数窓でオープンする
BYTE modeTxc; // macroCompile時のTX-Cのモード
// 0:default,1:TX-C16,2:TX-C32
HWND hwndParent; // txOpenによるオープンの場合、
// txOpenを実行したhwndbase
HWND hwndOwner; // text->hwndbaseのオーナウィンドウ
BOOL fNoProfile; // txOpenTextでプロファイルを参照しない
BOOL fNoQuestion; // 新規ファイルの問い合わせをしない
// 旧fQの逆転フラグ
BOOL fReadOnly; // 修正はできるがセーブできない。
BOOL fEditmodeOptionSeted; // 起動時のeditmodeを指定
BYTE editmodeOpen; // 指定されたeditmode
mchar szFork[CCHPATHNAME]; // 起動するマクロ名
BYTE pagingmode; // 起動時のページングモード
BOOL fNoAddHist; // 起動時にファイル名をヒストリに追加しない
int nCmdShow; // デフォルト値をセットしておくこと
NPARA nparaJump; // ジャンプ(0ならしない)
int lxJump; // nparaJumpが真のとき段落先頭からlxバイトジャンプ
mchar szFind[CCHWORD]; // 検索文字列の指定
BOOL fAnchor; // アンカーへジャンプ?
BOOL fSingleFileName; // コマンドラインに空白を含むファイル名をそのまま指定
// このオプション指定は、ファイル名の指定の前に行なうこと
BYTE fClip; // 範囲選択(0ならしない)
IFILE cliptop; // 範囲選択先頭
IFILE clipend; // 範囲選択末尾
BOOL fOptTx; // ".wz"としてオープン
mchar szOpenExt[10]; // 拡張子の設定をロードして起動
BOOL fDispstylemodeOptionSeted;// 表示スタイルを指定して起動
BYTE dispstylemodeOpen; // 指定された表示スタイル
HWND ehHwnd; // ウィンドウフック
BYTE modeMail; //2.98 970310 ehHwndのメーラ種類
WORD fEhTextboxStart:1; //2.99 970315 テキストキャプチャーで起動した?
WORD fPrjOpen:1; //2.99D 970330 プロジェクトのオープン?
WORD fJumpAddress:1; //3.00A 970428 adrJumpにジャンプ?
WORD fPlaintext:1; //3.00B1 970523 "ベタテキストファイル"の設定を読み込んでオープン?
WORD fSpecialTemp:1; //3.00B1 970523 fPlaintext/fBinedit指定は一時的なもので引き継がない?
WORD fOpenPost:1; //3.00B2 970614
WORD fReserved:10;
IFILE adrJump; //3.00A 970428 ジャンプ先アドレス
BOOL fExecMacro; // szexecmacroを起動後に実行
mchar szexecmacro[CCHPATHNAME]; // 実行するマクロ名
int fJumpLy; // 't':lyを0に
// 'c':lyを中央に
// n:lyをn-1に
BYTE fOpenQuit; // 1:ファイルオープンダイアログを出して終了
// 2:新規ファイル作成ダイアログを出して終了
mchar szfilename[CCHPATHNAME]; // 編集ファイル名
// 複数指定の場合は、先頭に指定されたファイル名
// 後続のファイル名は無視される
BOOL fMulti; // ファイルが複数指定された?
POINT pointopen; // オープン位置
SIZE sizeopen; // オープンサイズ
mchar sztemplate[CCHPATHNAME]; //2.97 970226 テンプレートファイル名
} CMDLINECONTEXT;
//2.94 970121
typedef struct { // 0で初期化してください
TX* text; // アウトラインを抽出するテキスト
int iselFirst; // 最初に選択する項目
mchar *szhook; // 標準ダイアログプロシジャーフック
WORD fOutlineStd:1; // 標準アウトライン機能用
WORD fNoTitleHead:1; // 見出し先頭に"・"を付けない
WORD reservedBit:14;
PMACROFUNC hook; // 内部用
//2.90 以下、内部用
TX* textTree; // text for tree
HWND hwnd; // dialog hwnd
BYTE fUndisp; // tlSetNow,tlFromHlしない
WORD fDragging:1; //
WORD fIniting:1; //
WORD fLabelEditing:1; //
WORD fLabelName:1;
WORD modeWindow:2; //2.99D 970330
WORD fReserved:10; //
DWORD nEdit; //2.99D 970331 再作成したときのtext->nEdit
#ifdef __FLAT__
HANDLE hDragItem; // HTREEITEM
BYTE reserved[21]; // sizeofを変化させないこと!
#else
BYTE reserved[27]; // sizeofを変化させないこと!
#endif
} CHOOSEOUTLINE;
//2.94 970121 置換コンテキスト
//3.00A 970428 メンバ追加、sizeof変更
typedef struct {
TX* text;
mchar szReplace[CCHWORD];
int lchReplace;
int found;
int count;
int ly;
int fClip; //1.00E (UINT fClip:3)では足りない
IFILE cliptop;
WORD fClipMouse:1;
WORD fSelectJump:1;
WORD fSearchAllText:1; //1.01A
WORD fReplacelist:1; //2.92 置換リストで置換中?
WORD fReplaceing:1; //2.94 970121 置換中?
WORD fGrepReplace:1; //3.00A 970428 for Grep置換
WORD fGrepReplaceTag:1; //3.00A 970428 at fGrepReplace
// (SEARCH_RE タグ置換 | 置換リストからの置換文字列)かどうかセット
// TRUEなら置換文字列はrarg.szReplaceに入る
WORD fReserved:9; //3.00A 970428
HWND hwndReplace; // 置換確認ダイアログ
SEARCHMODE searchmode0; //1.01A オリジナルsearchmode
REPLACEARGEX rarg; // Replace Argument
} REPLACECONTEXT;
#define MAX_NPARALETTERHEADER 200 //2.98 970308 レターヘッダの最大行数
//##TEXT構造体
//2.96 970205 lgcxClient,lgcyClient廃止
//2.97 970223 ft_itable,ft_npara廃止
struct tagtx {
// 以下、[変更可]まで、変更してはいけません。
// テキストが破壊されるおそれがあります。
UINT sizeStruct; // sizeof(struct tagtx) for dynamic arg check
// textbuff
mchar *buff; // テキストバッファ
mchar szfilename[CCHPATHNAME];
// ファイル名
// 新規のときは、szfilename[0] == 0
IBUFF sizebuff; // テキストバッファの現在のサイズ
// textbuff pointer
IBUFF cur; // カーソル位置のテキストバッファオフセット
// text2の先頭
IBUFF cur0; // curの直前.cur0とcurの間にgapがある.
// gapの先頭
IBUFF cury; // カーソル表示行の先頭
// text1にある
IBUFF curysize; // 表示行のサイズ
IBUFF curscreen; // 画面先頭のテキストバッファオフセット
// text1にある
//1.00F IBUFF_ERRORのときは内容無効
IBUFF cache; // 前方参照に用いる
// 0のときはキャッシュ内容無効
// view mode
IBUFF FAR *ptbViewPage; //
UINT iViewPage1; //
UINT iViewPage2; //
BBOOL fEditViewMode; // 現在、view mode ?
// fSemiViewModeも見てください。
// あるいはtxGetViewmodeで調べるのが良いです。
// textfile
HFILE hf; // ファイルハンドル
IFILE sizefileReal; // ファイルサイズ(txatrを含む実際のサイズ)
IFILE sizefile; // ファイルサイズ(テキストデータの分のみ)
IFILE sizeload; // ファイルから読み込んだバイト数
BBOOL fOpen; // Openされている?
BBOOL fReadAll; // ファイルを読み終えた
BBOOL fAddEof; // textbuffにEOFを追加した
TIME timeFile; // ファイルの日付
TIME timeFile0; //1.97 前回チェックしたときのファイルのタイムスタンプ
BYTE crOpen; // オープン時の改行コードの形式
#define RETURNCODE_CRLF 0 //1.95 'D'から変更
#define RETURNCODE_CR 1 //1.95 'M'から変更
#define RETURNCODE_LF 2 //1.95 'U'から変更
BYTE crSave; // 保存するときの改行コード
BYTE kcOpen; //1.95 オープン時のファイルの文字コード
#define KC_SJIS 0
#define KC_JIS 1
#define KC_EUC 2
#define KC_UNICODE 3 // WZ32only
// 内部コード
#define KC_INTERNAL_TOP 100
#define KC_EUC_SJIS 100 // EUC or SJIS
#define KC_ASCII 101 // no kanji
BYTE kcSave; //1.95 保存するときの文字コード
// temp
mchar HUGE *hptemp[2]; // テンポラリメモリ
mchar szTempName[2][CCHSPATHNAME]; // テンポラリファイル名
HFILE htemp[2]; // テンポラリファイルハンドル
BBOOL fCreatedTemp[2]; // _lcreatした?
BBOOL fEditTempMem; // 現在、テンポラリをメモリに作成中?
IFILE sizetemp[2]; // テンポラリファイルのサイズ
// スワップアウトデータサイズの他に、
// ヘッダ情報などのサイズも含む
IFILE temp1; // テンポラリ1のサイズ
IFILE temp2; // テンポラリ2のサイズ
// スワップアウトデータサイズのみ。
// ヘッダ情報などのサイズは含まない
// 行編集の取消
mchar *pundopara; // 行バッファ
IBUFF sizeundopara; // バッファサイズ
IBUFF lchundopara; // バッファ内の文字数
BYTE fParaUndoing:2; // 再入防止フラグ
BYTE fNoParaUndoSet:2; //2.98 970307 paraundoSetしない?
// instance information
HANDLE hInstance; // インスタンスハンドル
HANDLE hInstanceParent; //2.90 親モジュールのインスタンスハンドル
mchar* szCmdLine; // コマンドライン
// text1の場合は、Windowsから渡されたコマンドライン
// txe起動の場合は、mallocedの場合もある
// TXWS_TEXTの場合は、malloced
CMDLINECONTEXT* pcc; //2.94 970120 コマンドラインコンテキスト
// window
HWND hwndbase; // ベースウィンドウ(with menubar)のハンドル
HWND hwndtext; // テキストウィンドウのハンドル
int cxClient; // hwndTextのサイズ(ピクセル単位)
int cyClient; // hwndTextのサイズ(ピクセル単位)
int cxBase; // テキスト表示開始位置
int cxCaret; // キャレットの幅
int cyCaret; // キャレットの高さ
int nOpenDC;
// display/printer
int cxLine; //1.99C (内部用)GetLineSizeのcx計算結果
int cxWidth; //1.00F テキストの横幅(ディスプレイドット座標)
int cxWidthWhole; //2.96 970206 テキストの横幅(ディスプレイ座標)
// 1段組の場合はcxWidthと同じ。
// n段組の場合は、1段目の左端からn段目の右端までの幅
LPRINT* lp; //1.90 プリント設定
int lpcxWidth; //1.91A テキストの横幅(プリンタ座標)(一段分)
int lpcyHeight; //1.91A テキストのページ長(プリンタ座標)
int lpcxChar; //1.91A プリンタのフォント幅
int lpcyChar; //1.91A プリンタのフォント高さ
int lpcxWidthWhole; //2.96 970203 テキストの横幅(プリンタ座標)
// 1段組の場合はlpcxWidthと同じ。
// n段組の場合は、1段目の左端からn段目の右端までの幅
//
HDC hdc;
HDC hdcMem;
HDC hdcPrinter; //1.90 プリンタのDC
// これが設定されている時は、プリンタに印刷中である
//2.98 970306 ちらつかない表示
HDC hdcText; // オリジナルhdc
HDC hdcVram; // 仮想出力先hdc
HBITMAP hdcBitmap0; // 仮想出力先hdcのオリジナルhbitmapバックアップ
// キー定義
KEY* key; // キー定義
mchar *tszfkey; // ファンクションキーの文字列
// size = FKEY_NKIND * FKEY_NKEY * FKEY_SIZE
#define FKEY_SIZE 13 // 登録できる文字数+1
#define FKEY_NKEY 12 // 最大キー数
// シフトキーとの組み合わせ
#define FKEY_NORMAL 0
#define FKEY_SHIFT 1
#define FKEY_CTRL 2
#define FKEY_SHIFTCTRL 3
#define FKEY_NKIND 4
// ツールバー
TXTOOLBAR *ttxtoolbar; // ツールバーデータ
int ntoolbar; // ttxtoolbarの数
HBITMAP hbitmapToolbar; // ツールバービットマップ
int cxToolbar;
int cyToolbar;
// for display
HFONT hfont; // フォントハンドル
HFONT hfont2; //1.00F フォント2ハンドル
HBRUSH hbrushBack; // WZのブラシ
HBRUSH hbrushText; // WZのブラシ
HBRUSH hbrushBlock; // 範囲選択時、反転表示用
HBRUSH hpenUnderline; // アンダーライン
HPEN hpenNline; // WZのペン
HPEN hpenText;
HPEN hpenBack; //1.00F WZのペン
HBITMAP hbitmapLf; // WZのビットマップ
HBITMAP hbitmapEof;
HBITMAP hbitmapTab;
HBITMAP hbitmapSpace;
HBITMAP hbitmapFf; //1.91A フォームフィードのビットマップ
HPEN hpenBtnShadow; // Windowsシステム色のペン
HPEN hpenBtnShine;
HPEN hpenWindowFrame;
HPEN hpenBtnFace;
HBRUSH hbrushBtnFace; // Windowsシステム色のブラシ
int lx; // カーソルX座標 (文字座標)
// lfProp時は、近似値(text->x / text->cxChar)
int lx0; // 縦移動時に使用
int x; //1.00F カーソルX座標 (ドット座標)
int x0; //1.00F 縦移動時に使用
int xbase; // basex
int cxChar; // 文字幅
int cxCharMax; //1.00F 1文字の最大幅
int cxLetter; //2.00E 字間をふくむ文字幅
int ly; // カーソルy座標
int lyUnder; // アンダーラインy座標(非表示中は-1)
int hideUnder; //1.00F fListboxのフォーカス表示がHideされているか?
int lcySmupper; // 現在のスクロールマージンTopY
int lcySmlower; // 現在のスクロールマージンTailY
int lcywindow; // 表示行数(syTop,syTailの分も含む)
// editmode == 2のときは動的に変化します
// 0になることはない。必ず1以上になる
// 行の内容が全て表示できる分の値に設定されます。
// 但し、1に設定されている時は必ずしもこの通りではありません
// 必ずLINE_Nより5程度少なくなる
int cyChar; // 文字高さ
int cyLine; // 行高さ
// display/edit flag
HCURSOR hcursor; // マウス砂時計表示時、元の形状
int fNoCursor; // マウス形状を変更しない
int fUndisp; // 非表示フラグ
int fUndraw; //2.00B 非描画フラグ
// fUndispだと描画しないだけでなく各種
// 計算なども行わないが、このフラグは単に
// 描画を行わない
BBOOL fUndispCursor; //1.00H3 txDispCursor/txDispLocateの処理をしない
// txDeletePara etc のちらつきをなくすため、
// 1.00Cで内部で実装したものを1.00H3で公開
BBOOL fNomoveBase; //1.00H3 画面の横スクロールをしない(text->basexを動かさない)
int fHigh; // Highspeed flag
// カーソル位置(cury,curysize)の計算をしない。
// npara/nlineなども計算しないのでズレます。
// editmodeが真ならnparaは計算します。
// 行の長さが長すぎる時の警告も出しません。
// <使用要注意>
// TXHIGHのAPIのみ使えます。
// それ以外のAPIは使えません。
// 使った場合の動作は保証しません。
// できるだけチェックをして回避していますが、
// テキストを破壊する恐れもあります。
// <使用後>
// txFlushCury()すること
// カーソルの位置が正しくありません。
// 位置を計算するにはtxJumpAddressを使ってください。
// ・txSetHigh/txResetHighを使えば、<使用後>の処理を自動で行います
int lyHigh; // txSetHigh()時、ly保存
BBOOL fUndispSelect; // 範囲選択を表示しない
BBOOL fCtl3d; // 1:ctl3dによる3D表示中
// 2:Windows95による3D表示中
BBOOL fBreakOn; // マクロ中断可?
// clip
int fClip; // 範囲選択モード
#define CLIP_NONE 0 // 範囲選択されてない
// 基本範囲選択
#define CLIP_CHAR 10 // 文字単位
#define CLIP_LINE 11 // 表示行単位
#define CLIP_PARA 12 // 論理行単位
#define CLIP_BOX 13 // 箱形
#define CLIP_WORD 14 // 単語
#define CLIP_SENTENCE 15 // 文
// すべてを選択
#define CLIP_ALL 20
// txSelectGetMode,txSelectEx用
#define CLIP_LINECUR 31
#define CLIP_PARACUR 32
// txSelectEx用
#define CLIP_VZ 40
#define CLIP_WZ 41
#define CLIP_SEARCH 42 //2.99 970313 new
#define CLIP_MOUSE 43 //2.99 970313 new
// 内部用
#define CLIP_PARA1 90 // 1論理行
#define CLIP_DELSTRPREV 91 // BSによる文字列削除
#define CLIP_DELSTRNEXT 92 // DELによる文字列削除
// txClipCopyEx用
#define CLIP_COPYPARA1 100 // カーソル論理行をコピー
//2.95 970125 ビットフィールド化
WORD fClipVz:1; // VZ clip?
WORD fClipWz:1; // WZ clip?
// 最初に横に動かせば文字単位
// 下に動かせば論理行単位
WORD fClipMouse:1; // マウスによる範囲選択?
WORD fClipCur:1; //1.00F (WZ内部用)
// CLIP_PARA/CLIP_LINE時にカーソル位置も範囲に含めるか?
WORD fClipSearch:1; // 検索による範囲選択?
WORD fClipPasteJump:1; // 最後のtxPasteで、ペーストした分カーソルを移動した?
WORD fDispUnderClip:1; //1.00F 選択開始時fDispUnder
WORD fKeyVkShift:2; //2.96 970209 for キーボードマクロ時ms shiftキー範囲選択
// 0:実際のVK_SHIFTの押し下げ状態に従う
// 1:SHIFTは押されていないとみなす
// 2:SHIFTは押されているとみなす
WORD fClipDrag:1; //1.99I drag&drop-cut&paste
// 途中でtxSelectXXXが実行されたときはリセットする
WORD fClipReserved:6;
int lxClip; // 範囲選択開始時lx
int lyClip; // 範囲選択開始時ly
NPARA nparaClip; // 範囲選択開始時npara
NLINE nlineClip; // 範囲選択開始時nline
IFILE cliptop; // 範囲選択開始位置
// 行単位の場合は行頭からになるので、
// clipcur0とは必ずしも一致しない
// Insert/Deleteでもズレないよう補正する
IFILE clipcur0; // 範囲選択開始時のカーソル位置のアドレス
// Insert/Deleteでズレるが問題ない
IFILE cliptoppara; // 範囲選択開始時の論理行頭のアドレス
// 必ずしも正確な値ではない
// Insert/Deleteでズレるが問題ない
IFILE cliptopparatail; //1.00F 範囲選択開始時の次の論理行頭のアドレス
// 必ずしも正確な値ではない
// Insert/Deleteでズレるが問題ない
IBUFF clipend; // ClipParaワーク
BYTE modeFreeCursorClip;//1.00F 選択開始時modeFreeCursor
IFILE cliptoptail; //1.00F 範囲選択開始時の次の単語/文/行の先頭アドレス
IFILE cliptopnow; //1.00F 正確な選択開始アドレス(cliptopがベース)
IFILE clipendnow; //1.00F 正確な選択Tailアドレス(txGetAddressがベース)
int xClip; //1.00H6 範囲選択開始時x
// scroll by scrollbar
BBOOL fScrollSB; // スクロールバーでスクロール中
int lySB; // カーソル位置(-1なら無効)
// scrollbarによるスクロール開始時の情報
NLINE nlineSB; // npara/nline
IFILE adrSB; // カーソル位置
int lxSB; // lx
int cxCaretSB; // カーソルの幅
int fClipSB; //1.99F fClip
// 途中でtxSelectXXXが実行されたときはリセットする
// そうしないと、以前はtxFlushSelectNowで、
// fScrollSBならスクロール開始時の情報を範囲選択エリアとして
// 返していたが、選択モードを変更したときに、
// そのモードの情報が返されず、テキスト<->高速モード変換で
// テキストが破壊されることがあった。
// txSelectAllしてコピーし、テキストを全削除してペースト
// すると元に戻らなかった
NPARA adrClipDrag; //1.99I ドラッグを開始したときのnpara
IFILE clippastetop; //2.95 970125 最後にペーストした時のペースト開始アドレス
IFILE clippasteend; //2.95 970125 ペースト終了アドレス
// 拡張ステータス
// オフセットが変わらないようにトップダウンで拡張すること
// 以上、HSTRBLKなど、ポインタを置いてはいけない!
#ifdef __FLAT__
BYTE reserved[19]; // 拡張用の余裕
#else
BYTE reserved[21]; // 拡張用の余裕
//1.00F txwndhook,callbackbin,dialogをtext構造体から削除
#endif
WORD sizeTxvar; //3.00B2 970615 現在のtextローカル変数の確保数
WORD nTxvar; //3.00B2 970615 現在のtextローカル変数の数
// 拡張ステータス
// オフセットが変わらないようにボトムアップで拡張すること
HBITMAP hbitmapBeamtab; //3.00A 970427
BYTE fDispSilent; //2.99E 970403 ちらつかない表示(現在の状態)
// WZ16では共通DCが足りなくなって16bitアプリの画面描画が
// できなくなることがあるので、
// ちらつかない表示はサポートしない
LPRINT* lpWztext; //2.99D 970401 WZ文書の文書に埋め込まれていたLPRINT
BYTE fCopyingWinTs; //2.99C 970325 HCLIP_WINとHCLIP_TS両方にコピー中?
BYTE fDispFindEnable; //2.99C 970323 検索文字列の色分けを実行?(設定から内部状態に変更)
BBOOL fNoImeControl; //2.90 IMEの制御をしない
//2.99 970320 BBOOLに拡大
DWORD sizefileMax; //2.99 970318
// 0のときはファイルをすべて読み込む
// 1以上のときは、そのサイズまでしかファイルを読み込まない
// for preview
DWORD txnMask; //2.99 970317 WM_TXNOTIFYを送るかどうかを指定
// デフォルト値は0。なにも送らない
#define TXNM_CHANGENPARA 0x0001
#define TXNM_CHANGEX 0x0002
#define TXNM_REQUESTRESIZE 0x0004
#define TXNM_CONTROLTAB 0x0008
#define TXNM_CONTROLF4 0x0010
HBITMAP hdcBitmap; //2.99 970317 仮想出力先hdcのhbitmap
WORD articleNumber; //2.99 970316 WordToEdit 現在の箇条書き番号
DWORD wtmEhMoveWindow; //2.99 970315 ehHwndを隠すため、MoveWindowを開始した時間
BYTE fImeInputToWmChar; //2.99 970314 IMEの入力をWM_CHARで処理?
WZCMD wzcmdLastOp; //2.99 970313 最後にユーザが実行したコマンド
BYTE fNoFlushTable; //2.98A 970311 tableFlushしない
BYTE modeMail; //2.98 970310 ehHwndのメーラ種類(0:テキストキャプチャー)
#define MAIL_TEXTCAPTURE 0 //3.00A 970426
// テキストキャプチャー
// 従来も0はテキストキャプチャーの意味だが、
// MAIL_TEXTCAPTUREというIDを定義した
#define MAIL_TEXTBOX 1 //3.00A 970426
// 以下のメーラ以外のメーラ
#define MAIL_MSMAIL 10 // Microsoft(R) Internet Mail(TM)
#define MAIL_BECKY 11 // Becky!(TM)
#define MAIL_ALMAIL 12 // AL-Mail(TM)
#define MAIL_EUDORAPRO 13 // EUDORA Pro(TM)
#define MAIL_VC4 14 // VC++4.2
#define MAIL_NSMAIL 15 // Netscape Mail
#define MAIL_NIM 16 // Nifty Manager
#define MAIL_OUTLOOK 17 // Outlook
#define MAIL_EXCHANGE 18 // Exchange
WORD nparaLetterHeader; //2.96 970206 レターヘッダの行数(0:なし)
BYTE lyScreenEndResult; //2.98 970307 Disp(DISP_GETCURSCREENEND)のly結果
WORD fUndispLinenum:2; //2.98 970306 行番号を表示しない
WORD fNoScrollLinenum:2;//2.98 970306 行番号をスクロールしない
WORD fReservedSilent:12;
TYMALLOC* tymPlugatr; //2.97 970217 PLUGATR
SIGNED_WORD lpyLetterHeader; //2.96 970206 レターヘッダの高さ(0:不明)
TX* txParentDC; //2.96 970203 親DC
// テキストローカル変数
#ifdef TXVAR_DEFINED
TXVAR* tTxvar; //2.95 970129 textローカル変数
#else
LPVOID tTxvar;
#endif
BYTE reservednTxvar; //2.95 970129 現在のtextローカル変数の数
//2.94 970121 outline
TX* txOutline; //2.94 970121 head
CHOOSEOUTLINE* outlineContext; //2.94 970121
HWND hwndOutline;
WORD fDestorying:1; //2.94 970121 textを破棄中?
WORD fLastFocusOutline:1;//2.95 970129 最後にSETFOCUSされたので、hwndOutlineか?
WORD fOutline:1; //2.00E 現在アウトラインウィンドウ表示中?
WORD fOutlineHV:1; //2.99A 970321 浮動型アウトライン?
WORD fOutlineReserved:12;
WORD cxOutline; //2.00E5 プロファイルにウィンドウサイズの保存をするとき、この分減らす
BYTE fNoOutlineFlush; //2.00E4 このフラグが立っているときはアウトラインの自動更新しない
#define OUTLINEOP_OPEN 0 //2.99D 970330 開く
#define OUTLINEOP_CLOSE 1 //2.99D 970330 閉じる
// txSetEditmode option
WORD fTxsemHtmlInside:1;//2.97 970221 HTMLの<BODY>内のタグとして変換
WORD fTxsemHtmlTagConvert:1;//2.97 970221 HTMLのTAGを解釈して削除
WORD fTxsemNoUI:1; //2.97 970221 UIを出さない
WORD fTxsemNoChangeReturn:1;//2.97 970222 改行コードをいじらない
WORD fTxsemForceConvert:1; //2.97A 970303 必ずコンバートする。バックアップ/リストアはしない。
WORD fTxsemHtmlAtTemplate:1;//2.98 970305 テンプレート実行中(<WZ...>をタグとみなさない)
WORD fTxsemProofProcess:1;//2.98 970305 次回のWordToEditで校正を処理する?
WORD fTxsemToPlaintext:2; //2.99 970316 プレーンテキストへ変換
WORD fTxsemToFormtext:2; //2.99 970316 整形テキストへ変換
// fTxsemToPlaintextもTRUEにしてください。
WORD fTxsemBreakAble:2; //3.00B1 970612 {Esc}で中止可能?
WORD fTxsemBreaked:1; //3.00B1 970612 {Esc}で中止された?
WORD fTxsemReserved:2;
//
OLECONTEXT* pOleContext;//2.94 970118 OLEコンテキスト
DWORD FlushCuryResult; //2.93 内部ワーク
//2.93 undo
//2.90 text1以外もundo対応
BYTE uc; // UC
UNDOPACK_CONTEXT undopack[2];
TX* ttextUndo; //2.90 undoバッファ textUndo[0],textUndo[1]が有効
BYTE adrTextUndoTop; //2.90 undoバッファのヘッダ長
WORD fEnableUndo:1; //2.90 undoを行う?
WORD fTextUndoInited:1; //2.90 textUndo inited?
WORD fUndoing:1; //2.93 アンドゥとリドゥの区別
WORD fUndoExec:1; //2.93 undo()中かどうか
WORD fUndoView:1; //2.93 undoバッファのビューモード
WORD fGeneMoving:5; //2.93 世代移動中?
WORD fGeneInvalid:1; //2.94 970121 世代管理データを無効にした?
WORD fNoUndoAtr:2; //2.98 970306 charatr,paraatrの変更をundoに加えない?
WORD fUndoAlloced:1; //2.99E 970403 ttextUndoはallocされたもの?
WORD fUndoReserved:2;
BYTE fNoUndoAdd; //1.90 0以外ならundoAddされない
GENESTAT* genestat; //2.93
LPBYTE pGeneComment; //1.97 世代コメント(CCHWORD)
//2.99C 970324 高速オープン対応
//2.93 新2重化、多重化
HWND hwndtext2; // 多重化
TX* text2; // 2重化、ファイラーダブルウィンドウ
// fMultiChildなら、親textへのリンク
MT_CONTEXT mt_context[2];
WORD modeMulti:8;
#define MM_DUP 1
#define MM_MULTI 2
#define MM_FILER 3
#define MM_GENE 4
WORD fMultiChild:1; // 子供側のウィンドウである
WORD fFocus2:1; // hwndtext2がtextの現在位置を表示している?
WORD fLastFocus2:1; // 最後にSETFOCUSされたのがhwndtext2かどうか?
WORD freservedm:5;
HWND hwndLastFocus; //2.96A 970211 最後にSetFocusされたhwndtext
// text->fFrameウィンドウにのみ有効値がセットされる
//
SIGNED_WORD lfHeightIme;//3.00A3 970507 IMEにセットするフォント高さ WZ32 only
PARAATR_TEXT_CONTEXT* paraatrtextcontext; //3.00B1 970521 変更行の保持
BYTE reservedFO[2]; //3.00A 970430 txNext,txPrev廃止
// for 高速オープン
WORD keyPre; //2.90 2ストロークキーの1ストローク目
mchar* tszColorTitle[COLORTITLE_N]; //2.93 タイトル文字列正規化
BYTE tlchColorTitle[COLORTITLE_N]; //2.93
BBOOL fReTitle; //1.93 tsztitleに正規表現が含まれている?
WORD dlgcode; //2.92 TXWS_TEXTのWM_GETDLGCODE処理コード
// default:DLGC_WANTALLKEYS
BYTE nMldialog; //2.92 オープン中のモードレスダイアログ数(text1のみセットされる)
// paraform/eh
DWORD wtmProfile; //2.99 970314 for profile debug
SIGNED_WORD ehHwndPosLeft; //2.99 970315 ehHwndのオリジナル位置を保存
SIGNED_WORD ehHwndPosTop; //2.99 970315 ehHwndのオリジナル位置を保存
//2.98 970310 txOverlap廃止
TX* txparaatr2; //2.90 PARAATR2
WORD fParaforming:1; //2.92 paraform中の対象text?
WORD fParaformText:1; //2.92 paraform用のinline text?
WORD fEnableAutoParaform:1;//2.99 970314 自動インライン整形を行う?
WORD fEhHwndUndisp:2; //2.98 970310 ehHwndをUndisp中?
WORD fEhTextboxStart:1; //2.99 970315 テキストキャプチャーで起動した?
WORD fParaformReserved:10;
mchar* szStartParaform; //2.90 IMEの文字入力でparaformを開始する場合
// 入力された文字列(malloced)
TX* textParaform; //2.90 fParaforming: インラインtext
// fParaformText: 編集text
// インライン整形中は!=NULL、インライン整形中は=NULLになる。
WORD yTopParaform; //2.92 paraform表示マスクyTop
WORD yEndParaform; //2.92 yEnd
MAIL* mail; //2.90 MAIL構造体
HWND ehHwndBase; //2.90 ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
// NULLの場合もある
HWND ehHwnd; //2.90 他アプリ エディトボックス ウィンドウフック
//2.99E 970403 paraform op
#define PARAFORMOP_AUTOMODE_ON 1 //2.99E 970403 自動インライン整形ON
#define PARAFORMOP_AUTOMODE_OFF 2 //2.99E 970403 自動インライン整形OFF
#define PARAFORMOP_NOTIFY_CURSORMOVE 3 //2.99E 970403 カーソル移動通知(arg = VK)
// status
WORD fModeress:1;
WORD fReadMode:1; //2.95 970129 閲覧モード
WORD fDisenableForModal:1;//2.96A 970211 モーダルダイアログ用にdis enable中?
WORD fEnableWindow0:1; //2.96A 970211 fDisenableForModalする前の状態
WORD fEnableWindowing:1;//2.96A 970212 WM_ENABLEを無視する?
WORD fAllocedSzCmdLine:1;//2.96A 970213 szCmdLineはmallocされている?
WORD flpPreview:1; //2.96 970202 印刷プレビュー?|印刷実行中?
WORD fBinedit:1; //2.00E バイナリエディトモード
WORD fEnvDev:1; //2.00E 開発中?
WORD flpCalc:1; //2.00E6 印刷の計算実行
WORD flpPreviewWorking:1;//3.00B1 970512 Preview準備中(旧ReservedfNoImeControl)
// これやる前はymikomeさんのFMVでプレビューがとても遅かった
// 18sec->5secに早くなった。
WORD fNoFlushSelectNow:1;//2.90 txFlushSelectNowしない
WORD fHkSendMailed:1; //2.90 wzhookでSendMailした
WORD fWzc:1; //2.90 このWZはWZコントロール?
// text1のみセットされる。
WORD fDispFindGrep:1; //2.99C 970326 fDispFindEnableでgrep用の色分けをする?
WORD fFrame:1; //2.93 表テキスト?
// 裏テキスト、WZコントロールのtextの場合はFALSE
// status
WORD fTbsEdit:1; //3.00A 970430 タイトルバーに(変更)を表示しているか?
//3.00A 970430 fFrameClosed廃止
WORD fWordToEditing:1; //2.94 970118 WordToEdit中?
WORD fWzOleFiling:1; //2.94 970119 .WZをOLEにload/save中?
WORD fImeWasOn:1; //2.94 970121 IMEがONだった
WORD fRecruit:1; //2.00D
WORD fNoFlushBaseDisp:2;//2.98A 970311 txFlushBaseでtxDispAllしない
WORD fFlushBaseDisped:1;//2.98A 970311 fNoFlushBaseDisp中にtxDispAllがあった
WORD fReopenInternaling:1;//2.99 970315 txReopenInternal中?
WORD fTxAllocText:1; //2.99 970316 txAllocTextされたtext?
WORD fSaving:2; //2.99 970317 保存中?
WORD fUserOperating:2; //2.99 970317 ユーザ操作中?
WORD configDisuse:1; //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
WORD fClosedText1:1; //2.99H 970405 これはすでに閉じられたtext1?
// status
WORD fWzbodyExist:1; //2.97A 970227 <WZBODY>があった?
WORD fEditToWording:1; //2.98 970308 EditToWord中?
WORD fWztext20:1; //2.99D 970329 ファイルはWZ2.0のwztext?
WORD fWztext20Error:1; //2.99D 970329 WZ2.0のwztext読み込みで文書にサポートしてない機能が含まれていた?
WORD fScrollbarProp:1; //2.99D 970329 (未完成)プロポーショナルスクロールバーを使用? (copy from shcfg)
WORD fSearchSetFont:1; //2.99D 970330 検索ダイアログでSetFont中
WORD fNoUndoParaatr:2; //2.99J 970406 PARAATRのundoAddを実行しない?
WORD fDispSilentUndisp:1; //3.00A2 970506
WORD fDispLineEdit:1; //3.00B1 970521 変更行表示
// 表テキストのみtxOpenTextでsh->config.fDispLineEditがセットされる
// 裏テキストではFALSEがセットされる
WORD fNullTitle:1; //3.00B1 970523 タイトル文字列がなしかどうか?
WORD fUndispWmpaint:1; //3.00B1 970610 WM_PAINTで描画しない?
WORD fReplaceSetFont:1; //3.00B1 970613
WORD fReservedFt:3;
UNDISPCONTEXT tUndispContext[UNDISPCONTEXT_N];//1.97
// file kind
BYTE modeText; //2.95 970125 テキストのモード
#define TEXT_PLAIN 0 // プレーンテキスト
#define TEXT_TEXT 1 // 装飾・体裁付きテキスト文書
#define TEXT_MAIL 2 // メール文書
#define TEXT_WZ 3 // WZ文書
#define TEXT_HTML 4 // HTML文書
#define TEXT_C 5 // Cプログラム
#define TEXT_PASCAL 6 // pascalプログラム
#define TEXT_FORTRAN 7 // fortranプログラム
#define TEXT_SCRIPT 8 // スクリプトプログラム
#define TEXT_ASM 9 // アセンブラプログラム
#define TEXT_BASIC 10 // BASICプログラム
WORD fWztext:1; //1.95 ファイルはwztext?
WORD fWztextArc:1; //1.97 fWztextで、なおかつ圧縮されてる
WORD fWzconfig:1; //1.95 !fWztextの時に、埋め込み設定あり?
// テキストへの設定の書き出しは、設定変更時に行う。
// editmode != 0の時は、保存時に書き出す
WORD fForm:1; //1.96 書式文字列の処理を行うかどうか
// FALSEなら詳細モードに移ってもテキストは絶対変化せず、
// 高速/詳細モードで見出しフォントハンドルも生成されない。
// for Cプログラム etc
WORD fC:1; //2.00B Cプログラム?
WORD fOptTx:1; //2.00B "--Ttx" option ?
WORD fNoForm:1; //2.00C3 HTML生タグ印刷用
WORD fMail:1; //2.90 メール文書
WORD fParaatr2:1; //2.90 PARAATR2使用?
WORD fWztextOle:1; //2.97A 970303 OLE入りの.WZの可能性あり。
WORD fDirectoryAtr:2; //2.99 970313 DIRECTORYATR内のファイル?
// 0:NO,1-3:index+1
WORD fPlaintext:1; //3.00B1 970523 ベタテキスト編集モード?
WORD fReservedT:3;
BYTE fHTML; //1.90 HTMLテキスト?
// memory
LPBYTE pTxAtr; //1.97 txcharatr等のTEXT構造体をアロケートしたメモリ
LPBYTE pBitmapBuff; //1.97 改行マークなどのビットマップデータバッファ
LPBYTE pMemberMemory; //1.97 ポインタメンバのためにアロケートメモリ
// mark
IFILE mark[MAXMARK]; // マーク
#if 1//3.00A3 970508
mchar* tszlpstyle; //3.00A3 970508 印刷スタイル名 プロファイルに表示スタイル毎に覚えるようにした
#else
mchar* tszmark; //1.93 マーク地点の文字列([MAXMARK][CCHMARK])
#endif
BYTE fNoMarkCur; //2.95 970130 txMarkCurしない? (++,--)を使う
// binary handle
UINT cbRecord; //1.93 レコード長(for バイナリアクセス at txRead/txWrite)
UINT cbHeader; //1.93 ヘッダ長(for バイナリアクセス at txRead/txWrite)
// 0ならヘッダなし
//
int fReport; //1.93 論理行数の増減、文字挿入、削除をレポート?
// fHighが真の時は高速化のためレポートはされません。
WORD fInitTcyLine:1; //1.92 tcyLine初期化済み?
WORD fWindowOpening:1; //1.97 裏テキストウィンドウオープン中?
WORD fTXWS_TEXT:1; //1.97 TXWS_TEXTのtext?
WORD fKcAuto:1; //1.97 漢字コード自動変換する?
// text1は設定によりセットされます。
// それ以外のtextはtxOpenTextの前に明示的にセット
// してください。defaultはFALSEです。
WORD fEnableHwndtext:1; //1.99B text->hwndtext有効
// (text == text1 ? !text1->fNoWndText : text->hwndtext)
WORD fEnableHwndbase:1; //1.99B text->hwndbase有効
// (!text1->fNoWndBase)
WORD fNoPrinterFont:1; //1.99C EDITMODE_PRINT時にプリンタフォント作らない
WORD fNoLoadCurAtr:1; //1.99D LoadCurAtrしない
// charatrInsert等でdefaultのデータセットしない
WORD fSilent:1; //1.99D 1行が長すぎるなどの警告を出さない
WORD fBinary:1; //1.99D 全角文字を半角2文字として扱う
WORD fHtmlErr:2; //1.99E HTMLファイルのタグ解析でエラーが起きた
// 1:起きたばかり,2:状態を保持
WORD fNoFilename:1; //2.00B 一時的にファイル名の無い状態にする
WORD fCurWestern:1; //2.96 970208
// 現在のカーソル行が欧文フォントかどうか示す。
// txDispCursorでフラッシュされるので、いつも必ずしも
// 正しいとは限らない。
//2.99 970320 fWestern -> fCurWestern
// 以下、インデックスが[lcywindow + 5]までなら、
// インデックスチェックが配列のサイズを超えていないかチェックしなくていい
#define LINE_N 200 // 一画面中の最大表示行数
LINEINFO *tLineinfo; //1.99C 行情報[LINE_N]
int *tcxAlign; //1.92 アライン[LINE_N]
int *tcyLine; //1.92 行高さ[LINE_N]
int *tcySpace; //1.93 行間[LINE_N]
// LINEINT_2LINE/LINEINT_LINEENDなどで
// お尻に行間がある場合のその高さ
// charatr/paraatr
BBOOL editmode; //1.00F3
#define EDITMODE_TEXT 0
// とにかく高速!!
#define EDITMODE_FORM 1
// editor with charatr/paraatr
// 機能を犠牲にしても速く!
#define EDITMODE_PRINT 2
// WYSIWYG editor with charatr/paraatr
// 速度は遅くていいから印刷結果を見ながら編集
#define EDITMODE_NULL 99
// for undo
#define EDITMODE_WORD 1
// 内部用。EDITMODE_FORMまたはEDITMODE_PRINTの意味
CHARATR charatr; //1.90
// これから入力される文字の文字装飾
// 必ずしもカーソル位置の文字の文字装飾とは限らない
BYTE gapCharatr[CHARATR_GAP];
PARAATR paraatr; //1.90 カーソル行の段落書式
BYTE gapParaatr[PARAATR_GAP];
TX* txcharatr; //1.00F3 charatr
TX* txparaatr; //1.00F3 paraatr
BYTE fNoInsertCharatr; //1.90 0以外ならcharatrInsertしない
BYTE fNoInsertParaatr; //1.90 0以外ならparaatrInsertしない
BYTE fPlainParaatr; //1.93 paraatrInsert/Deleteでの特殊処理しない?
// page
PAGEATR* tpageatr; //1.91A ページアトリビュート
NPAGE npage; //1.91A (WYSIWYG)カーソル行のページ番号
// このページ番号は、紙一枚単位のページ番号ではなく、
// 段組一段単位のページ番号です。
int nlineByPage; //1.91A (WYSIWYG)カーソル行のページ先頭からの行数
int lpy; //1.91A (WYSIWYG)カーソル行のページ先頭からの高さ
// カーソル行の高さは含まない
// カーソル行の高さも含めると、カーソル行の高さが変わった時に大変。
BYTE fNoCountPage; //1.99C ページカウントをしない
// 検索、置換
REPLACECONTEXT* rc; //2.94 970121 置換コンテキスト
SEARCHMODE searchmode; //1.01A 現在の検索オプション
// font
FONTTX *tfonttx; //1.90 フォント指定
BBOOL lfEditProp; //1.00F プロポーショナルで編集中
// 半角フォントを指定している場合、
// 体裁、詳細モードの場合は必ず1になる
// error
BBOOL fTempError; //1.00F テンポラリファイルエラー?
int lasterror; // エラー発生時のエラーコード
#define TXERROR_SAVECANCELED 1 // 保存がキャンセルされた
// IME
#ifdef __FLAT__
#ifdef __IME_H
LPIMESTRUCT lpIme; //1.00H3 IMESTRUCT
#else
LPVOID lpIme;
#endif
#endif
// コモンダイアログ
#ifdef __COMMDLG_H // <commdlg.h>が#includeされている
OPENFILENAME FAR *ofn; // ofn
#else
LPBYTE ofn;
#endif
// 全インスタンスで共通
struct tagSHARE FAR *share; // 共有データ
// key
mchar key2; // 2ストロークキー入力用.1ストローク目のキーコード
BBOOL fKeyD; // VK_TAB etc work
// WZ内部ワーク(multi threadの為。single threadならstaticデータにしても良い)
BBOOL swapnear;
IBUFF sizeSwapin;
IBUFF sizeSwapout;
// edit status
TXPROPERTY txprop; //1.99B
WORD fMessageWindow:1; // printf/compile message etc 表示用インスタンス?
WORD fmessageloop:1; // メッセージループ中?
WORD fmessageprocessing:1;
// メッセージ処理中? 制御を持っている?
WORD fcompilesilent:1; // コンパイルをサイレントで実行
WORD fReadOnly:1; // 修正はできるがセーブできない。
WORD fNewFile:2; // 新規ファイル?(1か2なら真なので注意)
WORD fAutosaveMessage:2;//1.94
WORD fNotIdle:1; //1.99B メッセージループ前の初期化中(text1のみ)
WORD nMt:1; //2.93 廃止したが、参照しているマクロのために残す
// 必ず0が代入されている
WORD fIdleFirstDoing:1; //2.97B 970303 idleFirst中
WORD fDebug:4; //1.99C デバッグ用
BBOOL fTXE; // this is TXE?
BBOOL fGene; // 世代表示のために立ち上げたテキスト?
DWORD wtmLastOp; // 最後にコマンドが実行されたWindows時間
int nCmdShow; // 現在のtext->hwndbaseのShowWindowモード
mchar szexedir[CCHSPATHNAME];
// WZ.EXEの存在するパスが入っています。
// "a:\wz\"や"b:\"のように入っています。
// 次の様にして、WZ.EXEと同じディレクトリにあるファイルの
// フルパスを得ることができます
// text->szexedir + "myfile"
int nAutoSaveCmdNow; // 前回のオートセーブから現在までに実行された編集コマンド数
BBOOL fAutoSaving; // autosave中
BBOOL fdialogopen; // dialogOpen中
BBOOL fQuit; // ウィンドウを開かず、終了
//2.93 多重化実装変更に伴い、
// fSwMt,hwndMt,idMt,fMtDoing,fMtEdit,fMtCursorMove,
// fNoMt,fMtreserved,adrMtCur,lyMtCur
// は廃止。
WORD fTXH:1; // TXH閲覧用
WORD fSemiViewMode:1; // セミViewMode
WORD fHaveCaret:1; // キャレットを持っている?
WORD fHaveFocusLine:1; //1.00F2 フォーカスラインを持っている?
WORD fReplaceCanceled:1;//1.01A 直前のReplaceがキャンセルされた?
WORD fReservedSOT:1; //2.96 970201 fSearchOtherText廃止
WORD fOpenLockedFile:1; //2.00B 排他制御がかかっているファイルを開いた
WORD fDispEofed:1; //2.00B 最後に表示を行ったときにEOFを表示した?
WORD fENQ:1; //2.00C とりあえず
WORD ftxuiSaveNamed:1; //2.00E txuiSaveで名前を付けたときにONになり、txuiSaveを抜けるとOFFになる
WORD fReservedInfo:6;
// 以下、[変更可]
// テキストを破壊することは多分ないと思います
mchar pagingmode; // ページングモード('S','C','P',' ')
BBOOL fOverWrite; // 上書きモード?
BBOOL fEdit; // 編集された?
BBOOL fEditable; // 修正できる?
// txOpenTextでデフォルト値設定
// fEditViewModeならFALSE、そうでなければTRUE
DWORD nEdit; //1.00F2 編集が行われた回数をカウントしています
// editmode切り替え時はカウントしません
BYTE fNoCountNedit; //1.97 nEditをカウントアップしない?
//3.00B1 970521 fDispLineEditの処理もしません
WORD fNoWndBase:1; // text1->hwndbaseを表示しない(作成はされる)
// 表示はマクロ側でWS_OVERLAPPEDWINDOWを作成して行う
// text1->hwndtextも作成されるが表示はされない
// デフォルトのtxOpenTextを実行しない
// 裏テキストではhwndbaseは作成されず、
// text->hwndbase = text1->hwndbaseとなる
WORD fNoWndText:1; // text1->hwndtextを表示しない(作成はされる)
// 表示はマクロ側で行う
// text1->hwndbaseは表示される
// 裏テキストではhwndtextは作成されず、NULLになる
WORD fNoOpenText:1; // デフォルトのtxOpenTextを実行しない
WORD fNoProfile:1; // txOpenTextでプロファイルを参照しない
WORD fNoConfig:1; // txSetFileNameで設定データをロードしない
//参考:txInitTextで、"標準"の設定がロードされます
WORD fNoTextPathSearch:1;
// テキストファイルのパス検索をしない
WORD fMenuOpenMouse:1; // menuOpenで、マウスカーソル位置にメニューをオープン
WORD fTxbackInitTxForm:1;//2.98 970304 この裏テキストで<TX>や埋め込み設定の解釈をする?
WORD reservedff:8;
BBOOL fListbox; // リストボックスモード?
#define TXLB_SIZEATR 2 // 行アトリビュートバイト数(1.00C)
// リストボックスモード時の行アトリビュート1バイト目
#define TXLB_NORMAL ' ' // ノーマル
#define TXLB_SELECT '*' // 選択されたファイル
// リストボックスモード時の行アトリビュート2バイト目(1.00C)
// 色コードを指定する
// '1'-'5'を指定するとrgbComment-rgbPreprocessor色で表示
// それ以外はテキスト色で表示
//1.92 TXE動作指定用(wzmodeは廃止されました)
// デフォルト値は全て0です。
// __txenewで変更できます
WORD fTxeNoExec:1; // 起動せずにインスタンスを終了する
WORD fTxeStdKeyCustmize:1;
//2.94 970121 WZ Editorのキー定義を読み込んでカスタマイズする
// ことを指定
WORD fTxeOpenHigh:1; //2.94 970122 TXEだがこのプロセスで高速オープン可能
WORD fTxeSetFileName:1; // txSetFileName(text,text->szfilename)する
WORD fTxeNoWindowPos:1; //2.96A 970212 起動時のhwndbaseウィンドウ位置セット処理をしない
WORD reservedTxe:11;
//2.96A 970212 fTxeStdKey,fTxeStdMenu,fTxeStdToolbar廃止
// TXEでは、szKey,szMenu,szToolbarのキー,メニュー,ツールバーが読み込まれます
WORD fNoCaret:1; //2.00B キャレットを表示しない
WORD fNoFlushKey:1; //2.00E 設定ダイアログでキー定義をフラッシュしない
WORD fConfigstdTextdata:1;//2.00E2 設定が存在しないとき"標準"の代わりに"テキストデータファイル"の設定を読む
WORD fConfigsavePrim:1; //2.00E2 設定をプログラムで変更したので
// 設定の保存はグループ名は使わず基礎設定名で行う
WORD fKeywordNoSenseCase:1; //2.94 キーワードの大小文字区別をしない
WORD fResultTxeCloseMuiti:1;//2.94 970121 オープン結果:__txeclosemultiして終了した
WORD fSpeakOn:1; //2.94 970123 WZ音声化高速オープン対応 現在、音声ON ?
WORD fMouseJumpx:2; //3.00A 970427 txJumpXで文字の中心を基準とする
WORD reservedD:7;
NLINE npara; // text->curの論理行番号
// nparaは高速/詳細モードでは大変重要な役割
// (段落書式indexとなる)を果たすので、
// 必ず正確な値にしておかないといけない。
NLINE nline; // 表示-行番号(fLineDが真の時しか数えない)
// fLineDが偽の時は、不定
//2.93 fCountNlineが真なら、常に数える
BYTE fCountNline; //2.93 !fLineDでもnlineのカウントをする
BYTE fCountNpara; //2.96A 970213 fHighでeditmode=0でもnparaのカウントをする
// カウントがされないときもあります。
int lcxmask; // 左からlcxmask文字は表示しない
// lcxmaskに満たない行は、マスクしない
TX* txKeyword; //2.94 キーワードテキスト 旧hkeywordは廃止
// ステータスバー
BBOOL fDispInfoEditor; // HSL_INFOにEditorの現在状態を表示?
signed char fDispSL1; // クライアント描画エリア1
// 0なら無し、1以上なら幅、-幅ならセンタリング表示
signed char fDispSL2; // クライアント描画エリア2
signed char fDispSL3; // クライアント描画エリア3
mchar *szprekey;
// ステータスバーハンドル
#define HSL_INFO 1
#define HSL_1 2
#define HSL_2 3
#define HSL_3 4
#define HSL_LOCATE 5
#define HSL_EDIT 6
#define HSL_PAGE 7
#define HSL_BLOCK 8
#define HSL_OVERWRITE 9
#define HSL_CHARATR 10 //1.99E
#define HSL_PARAATR 11 //1.99E
#define HSL_EDITMODE 12 //1.99F
#define HSL_PREKEY 13
#define HSL_RSPACE 14
#define HSL_INLINEFORM 15 //2.91
#define HSL_N 16 // ハンドルの個数(NULLの分も含む)
#define HSL_INFOBASE 100 //1.00F HSL_INFOが空白の時に
// 表示する文字列をセットするのに使う
#define HSL_SIMPLE 255 // シンプルモードのときに表示されるHSLペーン番号
// 表示
BBOOL fDispControlSpace; // 制御コードを半角空白で表示(折り返しは未対応)
BYTE dispstylemode; // 現在の書式モード(0,1,2)
#define DISPSTYLEMODE_N 4 //2.98A 970311 3->4に拡大
int lfHeight; // 0以外なら一時的にFONTTX_TEXTのポイント数を設定
// 編集
BBOOL fViewMode; // view mode(TRUEなら、fEditableはFALSEになる)
// 今現在このモードかどうかfEditViewModeで見てください。
// このフラグでは不明です。
// インターフェース
mchar szKey[CCHNAME]; // キー(configに含まれないことに注意)
//#ポインタによるconfig
FONTSTYLE* tFontstyle; // スタイル(ファイル毎)
//#config
//2.99B 970322 configを増やしたらtxInitTxwsTextで初期値を設定すること!
BYTE configTop; // configの先頭であることを表す
// 以下、HSTRBLKなど、ポインタを置いてはいけない!
//一時的な設定
//書式モード別に設定できる項目の、今現在の設定内容など。
int width; // テキストの横幅
int height; // 1ページの行数
int modeWs; // ウィンドウサイズモード
int lcxWindowDefault; // ウィンドウの幅
int lcyWindowDefault; // 高さ
int cySpace; //1.99A 行間
BBOOL fVertical; // 縦書き?
BBOOL fPageTurn; // ページめくりモード?
BBOOL fLineD; // 表示行モード(1)/論理行モード(0)
BYTE nSpaceTop; // 上端を空けるドット数
BYTE cxSpace; //2.00E 字間
BYTE nClm; //2.93 段数
BBOOL lfProp; // プロポーショナルフォントで表示&編集
BBOOL lfWestern; //2.96 970208 欧文表示を行うかどうか
// 0:行わない
// 1:行う(欧文がメイン)
// 2:行う(日本語がメイン)
BBOOL fSetWidthByLp; //2.99A 970321 体裁モードで折り返し幅を印刷スタイルに合わせる?
BYTE reservedTemp[27];
BYTE configFileTop;
// テキストファイル埋め込み設定
// configExtEndまでは、.wzにバイナリで埋め込まれるので、
// __BINCOMPATIBLE__とする
// 書式
// 表示書式
SIGNED_WORD twidth[DISPSTYLEMODE_N];//1.99C テキストの横幅
SIGNED_WORD theight[DISPSTYLEMODE_N];//1.99C 1ページの行数
SIGNED_WORD tcyint[DISPSTYLEMODE_N];//1.99C 行間
BBOOL tfPageTurn[DISPSTYLEMODE_N]; //1.99C ページめくりモード
BBOOL tfVertical[DISPSTYLEMODE_N]; //1.99D 縦書き
// タブ
SIGNED_WORD tabsize; // タブカラム数
// 印刷書式
mchar szlpstyle[CCHLPSTYLE];// 印刷スタイル名
BBOOL ReservedlflpProp; //2.99 970320 廃止(プロポーショナルフォントで印刷)
// 画面
// フォントオプション
BBOOL tlfProp[DISPSTYLEMODE_N]; //2.99 970320 画面表示スタイルにプロポーショナル追加
BBOOL tlfWestern[DISPSTYLEMODE_N]; //2.99 970320 画面表示スタイルに欧文追加
BBOOL fWordlap; // 英字禁則
// 書式文字列
// 見出し1-3文字列
mchar tsztitle[SZTITLE_N][CCHTITLE];// タイトル文字列
// 書式文字列
// 印刷スタイルに入れたほうが良い様な向きもあるが、テキストに固有な属性と考える。
// たとえば、Cソースプログラムとテキストファイルとでは、書式文字列は全く異なった
// ものになり、これを印刷スタイルに入れると共有できなくなってしまう。
mchar tszformat[FORMAT_N][CCHFORMAT]; // 書式文字列
// 拡張用の余裕
BYTE ReservedDateGarbage; //2.97 970216 廃止
WORD fAfArticleDisc:1; //2.98 970309 「・」で箇条書きを指定
WORD fAfTitle:1; //2.98 970309 「.」で見出しを指定
WORD fAfReserved:14; //2.98 970309 オートフォーマットリザーブ
CHARCONVERT charconvert; //2.00C オートコレクト
SIGNED_WORD tcxint[DISPSTYLEMODE_N];//2.00E 字間
BYTE tnClm[DISPSTYLEMODE_N];//2.93 段組表示
BYTE reservedFile[16];
BYTE configFileEnd; // テキストファイル埋め込み設定end
BYTE configExtTop; // 拡張子毎、拡張子のないファイル毎,.wzファイル毎の設定
// 書式
// 表示書式
BBOOL fSetWidthByWindow; // ウィンドウの幅に合わせて、表示カラム数を自動設定する
BBOOL tmodeWidth[DISPSTYLEMODE_N];
//2.99A 970321 tfSetWidthByWindow意味変更してtmodeWidthに名称変更
//2.99B 970322 modeWidthの定義値変更(WZ2.0と上位互換にした)
#define MODEWIDTH_DESIGNATE 0// 文字数と行数を指定する
// テキスト,体裁:指定文字数 , 詳細:印刷幅
#define MODEWIDTH_AUTO 1 // 標準
// テキスト,体裁:fSetWidthByWindow , 詳細:印刷幅
#define MODEWIDTH_LPRINT 2 // 印刷スタイル文字数を使う。
// テキスト,体裁,詳細:印刷幅
BYTE nlineHeader; // ページ数計算に入れないヘッダ行数
BBOOL fDispLine; // 行番号表示
BBOOL fDispUnder; // アンダーライン表示
BBOOL fDispRightMargin; // 右マージンの表示
BBOOL fMyFont; //1.99E FALSE:標準の設定を使う
// タブ
BBOOL fTabToSpace; // [TAB]でスペースコードを入力
// オートインデント
BBOOL modeAutoIndent; //1.96 オートインデント
#define AUTOINDENT_NONE 0 // しない
#define AUTOINDENT_EXEC 1 // する
#define AUTOINDENT_JSPACE 2 // 全角スペースもする
// 禁則
BBOOL fJkinsoku; // 禁則
//2.93 禁則を改良
#define KINSOKU_OUT_HANG 1 // 追い出し、句読点ぶら下げ
#define KINSOKU_OUT 2 // 追い出し、句読点追い出し
#define KINSOKU_IN_HANG 3 // 追い込み、句読点も追い込み
// 行番号モード
BBOOL fConfigLineD; // 表示行モード(1)/論理行モード(0)
// 書式モード
BYTE editmodeOpen; // オープン時のeditmode
BYTE dispstylemodeOpen; // オープン時のdispstylemode
BBOOL fConfigOutline; // アウトライン付き?
//2.00E fOutlineから名称変更。現在未使用
BYTE reservedJ;
// 画面
// フォント
BBOOL lfBold; // ボールド
BBOOL lfBackslash; //2.99 970320 バックスラッシュの表示
// 0:標準
// 1:英語フォントは'\'で表示
// 色分け
// 色
BBOOL fMyColor; //1.99E FALSE:標準の設定を使う
COLORREF rgbText; // 通常のテキスト (0)
COLORREF rgbBack; // 背景
COLORREF rgbBlockText; // ブロック内の文字色
COLORREF rgbBlock; // ブロック
COLORREF rgbNline; // 行番号
COLORREF rgbUnderline; // アンダーライン
COLORREF rgbControl; // 制御文字の色
COLORREF rgbURL; // URLの色 //2.99C 970326 fMyColor内に移動
BYTE MyColorEnd; //1.99E ここまで
// 制御文字
BBOOL fDispTab; // TABの表示
BBOOL fDispJspace; // 全角スペースの表示
BBOOL fDispLf; // CR の表示
BBOOL fDispEof; // EOFの表示
// キーワード
BBOOL fDispKeyword; // 色分け
//2.94 Bold:0x01,Under:0x02,Color:0x04 bit
#define COLORING_NONE 0
#define COLORING_BOLD 1
#define COLORING_UNDER 2
#define COLORING_BOLDUNDER 3
#define COLORING_COLOR 4
#define COLORING_COLOR_BOLD 5
#define COLORING_COLOR_UNDER 6
#define COLORING_COLOR_BOLDUNDER 7
BBOOL reservedfDispKeyword; //2.95 970127 fDispKeywordBold廃止
mchar szkeywordfile[CCHNAME];// キーワードファイル名
COLORREF rgbKeyword; // キーワードの色
// 見出し
BBOOL fDispTitle; // 色分け
BBOOL fDispFindAtSearch; //2.99C 970323 検索時に検索文字列の色分けを行う?
//2.99C 970323 旧fDispFindEnable
//2.95 970131 検索文字列の色分けを実行?
//2.95 970127 fDispTitleBold廃止
COLORREF rgbTitle; // タイトルの色
// 字句
// ()内はリストボックスモード時の色分け
BBOOL fDispParse; // 字句の表示
COLORREF rgbString; // 文字列 (2)
COLORREF rgbConst; // 定数 (3)
COLORREF rgbComment; // コメント (1)
COLORREF rgbPreprocessor; // プリプロセッサ (5)
COLORREF rgbErrorChar; // エラー文字 (4)
// カーソル
// カーソルモード
BBOOL modeFreeCursor; // フリーカーソル OFF(0),ON(1),VZ(2)
// インターフェース
// IME
SIGNED_WORD modeImeSetFocus; // オープン時(1.00B以前はSETFOCUS時)のIME制御
#define ISF_NONE 0
#define ISF_OFF 1
#define ISF_ON 2
#define ISF_ONKANA 3
mchar szToolbar[CCHNAME]; // ツールバーの名前(ビットマップキャッシュファイルのファイル名にも用いる)
mchar szMenu[CCHNAME]; // メニューバー
mchar szMenuMouseR[CCHNAME];// マウス右クリックメニュー
mchar szMenuMouseRClip[CCHNAME];
// 選択時のマウス右クリックメニュー
// 編集
// 保存時の変換
BYTE modeConvertSpaceAtSave; // 保存時にタブをスペースに変換
// 0:変換しない
// 1:tab->spc
// 2:spc->tab
BYTE modeConvertKanaAtSave; //1.99E 保存時のカタカナの変換
// 0:変換しない
// 1:半角->全角
// 2:全角->半角
BBOOL fDeleteTailSpaceAtSave; // 保存時に行末の空白を除去
// 詳細
BBOOL fAppendEof; // EOF コードの付加
// 0:そのまま
// 1:付加する
// 2:EOFを取り除く //2.00Eで追加
BBOOL fddeServer; // DDEのサーバとして登録
// 検索
SEARCHMODE searchmodeInit; // 検索オプション
// ウィンドウ
// サイズ
SIGNED_WORD tmodeWs[DISPSTYLEMODE_N];//1.99C サイズモード
#define WS_DESTEXT 0 // 中身を指定
#define WS_MAX 1 // 最大化
#define WS_PAGE 2 //1.90 ページサイズで指定
#define WS_DEFAULT 3 // default
#define WS_DESIGNATE 4 // 外身で指定
//1.90 2 -> 4に定義を変更
#define WS_NONE 98 //1.90 何もしない
#define WS_NOW 99 //1.01A 現在のウィンドウサイズを保持
//画面分割等されているときは、分割前のサイズに戻す
SIGNED_WORD tlcxWindowDefault[DISPSTYLEMODE_N];//1.99C ウィンドウの幅
SIGNED_WORD tlcyWindowDefault[DISPSTYLEMODE_N];//1.99C 高さ
// スクロールバー
BBOOL fScrollBarH; // 横スクロールバー
#define SCROLLBAR_OFF 0
#define SCROLLBAR_ON 1
#define SCROLLBAR_AUTO 2 //2.99D 970329 2:自動を追加
BBOOL fScrollBarV; // 縦スクロールバー
// バーの表示
BBOOL fDispToolbar; // ツールバー表示 実効値はtxGetDispToolbar()
BBOOL fDispRuler; // ルーラー表示 実効値はtxGetDispRuler()
BBOOL fDispFunctionKey; // ファンクションキーの表示 実効値はtxGetDispFuntionkey()
BBOOL fDispStatusbar; // ステータスバーを表示 実効値はtxGetDispStatusbar()
// ルーラー
BYTE nGageRuler; // ゲージ単位(10 か 8)
// ヘルプ
// 外部ヘルプ
#define HELP_N 2
mchar tszhelp[HELP_N][CCHWORD];
// 編集
BBOOL fConfigBinedit; //2.00E バイナリエディト
BBOOL fConfigInlineform; //2.90 インライン整形モード
BYTE widthInlineform; //2.90 インライン整形標準折り返し幅
BYTE indentsize; //2.91 インデント増減単位文字数
// 検索
BYTE modeTagJump; //2.92 タグジャンプオプション
#define TAGJUMP_STD 0 // 標準
#define TAGJUMP_VZ 1 // VZのタグジャンプも認識
// 編集
//2.93 世代管理を行うかどうかを拡張子ごとに設定できるようにした
BBOOL fSaveUndoBuff; // アンドゥバッファをファイルに保存する
BBOOL fDispTag; //2.97 970221 体裁/詳細モードでタグを表示する?
//2.93 色分けの改良
BBOOL fDispFind; // 最後に検索した文字列を色分け?
COLORREF rgbFind; // その色
mchar szKeyword[30]; // 即席キーワード指定
BYTE filekind; //2.95 970128 ファイルの種類
// TEXT_PLAIN:標準
// TEXT_WZ,TEXT_HTML,TEXT_C,
// TEXT_PASCAL,TEXT_FORTRAN
// TEXT_SCRIPT
// の、いずれか。
BYTE fDispFull; //2.95 970128
// タイトルバーとメニューバーを画面外へ移動して画面を広くする
BBOOL fHeadFontAuto; //2.96 970208 見出しフォントの自動設定?
BYTE modeDispProof; //2.98 970305 校正の表示方法
#define DISPPROOF_TARGET 0
#define DISPPROOF_PROOF 1
#define DISPPROOF_TARGET_PROOF 2
#define DISPPROOF_DETAIL 3
WORD fInlineformScenario:1; //2.98 970309 インライン整形シナリオモード?
WORD fInlineformIndentSpace:1;//2.99 970319 インライン整形 行頭空白入力でインデント開始?
WORD modeInlineformZenhanSpace:2;//3.00A2 970507 インライン整形 全角と半角の間に空白空ける/詰める
// 0:なにもしない
// 1:空白を空ける
// 2:空白を詰める
WORD modeInlineformWordlap:2; //3.00A2 970507 インライン整形 英字禁則
// 0:文書の設定|英字禁則に従う
// 1:英字禁則しない
// 2:英字禁則する
WORD lcxInlineformIndentTogaki:5;//3.00A2 970507 ト書きのインデント数(0..31) (0..15)では足りない
// 0:デフォルト値(6)
WORD lcxInlineformIndentSerifu:5;//3.00A2 970507 せりふの2行目のインデント数(0.31)
// 0:デフォルト値(2)
BBOOL fDispTitlebar; //2.98 970310 タイトルバーを表示?
BBOOL fColoringURL; //2.99 970313 URLを色分け?
// 拡張用の余裕
COLORREF rgbHottext; //2.99G 970405 ホットテキストの色
BYTE reservedExt[16];
BYTE configExtEnd; // 拡張子毎、拡張子のないファイル毎の設定
BYTE configBaseTop; // 共通の設定
// バイナリ出力されるので、
// __BINCOMPATIBLE__とする
// スクロール
// 加速
BYTE nKeyScrollAccStart; // 加速開始行数
BYTE nKeyScrollAcc; // 加速中の一度にスクロールする行数
// 横スクロール
BYTE nCursorScrollH; // 左右のスクロールを何文字毎に行うか
// 自動スクロール
SIGNED_WORD iScrollSpeed; // スムーススクロール速度 (0..4)
BBOOL fScrollSpeedDouble; // 倍速
BBOOL fVzEs; // txJumpScreenTop,txJumpScreenEnd 2回でスムーススクロール
// 詳細
BBOOL fCursorMoveBySB; // スクロールバーでカーソル移動?
BBOOL fHalfPage; // 全(0)/半(1)画面ページング
// カーソル
// 形状
SIGNED_WORD nCursorFaceInsert; // カーソル形状 (挿入) (0..4)
SIGNED_WORD nCursorFaceWrite; // カーソル形状 (上書) (0..4)
#define CURSORFACE_WINDOWS 0 // Windows標準
#define CURSORFACE_FULL 1 // フル
#define CURSORFACE_HALF 2 // 縦半分
#define CURSORFACE_HALFHALF 3 // 縦1/4
#define CURSORFACE_UNDERBAR 4 // アンダーバー
// 詳細
BBOOL fJumpCursorCenter; // ジャンプ後カーソルを画面の中央へ
BBOOL fCursorNoLf; // カーソル横移動で行をまたがらない
BBOOL fJumpTxPasteEnd; // ブロックペースト後カーソル位置更新
BBOOL reservedfCursorNoBlink;//2.98 970304 廃止
BYTE fFlushNpageSometime; //1.99H 詳細モードのとき時々ページ番号をフラッシュする
// 0:フラッシュしない、1:既定値
// 2..255:sec
// インターフェース
// マウス
BBOOL fSetLocateByMouseFocus;//マウスでSETFOCUSされたときにカーソル位置を移動
BBOOL fMouseArrow; // 1:arrow,0:Ibeam
SIGNED_WORD iMouseScrollSpeed; // マウスドラッグスクロール速度 (0..4)
// IME
BBOOL fImeOffKillFocus; // フォーカスを失ったときにIMEをオフ?
BBOOL fImeCursor; // カーソル位置で漢字変換
// 範囲選択の方式
SIGNED_WORD modeMouseClip; // 0:CUA,1:WZ,2:VZ
SIGNED_WORD modeKeyClip; // 0:CUA,1:WZ,2:VZ
// SHIFT+矢印での選択モード
#define MC_CUA 0 //
#define MC_WZ 1 //
#define MC_VZ 2 //
// 警告
BBOOL fbeep; // beep音を出す?
BBOOL fWarnTextStackFull; // テキストスタックfull時の警告
// VZ
BBOOL fUseMenuKey; // @<英字キー>,@[特殊キー] 入力可
BBOOL fVzTextBoxHist; // テキストボックスヒストリ
// VZと同じ感覚で方向キーを使って頭文字列検索できる
// ヒストリつきのテキストボックスのコンボボックス表示はしない
// コンボボックスだと、方向キーを奪い取るのができない?
// ファイル
// ヒストリ
SIGNED_WORD nDispFileHist; // 最大数(0..70)
BYTE modeDispFileHist; // ヒストリ表示モード(0:フルパス,1:ファイル名優先)
// ワイルドカード
mchar szFilter[CCHWORD]; // GetOpenFileName szFilter
// 例:"*.c;*.h,*.txt"
// オープン時の確認
BBOOL fConfirmNewFile; // 新規ファイルの確認
BBOOL fConfirmForeignFile; // UNIX/MACファイルの確認
// オープンダイアログ
BBOOL modeOfn; // ファイルオープンダイアログのモード
// 0:旧型 1:Windows95型
// 編集
// オートセーブ
BBOOL fAutoSave; // オートセーブを行う?
WORD autosaveDevice:2;
#define AUTOSAVE_ALLDEVICE 0
#define AUTOSAVE_NOTFD 1
WORD autosaveMode:2;
#define AUTOSAVE_OVERWRITE 0
#define AUTOSAVE_BACKUP 1
WORD autosaveAtQuit:2;
#define AUTOSAVE_QUIT_NONE 0
#define AUTOSAVE_QUIT_DELETE 1
#define AUTOSAVE_QUIT_BACKUP 2
WORD autosaveAtOpen:2;
#define AUTOSAVE_OPEN_MESSAGE 0
#define AUTOSAVE_OPEN_ATTENTION 1
#define AUTOSAVE_OPEN_BACKUP 2
WORD autosaveReserved:7;
WORD fInlineformQueryQuit:1;//3.00A2 970507 インライン整形 {Esc}で抜ける時確認?
WORD nAutoSaveCmd; // 編集コマンド数
WORD secAutoSaveWait; // 待ち時間
// バックアップ
BBOOL fBackup; // バックアップファイルの作成
mchar szBackup[CCHWORD];
// バックアップ作成ディレクトリ
// アンドゥ・世代管理
BBOOL fUnlimitUndoBuff; // アンドゥバッファサイズを制限しない
WORD kbUndoBuffMax; // アンドゥバッファの最大サイズ(KB)
BBOOL fUndoContinue; // 連続アンドゥ
// カーソルを移動しないで行った
// 挿入・削除・BSを一回の操作で一括アンドゥ
#if 1//2.93
BYTE reservedBaseEdit;
#else
BBOOL fSaveUndoBuff; // アンドゥバッファをファイルに保存する
#endif
// 詳細
BBOOL fSaveEditContext; // カーソル位置・マークをセーブ
BBOOL fTempMem; // テンポラリをメモリに作成
// 今現在このモードかどうかは、このフラグでは不明
BBOOL fMtFlushImmediately; // 多重化:直ちに全ウィンドウに修正内容を反映
//2.93 廃止:reserved
// 検索
BYTE modeSearchDialog; // 検索ダイアログモード
BBOOL fVwxwExRexp; // VWXWの拡張正規表現を使用
BBOOL fDispSearch; // 見つけた文字列を選択
BBOOL fNoReplaceSelSearch; // 選択文字列は置き換えない
BBOOL fSearchTitle; // VZ - タイトルサーチモード有効
BBOOL fMiTakeSearchText; // MIFES - [^\][^^]での検索文字列取得有効?
// マクロ
// イベントマクロ
mchar szmacroopen[30]; // オープン直後
mchar szmacrosave[30]; // セーブ直前
mchar szmacrosavepost[30]; // セーブ成功直後
mchar szmacroclose[30]; // クローズ直前
mchar szmacroview[30]; // ビューモードのオープン直後
// ウィンドウ
// サイズ
BYTE nSpaceTopH; // 上端を空けるドット数
BBOOL fSpaceLeft; // 左端を空ける
BBOOL fWsWideAtSplit; // 分割表示を広く
// 位置
BBOOL fWsInsideDesk; // オープン時、はみでない
BBOOL fSaveWindowPos; // ウィンドウ位置をセーブ
// タイトルバー
BBOOL fDispPathLc; // ファイル名の小文字表示
BBOOL fDispPathFull; // ファイル名のフルパス表示
// ファンクションバー
SIGNED_WORD nFunctionKey; // ファンクションキーの数
// ステータスバー
BBOOL fDispPrekey; // 2ストロークプレフィックスキー
BBOOL fDispPrekeyLeft; // 2ストロークプレフィックスキー左側に表示
BBOOL fDispLocate; // カーソル位置
BBOOL fDispSelecting; // 選択中?
BBOOL fDispEdit; // "変更"表示?
BBOOL fDispPagingMode; // ページングモード
BBOOL fDispSL_RSPACE; // 右端に空白を表示
BBOOL fDispOverwrite; // 挿入/上書き
BBOOL fDispParaCharatr; //1.97 段落書式/文字装飾
BBOOL fDispEditmode; //1.99F editmode
BYTE nSpaceTopV; // 縦書き時、右端と左端を空けるドット数
// 拡張用の余裕
// マウス
BBOOL fMouseNoHide; //2.00B マウス:マウスカーソルを消さない
//3.00A2 970505
#define MOUSEHIDE_CHAR 0 // 文字入力で消す
#define MOUSEHIDE_NONE 1 // 消さない
#define MOUSEHIDE_KEY 2 // キー入力で消す
BBOOL fMouseNoClipDD; //2.00B マウス:ドラッグアンドドロップしない
// カーソル
BBOOL fTxkeyVertical; //2.00E 縦書き時にtxkeyUp,Down,Left,Rightの縦横を入替
// 編集
BYTE modeClipboard; //2.00E クリップボードのモード
#define CLIPBOARD_WIN_TS 0 // Windowsクリップボードとテキストスタック併用
#define CLIPBOARD_WIN 1 // Windowsクリップボードのみ使用
#define CLIPBOARD_TS 2 // テキストスタックのみ使用
BBOOL fClipboardWinBased; //2.00E クリップボードの動作をWindows準拠にする
//2.95 970125 コピーや貼り付け時の動作を詳細に指定できるようにした
#define CLIPMODE_WZ 0 // WZ標準
#define CLIPMODE_WIN 1 // Windows準拠
#define CLIPMODE_WINWZ 2 // WZ拡張
// 音声化
BBOOL fSpeak; //2.00E 音声化
// インターフェース
BYTE modeEditor; //2.90
#define ME_WIN 0
#define ME_VZ 1
#define ME_MI 2
BBOOL fDispInlineform; //2.91 インライン整形モード
// 編集
BBOOL fClipboardNoSelect; //2.98 970307 選択されてないときもコピー、カットする?
BBOOL fConfigDispSilent; //2.99 970314 ちらつかない表示
// 従来の安定した表示ルーチンも選択できる様オプション化
//2.99E 970403 内部状態と分離、「状況に応じてON」を追加
#define DISPSILENT_OFF 0
#define DISPSILENT_ON 1
#define DISPSILENT_CONDITION 2
BYTE reservedBase[52];
BYTE configBaseEnd; // 共通の設定
BYTE configEnd; // configの末尾であることを示す
};
//2.93 hwndbase context
typedef struct { // statusbar pane
BYTE fCenter:1;
BYTE fFrame:1;//1.00G
BYTE lx;
BYTE lcx;
LPBYTE sztext;
BYTE cbtextbuff;
} SB_PANE;
typedef struct {
BYTE ipane; //1.00F
} SLITEM;
typedef struct {
HWND hwndtext;
HWND hwndRuler; // ルーラー
int ruler_x0; // 初期値:-1
int ruler_xbase; //
HWND hwndFunctionbar; // PFキーバー
int fkey; // 現在表示中のファンクションキー
int iFkey; // 初期値:-1
int iFkey0; // 初期値:-1
HWND hwndToolbar; // WZオリジナルツールバー
HWND hwndcomToolbar; // コモンコントロールツールバー
HWND hwndStatusbar; // ステータスバー
mchar sb_szinfo[CCHWORD]; // 再描画用にtxDispInfoされた内容を保持
SB_PANE sb_tpane[HSL_N]; // ペイン
SLITEM sb_tsl[HSL_N]; //
int sb_npane;
BBOOL sb_fSimple; // シンプルモード?
SB_PANE sb_paneSimple; // シンプルペイン
HWND hwndPartition; // パーティションバー
HWND hwndtextA; // パーティションの上/左側
HWND hwndtextB; // パーティションの下/右側
#if 0//3.00A 970502 廃止
RECT rectOriginal; //2.94 for wndtxGetOriginalRect
SIZE sizeOriginal; //2.94 for wndtxGetOriginalSize
#endif
} TXBASE_CONTEXT;
// ソート引数
// EOF行を含むソートはできません。
typedef struct {
UINT sizeStruct; // sizeof(SORTARG) for version check
NPARA lineTop; // ソート開始論理行(origin:1)
NPARA lineEnd; // ソート終了論理行(origin:1)
// txSortではHIGHモードを使います
// HIGHモードでは行番号の計算がなされないので、
// lineEndがEOF行以上の場合、異常動作します。
// 注意してください
IBUFF lchLine; // 行長が固定の場合:1行のバイト数(改行コードの分も含む)
// 最大CCHLINE-1まで
// 2.96A 970212 可変の場合:0 をサポート
// ただし、0にするとかなりソート速度が落ちます。
BOOL fCsv; // CSV形式のソート(未完成)
IBUFF lchItem; // 比較項目の最大長(CCHLINE)
//2.96A 970212 0なら行末まで比較 をサポート
IBUFF iItem; // 比較項目位置:行先頭からのオフセット
// fCsv:行先頭項目を0とした、比較項目NO.
BOOL fBack; // 逆順ソート?
PMACROFUNC *pfuncCmpKey;
//1.00F ソート時のキーの比較を行うコールバック関数
// NULLならデフォルト(strncmp)を使います
LPARAM lCust; //1.00F コールバック関数に渡す任意の32bit値を指定します
WORD fNoSenseCase:1;//2.00E4 半角英大小文字を区別しない
WORD fReserved:15;
BYTE reserved[10]; //1.92
} SORTARG; //1.92 sortarg->SORTARGに改名
//1.00H2
typedef struct {
mchar* szappname;
mchar* szversion;
mchar* szcopyright;
mchar* szcopyright2;
mchar* szlicense;
mchar* szicon;
BYTE reserved[28]; // 余裕
} ABOUTINFO;
//2.96 970204
#define lpGetClm(lp) (lp->fUseTextLxLyClm ? lp->text->nClm : lp->nClm)
//2.96 970202
// 段組一段単位のページ番号を、
// 紙一枚単位のページ番号に変換する。
#define txNpageFromNpageclm(text,npageclm) (lpGetClm(text->lp) ? (((npageclm - 1) / lpGetClm(text->lp)) + 1) : npageclm)
//2.96 970209
#define keySetShift(d) (text->fKeyVkShift = d)
//2.96 970209
#define txGetUsePrintFontstyle(text) (text->lfWestern ? FALSE : text->lp->fUsePrintFontstyle)
//1.99J
// ページめくりモード?
#define txGetPageTurn(text) (text->fPageTurn && text->editmode != 2)
//2.93 段組数
#define txGetMultiClm(text) (text->editmode == 2 ? FALSE : (text->nClm >= 2))
//1.99K
// 現在ビューモードか?
#define txGetViewmode(text) (text->fSemiViewMode || text->fEditViewMode)
//2.99 970320 文字装飾、段落体裁使用可能か?
//2.99D 970331 インライン整形の場合はFALSEにするようにした for インライン整形でtabがおかしかった
#define txIsWP(text) (text->editmode && text->fForm && !text->textParaform)
//2.99 970320 旧wzkeyXXX APIサポート #define
#define wzkeyFromSzkey(szkey) txWzkeyFromSzkey(text,szkey)
#define wzkeyToSzkey(wzkey,szkey) txWzkeyToSzkey(text,wzkey,szkey)
#define wzkeySearch(wzkey0,wzcmd) txKeySearch(text,wzkey0,wzcmd)
#define wzkeySetWzcmd(wzkey,wzcmd) txKeySetWzcmd(text,wzkey,wzcmd)
#define wzkeyGetWzcmd(wzkey) txKeyGetWzcmd(text,wzkey)
#define wzkeyRegister(szkey,szcmd) txKeyRegister(text,szkey,szcmd)
#define wzkeyIsEdited() txKeyIsEdited(text)
#define wzkeyLoad() txKeyLoad(text)
#define toolbarFlush(text) txFlushToolbar(text)
// マクロAPI定義
#define txCopyConfig(textdst,textsrc) \
{\
memcpy(&((textdst)->configTop),&((textsrc)->configTop),&text->configEnd - &text->configTop);\
}
//2.99D 970328 new
#define txCopyConfigFont(textdst,textsrc) \
{\
memcpy((textdst)->tFontstyle,(textsrc)->tFontstyle,SIZE_TFONTSTYLE);\
(textdst)->lfProp = (textsrc)->lfProp;\
(textdst)->lfWestern = (textsrc)->lfWestern;\
}
#if 0
●TX-API 定義
引数が1つ"text"だけのAPIは、キーボードマクロからも使えます。
TX-MACROでは、"tx"プレフィックスと、第一引数(text)はセットで省略可能です。
また、関数名は大小文字を区別しないので(構造体メンバも予定)、API呼び出しや
(text構造体メンバアクセスも予定)を全て小文字で記述できます。
"txui"プレフィックスが付いたAPIはユーザインターフェース付きです。
ダイアログボックスなどを表示します。
#endif
#if 0
関数名の末尾に数字は使えない for TX-MACRO multi text。
txプレフィックスは第1引数が"tx *text"の関数だけに付ける for 混乱防止
返り値は、sizeofが2/4bytesのみ。負の値は返さないこと for txfuncCall
sizeof=4を返す関数は、tFunctableでFM_DWORDを指定すること
32bit版ではFM_DWORDでもFM_WORDでもない関数の返り値は32bitとすること
#endif
//{#API}
//{###カーソル移動}
//文字単位や単語単位、行単位やページ単位のカーソル移動などを行います。
int TXAPI TXCMDBASE TXMODAL txkeyLeft(tx *text);
// 1つ前の文字へ
// ユーザインターフェースがWindows準拠でShift+Leftキーに割り当てると、
// 文字列を選択してカーソルを1つ前の文字へ動かします。
// text->modeFreeCursorが1のときはフリーカーソル動作を行う
//{#MS} {Left} +{Left}
//{#VZ} {Left} ^S
//{#MI} {Left} ^S
//{#EMACS} {Left} +{Left} ^B
int TXAPI TXCMDBASE TXMODAL txkeyRight(tx *text);
// 1つ後ろの文字へ
// ユーザインターフェースがWindows準拠でShift+Rightキーに割り当てると、
// 文字列を選択してカーソルを1つ後ろの文字へ動かします。
// text->modeFreeCursorが1のときはフリーカーソル動作を行う
//{#MS} {Right} +{Right}
//{#VZ} {Right} ^D
//{#MI} {Right} ^D
//{#EMACS} {Right} +{Right} ^F
int TXAPI TXCMDBASE TXMODAL txkeyUp(tx *text,int n);
// 1行上へ
// ユーザインターフェースがWindows準拠でShift+Upキーに割り当てると、
// 文字列を選択してカーソルを1行上へ動かします。
// フリーカーソル、加速スクロールに対応したキーボード用
//{#MS} {Up} +{Up}
//{#VZ} {Up} ^E
//{#MI} {Up} ^E
//{#EMACS} {Up} +{Up} ^P
int TXAPI TXCMDBASE TXMODAL txkeyDown(tx *text,int n);
// 1行下へ
// ユーザインターフェースがWindows準拠でShift+Downキーに割り当てると、
// 文字列を選択してカーソルを1行下へ動かします。
// フリーカーソル、加速スクロールに対応したキーボード用
//{#MS} {Down} +{Down}
//{#VZ} {Down} ^X
//{#MI} {Down} ^X
//{#EMACS} {Down} +{Down} ^N
int TXAPIBASE TXCMD txUp(tx *text);
// 1行上へ
//{#RET}移動行数を返す
int TXAPIBASE txUpN(tx *text,int n);
// n行上へ
//{#RET}移動行数を返す
int TXAPIBASE TXCMD txDown(tx *text);
// 1行下へ
//{#RET}移動行数を返す
int TXAPIBASE txDownN(tx *text,int n);
// n行下へ
//{#RET}移動行数を返す
int TXAPIBASE TXCMD TXHIGH txLeft(tx *text);
// 1つ前の文字へ
// フリーカーソル動作は行わない
//{#RET}移動できたか返す
int TXAPI TXCMD TXMODAL txLeftFree(tx *text);
// 1つ前の文字へ
// フリーカーソル動作も行う
//{#RET}移動できたか返す
int TXAPI TXCMD txLeftWord(tx *text);
// 1つ前の単語へ
//{#RET}移動できたか返す
int TXAPIBASE TXCMD txLeftWordMi(tx *text);
// 1つ前の単語へ(MIFESライク)。
//{#RET}移動できたか返す
int TXAPI TXHIGH txLeftBytes(tx *text,IMEM len);
// lenバイト手前へ
// 漢字の2バイト目にもジャンプできる仕様です
//{#RET}移動できたか返す
int TXAPIBASE TXHIGH TXCMD txRight(tx *text);
// 1つ後の文字へ
// フリーカーソル動作は行わない
//{#RET}移動できたか返す
int TXAPI TXHIGH TXCMD TXMODAL txRightFree(tx *text);
// 1つ後の文字へ
//{#RET}移動できたか返す
// フリーカーソル動作も行う
int TXAPI TXCMD txRightWord(tx *text);
// 1つ後の単語へ
//{#RET}移動できたか返す
int TXAPIBASE TXCMD txRightWordMi(tx *text);
// 1つ後の単語へ(MIFESライク)
//{#RET}移動できたか返す
int TXAPI TXHIGH txRightBytes(tx *text,IMEM len);
// lenバイト後へ
// 漢字の2バイト目にもジャンプできる仕様です
//{#RET}移動できたか返す
int TXAPI TXCMDBASE txPrevRoll(tx *text);
// 1行ロールアップ
//{#VZ} ^W \{PageUp}
//{#MI} ^W
//{#EMACS} +{PageUp}
int TXAPI txPrevRollN(tx *text,int n);
// n行ロールアップ
int TXAPI TXCMD txPrevPage(tx *text);
// ページアップ
void TXAPI TXCMD TXMODAL txPrevPageVz(tx *text);
// ページアップ(VZライク)
// ページングモード、ページング単位有効
void TXAPI TXCMD txPrevPageMi(tx *text);
// 高速スクロールアップ
int TXAPI TXCMD txPrevHalfPage(tx *text);
// ハーフページアップ
BOOL TXAPIBASE TXHIGH TXCMDBASE txPrevPara(tx *text);
// 1つ前の論理行の先頭へジャンプ
//{#RET}ジャンプできたかどうか返す
//{#MS} ^{Up}
//{#MI} ^{Up}
int TXAPI TXCMDBASE txNextRoll(tx *text);
// 1行ロールダウン
//{#MS}
//{#VZ} ^Z \{PageDown}
//{#MI} ^Z
//{#EMACS} +{PageDown}
int TXAPI txNextRollN(tx *text,int n);
// n行ロールダウン
int TXAPI TXCMD txNextPage(tx *text);
// ページダウン
void TXAPI TXCMD TXMODAL txNextPageVz(tx *text);
// ページダウン(VZライク)
// ページングモード、ページング単位有効
void TXAPI TXCMD txNextPageMi(tx *text);
// 高速スクロールダウン
int TXAPI TXCMD txNextHalfPage(tx *text);
// ハーフページダウン
BOOL TXAPIBASE TXHIGH TXCMDBASE txNextPara(tx *text);
// 1つ後ろの論理行の先頭へジャンプ
//{#RET}ジャンプできたかどうか返す
//{#MS} ^{Down}
//{#MI} ^{Down}
int TXAPIBASE TXCMD txJumpLineTop(tx *text);
// 表示行の先頭へジャンプ
int TXAPIBASE TXCMDBASE txJumpLineEnd(tx *text);
// 表示行の末尾の文字へジャンプ
int TXAPI TXCMDBASE txJumpLineTail(tx *text);
// 表示行の末尾文字の後ろへジャンプ
int TXAPIBASE TXCMDBASE TXHIGH txJumpParaTop(tx *text);
// 論理行の先頭へジャンプ
int TXAPIBASE TXCMDBASE txJumpParaEnd(tx *text);
// 論理行の末尾へジャンプ
int TXAPI TXCMD txJumpWordTop(tx *text);
// 語の先頭へジャンプ
int TXAPIBASE TXCMD txJumpWordTopMi(tx *text);
// 語の先頭へジャンプ(MIFESライク)
int TXAPI TXCMD txJumpWordEnd(tx *text);
// 語の末尾へジャンプ
// 1.00Cで仕様変更。単語の末尾の次の文字にカーソルを動かす
int TXAPIBASE TXCMD txJumpWordEndMi(tx *text);
// 語の末尾へジャンプ(MIFESライク)
// 1.00Cで仕様変更。単語の末尾の次の文字にカーソルを動かす
void TXAPI TXCMDBASE txJumpScreenTop(tx *text);
// 画面の上端へジャンプ
//{#EMACS} ^{Up}
void TXAPI TXCMDBASE txJumpScreenEnd(tx *text);
// 画面の下端へジャンプ
//{#EMACS} ^{Down} ^{End}
int TXAPI txJumpLx(tx *text,int cx);
// カーソルXをcxにジャンプ
// cxは表示行先頭を0としたバイト数で指定
BOOL TXAPI TXHIGH txJumpParaIch(tx* text,IFILE lch);
// 段落の先頭からlch文字目にジャンプする
// 段落の終わりを超えることはできません
// 正常に実行できたかどうかを返します。
// 漢字も1文字として数えます。
//1.97で追加
int TXAPI txJumpX(tx *text,int x);
// カーソルXをxにジャンプ
// xにはx座標をピクセル単位で指定
//1.00Fで追加
int TXAPI txJumpLy(tx *text,int y);
// カーソルYをyに設定
// 編集位置も変わる
void TXAPIBASE txSetLy(tx *text,int y);
// カーソルYをyに設定
// 編集位置は変わらない
void TXAPIBASE TXCMD txSetLyCenter(tx *text);
// カーソルYを画面中央に設定
// 編集位置は変わらない
void TXAPI txMoveLcy(tx *text,int lcy);
// lcyだけカーソルYを移動する
// lcyが負ならカーソルを戻す。
// 編集位置は変わらない
//{###ジャンプ}
//テキスト先頭や末尾、行頭や行末、単語頭や末尾、指定行へのジャンプ、
//カーソルの座標の設定などを行います。
int TXAPI txJumpPara(tx *text,NPARA line);
// テキストのline段落にジャンプ
// テキストの先頭行は1行として指定
// 段落の先頭文字へジャンプするとは限りません。
// この場合は、txJumpNparaを使います。
int TXAPI txJumpLine(tx *text,NLINE line);
// テキストのline表示行にジャンプ
// テキストの先頭行は1行として指定
//{#RET}text->fLineDが真のときしか動作しない。偽なら0を返す
BOOL TXAPI txJumpPage(tx *text,NPAGE npage);
// テキストのnpageページの先頭行にジャンプ
// テキストの先頭行は1ページになります。
// ジャンプできたかどうか返します。
// 詳細モードでは指定ページへ、それ以外のモードでは、
// text-fLineDが真でtext->heightが1以上なら、
// return txJumpLine(text,text->height * (npage - 1) + 1);します。
// そうでなければジャンプせず、FALSEを返します。
//1.91A で追加
BOOL TXAPI txJumpLink(tx* text);
// カーソル位置にハイパーリンクが設定されていればリンク先にジャンプします。
// ジャンプしたかどうかを返します。
//1.99C で追加
int TXAPI TXMODAL txJumpModal(tx *text,NLINE line);
// テキストのline行にジャンプ
// テキストの先頭行は1行として指定
// text->fLineDが真なら表示行lineへ、偽なら論理行lineへジャンプ
BOOL TXAPI TXCMDBASE txJumpFileTopLine(tx *text);
// テキストの先頭表示行へジャンプ
// カーソルX座標は保持
//{#VZ} ^QR ^{PageUp}
//{#MI} ^QR
//{#EMACS} ^{PageUp}
BOOL TXAPI TXCMDBASE txJumpFileEndLine(tx *text);
// テキストの末尾表示行へジャンプ
// カーソルX座標は保持
//{#VZ} ^QC ^{PageDown}
//{#MI} ^QC
//{#EMACS} ^{PageDown}
BOOL TXAPIBASE TXCMDBASE TXHIGH txJumpFileTop(tx *text);
// テキストの先頭へジャンプ
BOOL TXAPIBASE TXCMDBASE TXHIGH txJumpFileEnd(tx *text);
// テキストの末尾へジャンプ
int TXAPI TXCMDBASE txJumpBrace(tx *text);
// 対応する括弧へジャンプ
//{#MS} ^] ^[
//{#VZ98} ^QK +{CLR}
//{#VZIBM} ^QK
//{#MI} {Esc}[ {Esc}]
BOOL TXAPIBASE TXHIGH txJumpAddress(tx *text,IFILE _address);
// テキストのアドレスへジャンプ
// アドレスは、テキスト先頭からのバイト数で指定
// ジャンプ先が漢字の2バイト目の場合は、その漢字の1バイト目にジャンプします
BOOL TXAPI txMarkN(tx *text,int n);
// カーソル位置をマークn(0-4)にマークする
BOOL TXAPI TXCMDBASE txMark1(tx *text);
// カーソル位置をマーク1にマークする
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^K1
BOOL TXAPI TXCMDBASE txMark2(tx *text);
// カーソル位置をマーク2にマークする
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^K2
BOOL TXAPI TXCMDBASE txMark3(tx *text);
// カーソル位置をマーク3にマークする
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^K3
BOOL TXAPI TXCMDBASE txMark4(tx *text);
// カーソル位置をマーク4にマークする
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^K4
BOOL TXAPI txJumpMarkN(tx *text,int n);
// マークn(0-4)へジャンプ
BOOL TXAPI TXCMDBASE txJumpMark1(tx *text);
// マーク1へジャンプ
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^Q1
BOOL TXAPI TXCMDBASE txJumpMark2(tx *text);
// マーク2へジャンプ
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^Q2
BOOL TXAPI TXCMDBASE txJumpMark3(tx *text);
// マーク3へジャンプ
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^Q3
BOOL TXAPI TXCMDBASE txJumpMark4(tx *text);
// マーク4へジャンプ
// キー割り当て用です。呼び出して使うことはできません
//{#VZ} ^Q4
void TXAPIBASE TXCMDBASE txMarkCur(tx *text);
// カーソル位置をマーク
// 他のジャンプコマンドを実行すると、直前位置がマーク0に代入
// されます。カーソル位置をマーク0に代入するコマンドです。
// マーク0は、テキストが挿入/削除されても位置はずれません。
//{#VZ} ^QM ^K0
void TXAPIBASE TXCMDBASE txJumpMarkCur(tx *text);
// ジャンプ前の位置へ
// マーク0へのジャンプ
//{#MS} +{F5} ^%Z
//{#VZ} ^QP ^Q0
//{#MI} ^QJ
BOOL TXAPI TXCMDBASE txSelectJump(tx *text);
// 範囲の先頭/末尾へジャンプ
BOOL TXAPI txJumpAnchor(tx* text,mchar* szanchor);
// HTMLファイルにおいてszanchorのアンカーにジャンプします
//1.90 で新設
//{###検索・置換}
//テキストの検索や置換を行います。
int TXAPIBASE TXHIGH txSearchEx(tx *text,mchar* szfind,DWORD searchmode);
// 引数で条件を指定して検索します。
// 検索ヒストリ、text->searchmodeは変更しません。
//{#RET}見つかればカーソルを移動し0以外の値、
// 見つからなければ0を返す
// searchmodeには次のフラグを"|"で組み合わせて指定します。
// SEARCH_FORWARD テキスト末尾方向へ検索(デフォルト)
// SEARCH_PREV テキスト先頭方向へ検索
// SEARCH_AREA 範囲内のみ検索する
// SEARCH_NOESC 検索文字列中の'\'の特別な意味を消して検索
// SEARCH_CUR カーソル位置の文字から検索
// SEARCH_SELECT 見つけた文字列を選択する
// SEARCH_PARATOP 論理行頭のみ検索
// SEARCH_NOSENSECASE 大文字・小文字を区別しない
// SEARCH_NOSENSEZENHAN 全角/半角文字を区別しない
// SEARCH_WORD ワードサーチ
// SEARCH_RE 正規表現による検索
//※SEARCH_NOSENSEZENHANとSEARCH_WORDを同時に指定してはいけません
//1.00H2 で新設
BOOL TXAPI TXCMD txSearchContinue(tx *text);
// 前回検索した文字列を、カーソル位置の次から検索
// 前回検索文字列はヒストリから得る
//2.96 970201 検索オプションは、前回検索した文字列のオプションに従います
//(旧1.00H2 検索オプションはtext->searchmodeを参照します)
//{#RET}見つかったかどうか返す
BOOL TXAPI TXCMD txSearchContinuePrev(tx *text);
// 前回検索した文字列を、カーソル位置からテキスト先頭まで検索
// 前回検索文字列はヒストリから得る
//2.96 970201 検索オプションは、前回検索した文字列のオプションに従います
//(旧1.00H2 検索オプションはtext->searchmodeを参照します)
//{#RET}見つかったかどうか返す
BOOL TXAPI TXCMDBASE txSearchTitle(tx *text);
// カーソル位置の次行から、タイトル文字列を検索
// 検索ヒストリ、text->searchmodeは変更しません。
//{#RET}見つかったかどうか返す
//{#MS} %{PageDown}
BOOL TXAPI TXCMDBASE txSearchTitlePrev(tx *text);
// カーソル位置からテキスト先頭まで、タイトル文字列を検索
// 検索ヒストリ、text->searchmodeは変更しません。
//{#RET}見つかったかどうか返す
//{#MS} %{PageUp}
HWND TXAPIBASE txSearchText(tx *text,mchar *szfilename);
// szfilenameがTXでオープンされていたら、そのウィンドウハンドルを返す
// ウィンドウハンドルは、text->hwndbaseに相当
// szfilenameにはドライブ名も含めたフルパスを指定してください。
int TXAPIBASE txReplaceEx(tx *text,mchar* szfind,mchar* szreplace,DWORD searchmode);
// szfindをszreplaceに置換
// 検索ヒストリ、text->searchmodeは変更しません。
// txReplaceContinueには影響しません。
// searchmodeにREPLACE_CONFIRMを指定すると、
// モードレスダイアログを出したり、カーソル位置を移動することがあります。
// 置換個数を返します。
// 1.01Aより、置換が、置換確認ダイアログでキャンセルされた場合は、
// text->fReplaceCanceledフラグをセットします。
// キャンセルされなかった場合は、このフラグはリセットされます。
// searchmodeには次のフラグを"|"で組み合わせて指定します。
// SEARCH_FORWARD テキスト末尾方向へ検索(デフォルト)
// SEARCH_PREV テキスト先頭方向へ検索
// SEARCH_AREA 範囲内のみ検索する
// SEARCH_NOESC 検索文字列中の'\'の特別な意味を消して検索
// SEARCH_ALL テキスト全体で検索
// SEARCH_PARATOP 論理行頭のみ検索
// SEARCH_NOSENSECASE 大文字・小文字を区別しない
// SEARCH_NOSENSEZENHAN 全角/半角文字を区別しない
// SEARCH_WORD ワードサーチ
// SEARCH_RE 正規表現による検索
// REPLACE_CONFIRM 置換確認を行う
// REPLACE_ONCE 最初の1つだけ置換
//※SEARCH_NOSENSEZENHANとSEARCH_WORDを同時に指定してはいけません
//1.00H2 で新設
int TXAPI TXCMDBASE txReplaceContinue(tx *text);
// [検索]メニューの[置換]コマンドで前回置換した内容を再実行
//1.00Bから、置換個数を返します。確認付き置換の時は0を返します。
//{#VZ} ^QO
//{###編集}
//文字列の挿入・削除、各種変換などの編集操作を行います。
int TXAPIBASE TXHIGH txInsert(tx *text,mchar *str);
// 文字列strを挿入し、カーソルを進める。
// 改行は"\n"で指定。
//{#RET}挿入したバイト数を返す
//{#EX}txInsert(text,"this is para\n");
int TXAPIBASE TXHIGH txInsertChar(tx *text,TXCHAR code);
// 文字codeを挿入し、カーソルを進める。
// 改行は'\n'、漢字は'あ'のように指定
//{#RET}挿入できたか返す
int TXAPI TXHIGH txCurInsertChar(TX* text,WORD code);
// 文字codeを挿入し、カーソルはそのまま
// 改行は'\n'、漢字は'あ'のように指定
//2.97 970219 new
//{#RET}挿入できたか返す
BOOL TXAPI TXCMDBASE txInsertKeymacro(tx *text);
// キーボードマクロを挿入する。
//{#RET}挿入できたか返す。
//{#VZ} ^K_
int TXAPI TXHIGH txInsertBuff(tx *text,mchar *str,IMEM len);
// バッファ(ポインタ:str,長さ:lenバイト)を挿入し、カーソルを進める。
//{#RET}挿入できたか返す
void TXAPI TXCMDBASE txInsertFind(tx *text);
// 検索文字列挿入
//{#VZ} ^QI +{F5}
//{#EMACS} +{F5}
int TXAPI TXHIGH txCurInsertBuff(tx *text,mchar *str,IMEM len);
// 文字列バッファ(ポインタ:str,長さ:lenバイト)の内容を挿入。カーソルは進めない。
//{#RET}挿入できたか返す
int TXAPIBASE txOverWriteChar(tx *text,TXCHAR code);
// 文字codeを上書き
//{#RET}上書きできたか返す
int TXAPIBASE txOverWrite(tx *text,mchar *szstr);
// 文字列を上書き
int TXAPIBASE TXHIGH TXCMD txDeleteChar(tx *text);
// 1文字削除
//{#RET}削除できたか返す
int TXAPI TXHIGH txDeleteBytes(tx *text,DWORD len);
// lenバイト削除
//{#RET}削除できたか返す
int TXAPI TXCMD txDeleteWord(tx *text);
// 単語削除
//{#RET}削除できたか返す
//{#VZ} +{Delete} ^T
//{#EMACS} +{Delete}
int TXAPIBASE TXCMD txDeleteWordMi(tx *text);
// 単語削除(MIFESライク)
//{#RET}削除できたか返す
//{#MI} ^T
int TXAPIBASE TXCMD txDeletePrev(tx *text);
// 1文字前方削除(バックスペース)
//{#RET}削除できたか返す
int TXAPI TXCMDBASE txDeletePrevWord(tx *text);
// 単語前方削除
//{#RET}削除できたか返す
//{#VZ} +{Backspace} ^QH
//{#EMACS} +{Backspace}
int TXAPIBASE TXCMD txDeleteLine(tx *text);
// 表示行削除
//{#RET}削除できたか返す
int TXAPIBASE TXCMD txDeletePara(tx *text);
// 論理行削除
//{#RET}削除できたか返す
int TXAPI TXCMDBASE txDeleteParaTop(tx *text);
// 論理行の先頭まで削除
//{#RET}削除できたか返す
//{#VZ} ^{Backspace} ^QT
//{#MI} ^U
//{#EMACS} ^{Backspace}
int TXAPI TXCMDBASE txDeleteParaEnd(tx *text);
// 論理行の末尾まで削除
//{#RET}削除できたか返す
//{#VZ} ^{Delete} ^QY
//{#MI} ^K
//{#EMACS} ^{Delete}
void TXAPIBASE TXCMD txDeleteText(tx *text);
// テキスト全体を削除。
BOOL TXAPI TXCMDBASE txUndelete(tx *text);
// 削除文字列復活
// 1文削除、1語削除、行頭・末まで削除などの削除文字を現在のカーソル
// 位置に復活する。簡易カット&ペーストとして使用可能。
//{#RET}復活したか返す
//{#MS} %{Insert}
//{#VZ} ^U ^{Insert}
//{#MI} ^QU
//{#EMACS} ^{Insert}
void TXAPI TXCMD txJankToAnk(tx *text);
// 範囲内、全角ANK->半角ANK変換
void TXAPI TXCMD txJkanaToKana(tx *text);
// 範囲内、全角ひらがな・カタカナ->半角カナ 変換
void TXAPI TXCMD txJkataToKana(tx *text);
// 範囲内、全角カタカナ->半角カナ 変換
void TXAPI TXCMD txKanaToJhira(tx *text);
// 範囲内、半角カナ->全角ひらがな 変換
void TXAPI TXCMD txKanaToJkata(tx *text);
// 範囲内、半角カナ->全角カタカナ 変換
void TXAPI TXCMD txAnkToJank(tx *text);
// 範囲内、半角ANK->全角ANK 変換
int TXAPI TXMODAL txCharConvert(TX* text,CHARCONVERT* cc);
// 範囲内、文字変換
// 範囲が選択されていなければ全体を文字変換
//2.00Cで追加
void TXAPI TXCMDBASE txIndentInc(tx *text);
// 範囲内インデント
//{#VZ} ^KH
void TXAPI TXCMDBASE txIndentDec(tx *text);
// 範囲内逆インデント
int TXAPI TXCMDBASE TXMODAL txInsertPara(tx *text);
// 1行挿入
// text->modeAutoIndentが真のときは、オートインデント処理を行います
//{#RET}挿入できたか返す
//{#VZ} ^N
//{#MI} ^N
//{#EMACS} ^O
//2.97 970224 各キーの+{Enter}割り当て外す。
int TXAPI TXMODAL txWriteChar(tx *text,TXCHAR code);
// 文字codeを挿入または上書き。
// text->fOverWriteが真なら上書き、偽なら挿入。
// text->modeAutoIndentが真のときは、オートインデント処理を行います
// text->modeFreeCursorが真のときはフリーカーソル処理を行います
//{#RET}実行できたか返す
int TXAPI TXCMD TXMODAL txWriteTab(tx *text);
// タブを挿入または上書き。
// 範囲選択中なら、タブを書く代わりにtxIndentInc(text)を実行。
// 上書きモードのときは、カーソルを次のタブ位置へ進めます。
// 挿入モードのときは、タブを挿入します。
//{#RET}実行できたか返す
int TXAPI TXCMD TXMODAL txWriteReturn(tx *text);
// 改行を挿入または上書き。
//{#RET}実行できたか返す
int TXAPIBASE txInsertReturn(tx* text);
// 改段(改行コード)を挿入。
//{#RET}実行できたか返す
//1.90で追加
void TXAPI TXCMDBASE txTabToSpace(tx *text);
// タブを空白に変換
// 全てのタブを変換します。""内のタブも変換します。
void TXAPI TXCMDBASE txSpaceToTab(tx *text);
// 空白をタブに変換
// 行頭の空白のみタブに変換します。
void TXAPI TXCMD txDeleteTailSpace(tx *text);
// 行末の空白を削除
//{###範囲選択}
//範囲選択の開始・終了、範囲内のウォーク、範囲の先頭・末尾へのジャンプ
//などを行います。
int TXAPIBASE txSelectGetMode(tx *text);
// 現在の範囲選択モードを返します。
//{#RET}範囲選択されてなければ0(CLIP_NONE)を返します。
// 範囲選択されていれば以下の0以外の値を返します。
// CLIP_CHAR 文字単位
// CLIP_LINE 表示行単位
// CLIP_PARA 論理行単位
// CLIP_BOX 箱
// CLIP_ALL すべて
// CLIP_PARA1 WZ内部用
// 以下は1.01Aで追加
// CLIP_LINECUR カーソル行も含む表示行単位
// CLIP_PARACUR カーソル行も含む論理行単位
BOOL TXAPIBASE txSelectEx(tx *text,int fClip);
// fClipのモードで範囲選択を開始します
// 範囲選択中なら、範囲選択を中止して、fClipのモードで範囲選択を開始します
// 範囲選択を開始したかどうかを返します
// fClipには次を指定できます。
// CLIP_CHAR,CLIP_LINE,CLIP_PARA,CLIP_BOX
// CLIP_WORD,CLIP_SENTENCE,CLIP_ALL,CLIP_PARACUR
// CLIP_LINECUR,CLIP_VZ,CLIP_WZ
//1.01Aで追加。
BOOL TXAPI TXCMDBASE txSelect(tx *text);
// 文字単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
//1.00Dから、範囲選択を開始したかどうか返します。
//{#MI} +{F6}
BOOL TXAPI TXCMDBASE txSelectLine(tx *text);
// 表示行単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
//1.00Dから、範囲選択を開始したかどうか返します。
//{#MI} {F6}
BOOL TXAPI TXCMD txSelectPara(tx *text);
// 論理行単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
//1.00Dから、範囲選択を開始したかどうか返します。
BOOL TXAPI txSelectParaCur(tx *text);
// カーソル論理行も含める論理行単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
// 範囲選択を開始したかどうか返します。
//1.00Fで追加
BOOL TXAPI TXCMD txSelectWord(tx *text);
// 単語単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
// 範囲選択を開始したかどうか返します。
//1.00Fで追加
BOOL TXAPI TXCMD txSelectSentence(tx *text);
// 文単位の範囲選択開始
// 範囲選択中なら、範囲選択を中止
// 範囲選択を開始したかどうか返します。
//1.00Fで追加
BOOL TXAPI TXCMD txSelectVz(tx *text);
// VZの範囲選択開始
// 範囲選択中なら、範囲選択を中止
// カーソルを縦に動かすと論理行単位、横に動かすと文字単位の選択に
// 切り替わります。
//1.00Dから、範囲選択を開始したかどうか返します。
//{#VZ} {F10} ^B
//{#EMACS} {F10}
BOOL TXAPI TXCMD txSelectWz(tx *text);
// WZの範囲選択開始
// 範囲選択中なら、範囲選択を中止
// 最初に、カーソルを縦に動かすと論理行単位、横に動かすと文字単位の
// 選択を開始。
//1.00Dから、範囲選択を開始したかどうか返します。
BOOL TXAPI TXCMDBASE txSelectBox(tx *text);
// 箱の範囲選択開始
// カット&ペースト専用の範囲選択。範囲選択中なら、範囲選択を中止
//1.00Dから、範囲選択を開始したかどうか返します。
//{#MS} %{F8}
//{#VZ} ^KB
//{#MI} ^{F6}
BOOL TXAPIBASE TXCMDBASE txSelectAll(tx *text);
// テキスト全体を範囲選択
// カット&ペースト専用の範囲選択
//1.00Dから、範囲選択を開始したかどうか返します。
//{#MS} ^A {MouseL4}
//{#VZ} {MouseL4}
//{#MI} {MouseL4}
//{#EMACS} {MouseL4}
BOOL TXAPIBASE TXCMD txSelectQuit(tx *text);
// 範囲選択中止
//1.00Dから、範囲選択を中止したかどうか返します。
BOOL TXAPI txSelectToChar(tx* text);
// 現在任意のモードで選択されている部分を、文字単位で選択
// cliptopnowが範囲選択開始アドレス、clipendnowがカーソル位置になります。
BOOL TXAPI txFlushSelectNow(tx *text);
// 範囲のアドレスをtext->cliptopnow,text->clipendnowにセット
// cliptopnowは範囲選択を開始したときのアドレスを元にセットされます
// clipendnowは現在のカーソル位置のアドレスを元にセットされます
DWORD TXAPI txEditOp(TX* text,int op,LPVOID arg);
// 各種編集操作を行う
//2.00E6で追加
#define TXEDITOP_TOLOWER 10 // 範囲内の半角英字を小文字へ
// 範囲が指定されてないときは先頭文字を見て
// 単語を大/小文字へ
#define TXEDITOP_TOUPPER 11 // 範囲内の半角英字を大文字へ
// 範囲が指定されてないときは先頭文字を見て
// 単語を大/小文字へ
//{###カット&ペースト}
//クリップボードやテキストスタックを使って、
//範囲内のカットやコピー、ペーストなどを行います。
BOOL TXAPIBASE TXCMD txSelectCopy(tx *text);
// 範囲内をクリップボードへコピー
void TXAPI TXCMD txSelectCopyDelete(tx *text);
// 範囲内をクリップボードへコピーし、削除し、範囲選択中止
//{#MI} {F7}
void TXAPI TXCMD txSelectCopyQuit(tx *text);
// 範囲内をクリップボードへコピーし、範囲選択中止
//{#MI} {F8}
BOOL TXAPI TXCMD txSelectTsPush(tx *text);
// 範囲内をテキストスタックへプッシュ
void TXAPI TXCMD txSelectTsPushDelete(tx *text);
// 範囲内をテキストスタックへプッシュし、削除し、範囲選択中止
//{#MI} ^Y
void TXAPI TXCMD txSelectTsPushQuit(tx *text);
// 範囲内をテキストスタックへプッシュし、範囲選択中止
BOOL TXAPIBASE TXCMDBASE txSelectDelete(tx *text);
// 範囲内を削除
BOOL TXAPIBASE TXCMD txPaste(tx *text);
// クリップボードからペースト
// カーソルを、ペーストしたバイト数、移動します。
//{#MI} {F9}
BOOL TXAPI TXCMD txPasteChar(tx *text);
// クリップボードから文字単位でペースト
// カーソルを、ペーストしたバイト数、移動します。
//{#MI} +{F9}
BOOL TXAPI TXCMD txTsPaste(tx *text);
// テキストスタックからペースト
// カーソルを、ペーストしたバイト数、移動します。
//{#MI} ^L
BOOL TXAPI TXCMD txTsPop(tx *text);
// テキストスタックからポップ
// カーソルは移動しません
//{#MI} +{Insert}
void TXAPI TXCMD txTsClear(tx *text);
// テキストスタックをクリア
//{#VZ} ^KY
BOOL TXAPI TXCMD TXMODAL txTsPasteModal(tx *text);
// テキストスタックからペースト
// text->fJumpTxPasteEndが真ならカーソルを移動します
BOOL TXAPI TXCMD TXMODAL txTsPopModal(tx *text);
// テキストスタックからポップ
// text->fJumpTxPasteEndが真ならカーソルを移動します
//{###編集}
BOOL TXAPI TXHIGH txClipSelectCopy(tx *text,HCLIP hclip);
// 選択範囲内をhclipのクリップボードにコピー
// txClipSelectCopy(text,HCLIP_WIN)はtxSelectCopy(text)と同じ。
// txClipSelectCopy(text,HCLIP_TS)はtxSelectTsPush(text)と同じ。
//2.00Eで追加
BOOL TXAPI TXHIGH txClipCopy(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind);
// ユーザクリップボードにコピー
// textのcliptopからclipendの内容を、
// hclip([クリップボードハンドル]参照)で指定された
// クリップボードに入れます
// _clipkind: 0以外なら、指定されたclipkind(CLIP_CHAR etc)でペースト
// CLIP_ALLはCLIP_CHARとして指定
// 0なら、fClipで指定されたモード
// fClipがCLIP_NONEなら、文字単位
// CLIP_ALLはCLIP_CHARとなる
// 文字装飾や段落書式はコピーしません
BOOL TXAPI TXHIGH txClipCopyEx(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind,NPARA nparaTop,NPARA nparaEnd);
//1.99C
// 文字装飾や段落書式もコピーします。
// nparaTop,nparaEndには、cliptop,clipendの論理行番号を渡してください。
BOOL TXAPI TXHIGH txClipPaste(tx *text,HCLIP hclip,BOOL fJump,int _clipkind);
// ユーザクリップボードからペースト
// hclipで指定されたクリップボードの内容を
// カーソル位置にペーストします。
// fJump: 真なら、カーソルを+ペーストサイズ移動する
// hclip == HCLIP_DELSTRの時はfJumpの指定は無効
// _clipkind: 0以外なら、指定されたclipkindでペースト
// 0なら、クリップボードのclipkindでペースト
// 他に、clipDeleteTop/clipClearがあります(_share.h参照)
// 文字装飾や段落書式もペーストします
BOOL TXAPI TXHIGH txClipPasteEx(tx *text,HCLIP hclip,int istack,DWORD cbPasteMax,BOOL fJump,int _fClip);
//1.99C
// テキストスタックのトップ以外からもペーストすることができます。
// cbPasteMaxは予約されています。0を指定してください。
BOOL TXAPI TXHIGH memClipCopy(LPVOID pmem,DWORD cbsize,HCLIP hclip,int fClip);
// pmemのcbsizeのメモリブロックの内容を、
// hclip([クリップボードハンドル]参照)で指定された
// クリップボードに入れます
// fClip:CLIP_CHAR等を指定してください
//1.94で追加
DWORD TXAPI TXHIGH memClipPaste(LPVOID pmem,HCLIP hclip);
// pmemにhclipで指定されたクリップボードの内容をコピーします。
// pmemにNULLを指定すると、コピーするデータのサイズを返します。
//1.94で追加
void TXAPI TXCMD TXUI txuiInsertControl(tx *text);
// 制御文字の挿入
// DOSアプリケーションであるVZのままの仕様です。
// キー入力を待ち、英字が入力されたらコントロール+英字の制御文字を挿入します。
// キー入力待ちの時にマウスを操作してはいけません。
BOOL TXAPI TXCMDBASE txUndo(tx *text);
// やり直し
// 全ての編集操作をやり直しします。
// 表テキストにのみ作用します。
//{#MS} ^Z %{Backspace}
//{#VZ} %{Backspace} ^KU
//{#MI} %{Backspace}
//{#EMACS} %{Backspace}
BOOL TXAPI TXCMDBASE txRedo(tx *text);
// 再実行
// やり直しをキャンセルして再実行します。
// 表テキストにのみ作用します。
//2.99A 970321 {#MS} ^Y new
//{#MS} ^Y +^Z +%{Backspace}
//{#VZ} +%{Backspace}
//{#MI} +%{Backspace}
//{#EMACS} +%{Backspace}
BOOL TXAPI TXCMDBASE txUndoPara(tx *text);
// 行編集の取消
// カーソルがその論理行の編集を開始したときの状態に戻します。
//{#VZ} ^QL
//{###ファイル}
//テキストの保存、テキストのオープン・再オープン、多重化、
//テキストの比較などを行います。
//2.94 970123
typedef struct {
HWND hwnd; // fAlrearyOpen : 既にオープンされていたテキストのhwndbase
// !fAlrearyOpen : オープンしたテキストのhwndbase
TX* text; // オープンしたtext(同一プロセスWZの場合)
// fAlrearyOpenで、同一プロセスWZなら、
// 既にオープンされているtext
WORD fAlrearyOpen:1; // 既にオープンされていた
WORD fWzexec:1; // WZを起動した
WORD fReserved:14;
BYTE reserved[32];
} TXFORKRESULT;
BOOL TXAPI forkex(mchar* szfilename,mchar* sw,UINT mode,TXFORKRESULT* pResult);
// szfilenameのファイルをオープンします。
// szfilenameにスイッチ指定を含むことはできません
// 空白を含むファイル名もszfilenameにそのまま指定できます
// szfilenameは""で括ってあっても構いません
// szswに、起動オプションを指定できます。
// オープンできたらTRUE
// 既にオープンされていたらその窓をアクティブにしてFALSE、
// オープンできなかったらFALSEを返します。
// modeにはTXFORK_XXXを指定します。_text.hを参照してください。
//2.94 970123 新規API
#define TXFORK_NODISP 0x0001 // ウィンドウを表示しない
#define TXFORK_CLOSE_NULL 0x0002 // 現在のtextが無題ファイルで内容が空なら閉じる
#define TXFORK_CLOSE_TEXT 0x0004 // 現在のtextを強制的に閉じる
#define TXFORK_FORKWZ_ENABLE 0x0008 // 高速オープンができなければ、
// 別WZを起動することも検討する
#define TXFORK_FORKWZ 0x0010 // 別WZを起動してオープンする
#define TXFORK_SYNC 0x0020 // 返り値は、szfilenameの窓のhwndbase。
// オープンできなかったらNULL
// 別WZを起動してオープンした場合は、
// オープン処理が終わるまで待つ。
#define TXFORK_OLDARG 0x0040 // szfilenameにスイッチ指定も可能にする
// a:\wz\readme.txt /J100
// 空白を含むファイルは、次のように""で括ってください。
// "a:\wz editor\readme.txt" /J100
#define TXFORK_ENABLE_MULTI 0x0080 // szfilenameが既にオープンされていても
// 構わずオープンする。
void TXAPI TXCMD txOpenNew(tx *text);
// 新しく新規テキストウィンドウを開く
void TXAPI txOpenFile(TX* text,mchar* szfilenamesw);
// カレントテキストを破棄して、szfilenameをオープン
// 表テキストでtext->fNoProfileが偽ならプロファイルを参照する
// szfilenameには、txOpenForkと同じようにファイル名やスイッチを指定できます。
// a:\wz\readme.txt /J100
// 空白を含むファイルは、次のように""で括ってください。
// "a:\wz editor\readme.txt" /J100
// 自分自身のウィンドウを破棄して新しくウィンドウを開きます。
// 実行中のマクロも終わってしまいます。
BOOL TXAPI TXCMD txReopen(tx *text);
// 編集内容を破棄し、編集を最初からやり直す
//{#RET}実行できたか返す。
// 組み込まれていたマクロを全て解放。
// いったん、インスタンスを終了し、再起動します。
BOOL TXAPI txReopenEx(tx *text,mchar* sw);
// 編集内容を破棄し、編集を最初からやり直す
// txReopenと同じですが、起動スイッチを指定できます
BOOL TXAPI TXCMD txReopenInternal(tx *text);
// 編集内容を破棄し、編集を最初からやり直す
// txReopenと違って、マクロは解放しません。
// インスタンスの終了も行いません
BOOL TXAPIBASE txInsertFile(tx *text,mchar *szfilename);
// szfilenameの内容を挿入。
// szfilenameは""で括ってあってはいけません。
//{#RET}実行できたか返す。
//2.99 970317 仕様変更 複数ファイルの指定、""で括った指定はできなくなりました
// txInsertFileMultiを使って下さい。
BOOL TXAPI txInsertFileMulti(tx *text,mchar *szfilename);
// szfilenameの内容を挿入。
// szfilenameには空白で区切って複数のファイルを指定できます。
// 空白を含むファイル名は""で括ってください。
//{#RET}実行できたか返す。
//2.99 970317 new 旧txInsertFile
BOOL TXAPIBASE TXHIGH txSave(tx *text);
// 上書き保存
//{#RET}セーブできたか返す。
BOOL TXAPIBASE txSaveTo(tx *text,mchar *szfilename);
// ファイル名szfilenameにセーブ
//{#RET}セーブできたか返す。
// 編集中のファイルには影響しない。
BOOL TXAPI txSaveAs(TX* text,mchar* szfilename,int returncode,int kanjicode,TXATRATR txatratr);
//1.99C で追加
void TXAPI TXCMD txQuit(tx *text);
// テキストウィンドウを破棄し、終了
void TXAPI txInitText(tx *text);
// textの全メンバを、0や無効状態にリセット
// 裏textを使用する前には必ず実行してください。
// 表textはリセット禁止!
BOOL TXAPI txSetFileName(tx *text,mchar *szfilename);
// 編集ファイル名を設定
// "autoexec.__txopen"を呼び出し、「折り返し幅」等の設定データをロード
// txOpenText後は実行できない。txCloseしてから実行してください。
BOOL TXAPI txOpenText(tx *text);
// テキストバッファを初期化し、編集ファイルをバッファに読み込む。
// ウィンドウにテキスト内容を表示し、編集開始。
// 表テキストでtext->fNoProfileが偽ならプロファイルを参照する
BOOL TXAPI txInitPmem(TX* text);
// txCloseした後、txOpenTextするにはこれを実行してからでないとできない
//1.97で新設
BOOL TXAPI txClose(tx *text);
// テキストの編集を終了。テキストバッファを破棄。編集内容も破棄。
// txClose後、txSetFileName,txOpenTextして再びtextをオープンできます(2.00B)
// 2.00/2.00AではtxSetFileNameの前にtxInitTextしないといけません。
BOOL TXAPI TXCMDBASE txuiOpen(tx *text);
// ファイルを開く
//{#MS} ^O ^{F12} %{F12}
//{#MI} {Esc}N
BOOL TXAPI TXCMD TXUI txuiOpenRead(tx *text);
// リードオンリーファイルオープン
BOOL TXAPI TXCMD TXUI txuiInsertFile(tx *text);
// ファイルの挿入
BOOL TXAPI TXCMDBASE TXUI txuiReopen(tx *text);
// 再読み込み
// マクロも再読み込み
BOOL TXAPI TXCMDBASE TXUI txuiReopenInternal(tx *text);
// 再読み込み
// マクロの再読み込みはせず、ウィンドウも閉じない
//{#VZ} {Esc}U
//1.00H4 で追加
BOOL TXAPI TXCMDBASE TXUI txuiSave(tx *text);
// 上書き保存
// 「(無題)」のウィンドウを保存するとファイル名の
// 入力ダイアログが出る。
//{#MS} ^S
BOOL TXAPI TXCMDBASE TXUI txuiSaveAs(tx *text);
// 名前を付けて保存
// 別ファイルに保存後、編集ウィンドウのファイル名も変更。
//{#MS} {F12}
BOOL TXAPI TXCMD TXUI txuiSaveTo(tx *text);
// 別ファイルへ保存
// 編集ウィンドウのファイル名には影響与えません。
// 変更フラグも立ったままです。
BOOL TXAPI TXCMDBASE TXUI txuiSaveClose(tx *text);
// 保存して閉じる
//{#MI} {Esc}E
BOOL TXAPI TXCMDBASE TXUI txuiClose(tx *text);
// ファイルを閉じる
//{#MS} ^W
//{#VZ} {Esc}C %C ^%C
//{#EMACS} %C
void TXAPI TXCMDBASE txuiCloseOpen(tx *text);
// 閉じて別ファイルを開く
BOOL TXAPI TXCMDBASE TXUI txuiQuit(tx *text);
// 問い合わせ付き破棄終了
// 「修正内容を放棄しますか?」と尋ね、終了
//{#MI} {Esc}Q
BOOL TXAPI TXCMD TXUI txuiCloseAll(tx *text);
// 問い合わせ付き保存終了
// 「修正テキストを出力しますか?」と尋ね、全終了
BOOL TXAPI TXCMDBASE TXUI txuiCloseAllEvery(tx *text);
// 全てのWZ Editorを閉じる
// テキスト毎に「出力しますか?」を尋ね、全終了
//{#VZ} {Esc}X
BOOL TXAPI TXCMD TXUI txuiCloseAllForce(tx *text);
// 全テキストを保存してエディタの終了
// 修正テキストは全保存し、全終了
BOOL TXAPI TXCMDBASE TXUI txuiQuitAll(tx *text);
// 全テキストを破棄してエディタの終了
// 「修正テキストを放棄しますか?」を出し、全終了
//{#VZ} %X ^%X
//{#EMACS} %X
BOOL TXAPI TXCMDBASE txCmp(tx *text);
// テキストの比較
// 2つのウィンドウのカーソル位置から文字単位で比較を行い、
// 次に差異のある部分までジャンプします。
//2.95 970129 {#MS} ^{F4}は廃止。Ctrl+F4はサブウィンドウのクローズに使用する
//{#MS} +^P
//{#VZ} ^KX +{F3}
//{#EMACS} +{F3}
BOOL TXAPI TXCMDBASE txDup(tx *text);
// 編集前ファイルの参照
// 編集中ファイルをディスクからビューモードで呼び出します。
// 参照中のときは、参照を解除します。
//{#VZ} {Esc}D
BOOL TXAPI alltextSave(void);
// オープン中の全テキストについて編集されているものをセーブする
// エラーの場合はFALSEを返す。正常終了ならTRUEを返す
void TXAPI alltextQuit(void);
// すべてのテキストを終了し、エディタを終了する
BOOL TXAPI txSendMail(TX* text);
// テキストをメールとして送信する
//WZ32のみ使用可
//2.00Eで追加
//2.94 970123 txMultiEx廃止
//{###検索・置換}
BOOL TXAPI TXCMDBASE TXUI txuiSearch(tx *text);
// カーソル以降がデフォルトの検索
//1.00Cより、検索文字列が見つかったか返す
//{#MI} ^^ ^QF
BOOL TXAPI TXCMDBASE TXUI txuiSearchPrev(tx *text);
// カーソル以前がデフォルトの検索
//1.00Cより、検索文字列が見つかったか返す
//{#MI} ^\ ^QB
BOOL TXAPI TXCMDBASE TXUI txuiSearchSet(tx *text);
// 検索文字列の設定(VZ)
// txSearchContinue/Prevで検索実行できる。
//1.00Cより、検索文字列が入力されたかどうか返す
//{#VZ} ^QF {F6}
//{#EMACS} {F6}
void TXAPI TXCMDBASE TXUI txuiSearchGet(tx *text);
// 検索文字列をテキストから取得(VZ)
// 連続して実行すると取得範囲が広がります。
// txSearchContinue/Prevで検索実行できる。
// キー割付専用です。API呼び出しでは使えません。
//{#MS} ^L
//{#VZ} ^L {F5}
//{#EMACS} {F5}
int TXAPI TXCMDBASE TXUI txuiReplace(tx *text);
// 「確認しない」がデフォルトの置換
//1.00Cより、置換個数を返す
int TXAPI TXCMDBASE TXUI txuiReplaceQuery(tx *text);
// 「確認」がデフォルトの置換
//1.00Cより、置換個数を返す
//{#MS} ^E
//{#VZ} ^QA [F7]
//{#MI} ^QA
//{#EMACS} {F7}
//{###ジャンプ}
void TXAPI TXCMDBASE TXUI txuiJump(tx *text);
// 指定行ジャンプ
//2.99A 970321 {#MS} {F5}廃止
//{#VZ} ^QJ
//{#MI} {Esc}0 {Esc}1 {Esc}2 {Esc}3 {Esc}4 {Esc}5 {Esc}6 {Esc}7 {Esc}8 {Esc}9
//{###カーソル移動}
void TXAPI TXCMDBASE TXUI txuiPrevSmooth(tx *text);
// 自動スクロールアップ
//{#VZ98} {PageUp} ^QW
//{#VZIBM} +{Up} ^QW
void TXAPI TXCMDBASE TXUI txuiNextSmooth(tx *text);
// 自動スクロールダウン
//{#VZ98} {PageDown} ^QZ
//{#VZIBM} +{Down} ^QZ
//{###マクロ}
//キーボードマクロやマクロの実行呼び出しなどを行います。
//APIには、マクロの様々な情報を返すもの、getch,sleepなどがあります。
BOOL TXAPI TXCMDBASE txuiMacroExec(tx *text);
// マクロ-実行
//{#VZ} {Esc}^
BOOL TXAPI TXCMDBASE txuiMacroExecRelease(tx *text);
// マクロ-再読み込みして実行
void TXAPI TXCMDBASE txkeyMacro(tx *text);
// キーボードマクロ割り当て予約
// このコマンドを割り当てたキーはキーボードマクロ割り当て
// 専用キーになる。
//{#VZ} ^\
//{#MI} ^_
//{#EMACS} ^]
BOOL TXAPI TXCMDBASE txKeymacroRecord(tx *text);
// キーボードマクロ記録開始・終了
//{#VZ} ^_
//{#MI} ^@
//{#VZ} +^M
//{#MI} +^M
//{#MS} +^M
//1.99H キーに割り当て
BOOL TXAPI TXCMDBASE txKeymacroPlay(tx *text);
// 最後に記録したキーボードマクロを再生
//{#VZ} +^L
//{#MI} +^L
//{#MS} +^L
//1.99H キーに割り当て
BOOL TXAPI txKeymacroPlayN(tx *text,int n);
// n番のキーボードマクロを再生
BOOL TXAPI macroFork(mchar *filename);
// 新しくテキストウィンドウを開き、filenameのマクロを実行する
// filenameに空白に続けてWZのスイッチを指定できます。
//{###情報取得}
//カーソル位置の文字コードを取得したりします。
BOOL TXAPIBASE TXHIGH txIsCurReturn(tx *text);
// カーソル位置の文字コードが改行か返す
//{#RET}CR+LF・LF・EOFなら真、そうでなければ偽を返す
BOOL TXAPIBASE txIsCurEof(tx *text);
// カーソル位置がEOFか返す
// EOFコードで判定するのではなく、
// 本当にカーソル位置がファイル末尾にあるかどうか調べます。
BOOL TXAPIBASE txIsCurTof(tx *text);
// カーソル位置がファイル先頭か返す
BOOL TXAPIBASE txIsLineReturn(tx *text);
// カーソル位置の表示行が改行で終わっているかどうか返す
//{#RET}CR+LF・LF・EOFなら真、そうでなければ偽を返します
BOOL TXAPIBASE txIsLineEof(tx *text);
// カーソル位置の表示行がEOF行かどうか返す
//1.93で追加
TXCHAR TXAPIBASE TXHIGH txGetChar(tx *text);
// カーソル位置の文字コードを返す
// if (getchar == 'あ')も可
// カーソル位置が改行かどうか調べるにはtxIsCurReturnを使ってください。
// if (getchar == '\n')だと、CR+LFのときしか「真」になりません。
TXCHAR TXAPIBASE txReadChar(tx *text);
// カーソル位置の文字コードを返し、カーソルを1文字進める
int TXAPIBASE txGetWord(tx *text,txstr str);
// 単語をstrに取得する
// 1行内の範囲選択中なら、範囲内の文字をstrに取得
//{#RET}取得したバイト数を返す
//2.99D 970401 txGetWordで検索によって選択された文字列がとれないのは不便なので取れるようにした。
int TXAPIBASE TXHIGH txGetLine(tx *text,txstr str);
// カレント表示行の内容をstrに取得
// 表示行が、改行・EOFで終わる場合、その手前までの文字列を取得
//{#RET}取得したバイト数を返す
int TXAPIBASE TXHIGH txGetPara(tx *text,txstr str);
// カレント論理行の内容をstrに取得
// 論理行が、改行・EOFで終わる場合、その手前までの文字列を取得
//{#RET}取得したバイト数を返す
//1.93で追加
int TXAPIBASE TXHIGH txGetLineRear(tx *text,txstr str);
// カーソル位置から表示行末までの内容をstrに取得
// 表示行が、改行・EOFで終わる場合、その手前までの文字列を取得
//{#RET}取得したバイト数を返す
int TXAPI TXHIGH txGetBuff(TX* text,WORD lch,mchar* buff,WORD sizebuff);
// カーソル位置からlchバイト数の内容をbuffにコピーする。
// 最大sizebuff-1バイト取得する
// 取得したバイト数を返す。
// curがtemp2直前の場合は、temp2の前までの内容しかとれない。
//3.00A 970428 new
int TXAPI txGetLxLineEnd(tx *text);
// カレント表示行の右端の文字の桁数を返す
int TXAPI txGetLxLineTail(tx *text);
// カレント表示行の右端の文字の直後の桁数を返す
int TXAPI txGetXLineTail(tx *text);
// カレント表示行の右端の文字の直後のx座標を返す
//1.00H6 で追加
int TXAPI txGetWordBuff(TX* text,mchar *szbuff,IMEM cchbuff);
// 単語をszbuffに最大cchbuff-1文字取得する。
int TXAPI txGetWordBuffMi(TX* text,mchar *szbuff,IMEM cchbuff);
// txGetWordBuff(MIFESライク)
int TXAPI txGetWordBuffPrim(TX* text,mchar *lpBuff,IMEM cchBuff,int off,BOOL fMifes);
// txGetWordBuff/txGetWordBuffMi プリミティブ
// text->cur + offから始まる語をlpBuffにコピーする
// コピーした語のバイト数を返す
// cchBuff: lpBuffのsizeofを指定する
// fMifes: TRUE=MIFESライク
BOOL TXAPIBASE txGetEdit(tx *text);
// 編集されたか返す
IFILE TXAPIBASE txGetAddress(tx *text);
// カーソル位置のテキストアドレスを返す
IFILE TXAPIBASE TXHIGH txGetParaTop(tx *text);
// カーソル位置の段落の先頭アドレスを返す
IFILE TXAPIBASE TXHIGH txGetParaEnd(tx *text);
// カーソル位置の段落の末尾アドレスを返す
// 0x0Aのアドレスが返される
// 0x0Aが見つからないときは、テキストバッファの末尾の文字のアドレスを返す
IFILE TXAPIBASE TXHIGH txGetParaTail(tx *text);
// 次の段落の先頭アドレスを返す
// 次の段落が見つからないときは、テキストバッファの末尾の文字のアドレスを返す
//1.00Eで追加
IFILE TXAPI TXHIGH txGetParaIch(tx* text);
// 段落の先頭からの文字数を返す
// 漢字も1文字として数えます。
//1.97で追加
DWORD TXAPIBASE txGetTextSize(tx *text);
// テキストのバイト数を返す
// EOFの分は除く
DWORD TXAPI txWriteToMem(tx *text,mchar *lpMem,DWORD lchCopy);
// テキストをlpMemへlchCopyバイトコピーする
BOOL TXAPI txSaveToMem(tx *text,mchar *lpMem);
// テキストをlpMemへセーブする
DWORD TXAPI txWriteToFile(tx *text,HFILE hf,DWORD lchCopy);
// テキストをhfへlchCopyバイト書き出す。
// hfのファイルポインタの位置から書き出します。
BOOL TXAPI txSaveToFile(tx *text,HFILE hf);
// テキスト全体をhfへ書き出す。
// hfのファイルポインタの位置から書き出します。
// EOFは書き出しません。
BOOL TXAPI txSwapNext(tx *text);
// テキストバッファのスワップを行う
// 後方からswap-inする。
// swap-inするデータがなければ0を返す
// カーソル位置をswap-inしたデータの先頭にセットし、1を返す
// カーソル位置は原則として論理行の先頭になる。
BOOL TXAPI txSwapPrev(tx *text);
// テキストバッファのスワップを行う
// 前方からswap-inする。
// swap-inするデータがなければ0を返す
// カーソル位置を、swap-inする前のテキストバッファの先頭データに
// セットし、1を返す
// カーソル位置は原則として論理行の先頭になる。
BOOL TXAPI alltextGetEdit(void);
// オープン中の全テキストについて編集されているか調べる。
// あればTRUEを返す。なければFALSEを返す
WZCMD TXAPI wzcmdRegister(mchar *szcmd);
// szcmdコマンドを登録して、WZCMDコードを返します。
// 登録できなければ0を返します。
// すでに登録されている場合は、登録せず、wzcmdFromSzcmdの値を返します
WZCMD TXAPI wzcmdFromSzcmd(mchar *szcmd);
// szcmdコマンドをWZCMDコードに変換します。
// 変換できなければ0を返します。
mchar* TXAPI wzcmdToSzcmd(WZCMD wzcmd);
// wzcmdのコマンドを文字列に変換して返します。
// 変換できなければNULLを返します。
WZKEY TXAPI wzkeyGetEnd(void);
// wzkeyの最終番号を返します
mchar** TXAPI wzkeyGetVk(void);
// 仮想キーを文字列配列で返します。
mchar* TXAPI szkeyToStr(mchar szkey[CCHKEY],mchar szstr[CCHWORD]);
// "+[LEFT]"のようなszkey指定を、
// szstrに"Shift+LEFT"のように変換します
// szstrを返します
//1.00H2 custkey.cから、WZ内部に移しました。
// このAPIを使っているマクロは再コンパイルが必要です。
WZKEY TXAPI txWzkeyFromSzkey(TX* text,mchar *szkey);
// .keyのキー指定書式szkeyを、WZKEYに変換します。
// szkeyが2ストロークキーで指定された場合:
// 1ストローク目のキーがプレフィックスキーとして登録されていればWZKEY、
// 登録されていなければ0を返します。
// szkeyが1ストロークキーで指定された場合:
// キーがプレフィックスキーとして登録されているときはプレフィックスコードを返します
// 変換できなければ0を返します。
//2.96A 970214 旧wzkeyFromSzkey
mchar* TXAPI txWzkeyToSzkey(TX* text,WZKEY wzkey,mchar szkey[CCHKEY]);
// wzkeyのキーコードを、.keyのキー記述形式で文字列に変換してszkeyに代入します
// wzkeyが0なら、szkey[0] = 0とします。
//2.96A 970214 旧wzkeyToSzkey
WZKEY TXAPI txKeySearch(TX* text,WZKEY wzkey0,WZCMD wzcmd);
// wzcmdが割り当てられているキーを検索します。見つからなければ0を返します。
// keyには前回の検索結果を渡してください。初めての検索の時は0を渡します。
//2.96A 970214 旧wzkeySearch
BOOL TXAPI txKeySetWzcmd(TX* text,WZKEY wzkey,WZCMD wzcmd);
// wzkeyキーにwzcmdコマンドを割り当てます
// wzcmdにWZCMD_PRETOPを指定すると、wzkeyをプレフィックスキーとして登録します。
// 既にプレフィックスキーとして登録されていたら、何もしません。
// wzkeyがプレフィックスキーで、wzcmdにWZCMD_PRETOP以外が指定された場合、
// wzkeyのプレフィックスキー指定を解除します。
// wzkeyにWZKEY_ALLを指定すると全てのキーのコマンド登録を解除します。
// WZKEY_FKEYを指定すると全てのファンクションキーを解除します。
// 解除するばあい、wzcmd=0としてください
//2.96A 970214 旧wzkeySetWzcmd
WZCMD TXAPI txKeyGetWzcmd(TX* text,WZKEY wzkey);
// wzkeyに割り当てられているWZCMDを返します
// プレフィックスキーなら、WZCMD_PRETOPからWZCMD_PREENDまでの値を返します。
//2.96A 970214 旧wzkeyGetWzcmd
BOOL TXAPI txKeyRegister(TX* text,mchar *szkey,mchar *szcmd);
// キー登録を受け付ける
// szkeyにキー、szcmdにコマンドを指定します。
//2.96A 970214 旧wzkeyRegister
BOOL TXAPI txKeyIsEdited(TX* text);
// txKeyLoadしてからキーが変更されたかどうか返します。
//2.96A 970214 旧wzkeyIsEdited
BOOL TXAPI txKeyLoad(TX* text);
// text->szKeyで指定されたキーファイルをロードして現在のキー設定とします。
//2.96A 970214 旧wzkeyLoad
void TXAPI txFlushToolbar(TX* text);
// ツールバーの作成&表示のし直し
//2.96A 970214 旧toolbarFlush
mchar* TXAPI wzGetEnv(DWORD iname);
// WZ環境変数の内容を返します
// inameには次の値を指定できます
// WZENV_EXTENSIONS,WZENV_VIEWERS,WZENV_TXPATH,
// WZENV_INCLUDE,WZENV_PATH,WZENV_EXT,WZENV_KEY
// 以上の値はそれぞれ、text->shareの、
// szenvextensions,szenvviewers,szenvtxpath,
// szenvinclude,szenvpath,szenvext,szenvkey
// に対応します。従来通りtext->share->szXXXとして
// WZ環境変数に直接アクセスすることも可能ですが、
// WZ32では動作しませんので、wzGetEnv関数を使って下さい。
//1.00Fで追加
#define WZENV_EXTENSIONS 0
#define WZENV_VIEWERS 1
#define WZENV_TXPATH 2
#define WZENV_INCLUDE 3
#define WZENV_PATH 4
#define WZENV_EXT 5
#define WZENV_KEY 6
//{###表示}
//画面のリフレッシュ、文字コードの表示などを行います。
//APIには、テキストの描画を止めて高速処理モードを設定したり、
//ステータスバーに情報を表示するものがあります。
void TXAPIBASE txDispCursor(tx *text);
// textが表テキストで、txSetUndisp中でなければ、
// カーソルを現在位置に表示
void TXAPIBASE txDispLocate(tx *text);
// textが表テキストで、txSetUndisp中でなければ、
// カーソル位置の行と桁を表示します。
void TXAPI txDispText(tx *text,int lyTop,int lyEnd);
// textが表テキストで、txSetUndisp中でなければ、
// 画面のlyTop行からlyEnd行までのテキストを表示
// 先頭行は0行として指定
void TXAPIBASE txDispTextAll(tx *text);
// textが表テキストで、txSetUndisp中でなければ、
// 画面にテキストを表示
void TXAPIBASE TXCMDBASE txDispAll(tx *text);
// 画面表示のリフレッシュ
// textが表テキストで、txSetUndisp中でなければ、
// テキストウィンドウの全表示(txDispTextAll+α)
// txDispCursor、txDispLocateします。
// 全てのステータスバーも表示します
// 裏テキストならば、表示しません。
void TXAPIBASE txSetUndisp(tx *text);
// 画面の非表示
// txSetDispされるまでテキストを表示しない
// マウスカーソルを砂時計にする
BOOL TXAPIBASE txSetDisp(tx *text);
// 画面表示の再表示
// 全表示して、テキストの表示を再開する。
//{#RET}全表示したか返す。
void TXAPIBASE txSetDispFlag(tx *text);
// 画面表示の再開
// テキストの表示を再開する。全表示はしない
void TXAPI txSetUndispSelect(tx *text);
// 範囲選択時の反転表示を表示しない
// マクロ終了時に、この設定は解除されます
//{###ウィンドウ}
//ウィンドウの切り換え、サイズの調節、整列などを行います。
#ifdef __FLAT__
#define WNDTX_RECEIVE_MEM_ENTER \
WZMEM wzmem;\
lParam = wzmemOpen(lParam,&wzmem);
#define WNDTX_RECEIVE_MEM_EXIT \
wzmemClose(&wzmem);
#else
#define WNDTX_RECEIVE_MEM_ENTER
#define WNDTX_RECEIVE_MEM_EXIT
#endif
void TXAPI TXCMDBASE TXUI txuiSwitchText(tx *text);
// テキストウィンドウを選択して切り替え
//{#MS} {F6}
//{#VZ} {F3} %T ^%T
//{#MI} {F2}
//{#EMACS} {F3} %T
void TXAPI TXCMDBASE txSwitchWindow(tx *text);
// テキストウィンドウの切り替え
//2.99A 970321 {#MS} +{F6} +^{F6} -> {#MS} +{F6}
//{#MS} +{F6}
//{#VZ} {F2} %W ^%W
//{#MI} {Home}
//{#EMACS} {F2} ^{Enter} %W
void TXAPI wndtxSetActive(HWND hwndbase);
// hwndbaseのテキストウィンドウをアクティブにする
HWND TXAPI wndtxGetActive(HWND hwndbase);
// hwndbaseの子ウィンドウのうち、
// 最前面にあるトップレベル(タイトルバーつき)ウィンドウを返します。
//1.00D 仕様の記述が間違っていたので修正しました。
DWORD TXAPI wndtxCall(HWND hwndbase,mchar *szAPI);
// hwndbaseのテキストウィンドウにメッセージを送ってTXAPIやマクロを呼び出す。
// 別タスクのWZをコントロールするのに使います。
// TX-APIを呼び出す場合、szAPIにはAPI名を"txQuit"等として指定してください。
// 引数(tx *text)のみを持つTX-APIを呼び出すことができますが、
// 呼び出せないものもあります。
// マクロを呼び出す場合、szAPIには呼び出すマクロをmacroCallStrの第1引数と
// 同じ様に指定してください。
// 呼び出しがうまくいった場合は、呼び出したTXAPIまたはマクロの返り値、
// 失敗した場合は0を返します。
#define wndtxSendMessage wndtxCall // 旧名
LRESULT TXAPI wndtxSendStr(HWND hwnd,UINT uMsg,WPARAM wParam,LPCSTR szstr);
// SendMessageと同じですが、他プロセスへのSendMessageの場合で
// なおかつLPARAMに文字列を渡す場合にこの関数を使ってください。
// Win32では他プロセスへのSendMessageにポインタを渡せないので、
// この関数を用意しました。文字列をWZ共有メモリを使って渡します。
// Win16ではこの関数は単にSendMessageを呼び出すだけですが、Win32上でも
// プログラムが動作するように、上記の場合はこの関数を使ってください。
//1.00Fで追加
//1.01 以前はこの関数をネストして呼び出すことはできませんでしたが、
// ネスト呼び出しできるようにしました
//2.96A 970213 文字列を受け取る側は、
// WNDTX_RECEIVE_MEM_ENTER,WNDTX_RECEIVE_MEM_EXIT
// を使います。
LRESULT TXAPI wndtxSendMem(HWND hwnd,UINT uMsg,WPARAM wParam,LPVOID pMem,DWORD cbMem);
// SendMessageと同じですが、他プロセスへのSendMessageの場合で
// なおかつLPARAMにメモリブロックを渡す場合にこの関数を使ってください。
// Win32では他プロセスへのSendMessageにポインタを渡せないので、
// この関数を用意しました。メモリブロックをWZ共有メモリを使って渡します。
// Win16ではこの関数は単にSendMessageを呼び出すだけですが、Win32上でも
// プログラムが動作するように、上記の場合はこの関数を使ってください。
//2.00Eで追加
void TXAPI wndtxDoCaption(void);
// WZ Editorのキャプションを表示します
//{###モード切り替え}
//挿入モードやページングモード、画面分割モードなどを切り換えます。
//APIには、高速編集モードを設定したりするものがあります。
BOOL TXAPI txBreakOn(tx *text);
// マクロの実行をキー入力で中止できるようにします。
// デフォルトでは中止できません。
// 以前の状態を返します
// breakonする・しないのとでは、
// マクロの実行結果が若干異なる場合があります。
// breakonすると次の処理が追加されます。
// ・定期的にマクロの実行を中断し、WinMainのメッセージループで
// メッセージを処理し、キー入力メッセージがあったらマクロの実行を中断する。
// メッセージがなくなったら、マクロの実行を再開する。
void TXAPI txBreakOff(tx *text);
// マクロの実行をキー入力で中止できないようにします。
BOOL TXAPI txBreakSet(tx *text,BOOL fbreakon);
// マクロの実行をキー入力で中止できるかどうか設定します。
//{#RET}以前の状態を返します
void TXAPI TXCMDBASE TXMODAL txSwitchInsert(tx *text);
// 上書き/挿入切り替え
//{#MS} {Insert}
//{#VZ} {Insert} ^V
//{#MI} {Insert}
//{#EMACS} {Insert}
void TXAPI TXCMD TXMODAL txSwitchCaret(TX* text);
// カーソル表示/非表示切り替え
//2.00Bで追加
void TXAPI TXCMDBASE TXMODAL txSwitchSplit(tx *text);
// 画面分割モード切り替え
//{#MS}
//{#VZ} {F4} %Y ^%Y
//{#MI} {F4}
//{#EMACS} {F4} %Y
void TXAPI TXCMDBASE TXMODAL txSwitchPagingMode(tx *text);
// ページングモード切り替え
//{#MS}
//{#VZ98} +{Insert} ^@
//{#VZIBM} +{Insert} {F11}
//{#MI}
//{#EMACS} {F11} +{Insert}
void TXAPI TXCMDBASE TXMODAL txSwitchViewMode(tx *text);
// ビューモード切り替え
// textがビューモードなら、通常モードに切り換えます。
// そうでなければ、これ以降開くテキストを
// ビューモードで開くかどうかを切り換えます。
//{#VZ} ^QV
void TXAPI TXCMDBASE TXMODAL txSwitchReadOnly(tx *text);
// リードオンリーモード切り替え
// textがビューモードなら、通常モードに切り換えます。
//{#VZ} ^KR
BOOL TXAPI txSetHigh(tx *text);
// 高速モードの設定
// テキストは表示せず、マウスカーソルを砂時計にする。
// npara/nlineを計算しないので注意してください。
// 高速モードでは、TXHIGHのAPIのみ使用可で、非常に高速動作します。
// これ以外のAPIを呼んだ場合、異常動作するので、絶対に呼ばないこと。
// 主なTXHIGHのAPIを示します。
// txInsertBuff/txCurInsertBuff/txDeleteBytes
// txInsert/txInsertChar/txCurInsertChar/txDeleteChar
// txClipCopy/txClipPaste
// txJumpAddress/txJumpParaTop
// txPrevPara/txNextPara
// txRightBytes/txRight
// txLeftBytes/txLeft
// txSearchEx
// txSwapNext/txSwapPrev
// txGetParaTop/txGetParaEnd/txGetLine/txGetLineRear
BOOL TXAPI txResetHigh(tx *text);
// 高速モードを解除します。
// カーソルをファイル先頭へ移動します。すべて計算しなおします。表示を更新します。
//1.99D 仕様変更
BOOL TXAPI txResetHighFlag(tx *text);
// 高速モードを解除します。
// カーソル位置は現在のまま。cury,curysizeのみ計算します。表示の更新はしません。
//1.99D 仕様変更
//{###設定}
//設定やキーカスタマイズなどを行います。
//APIにはキーカスタマイズサポートAPI、設定変更を反映するAPIなどがあります。
void TXAPI txFlush(tx *text);
// 設定の反映
// 「折り返し幅」、ウィンドウサイズなど
// 設定データの変更を反映させる。
// fUndisp中はtxFlushColorがされません。
//1.99C 仕様変更:ウィンドウサイズは変えないようにしました
void TXAPI txFlushWidth(tx *text);
// 「折り返し幅」の設定データの変更を反映させる
void TXAPI txFlushFont(tx *text);
// フォント指定を反映
void TXAPI txFlushTitle(tx *text);
// タイトル文字列指定を反映
//1.00Fで追加
DWORD TXAPI txFlushEx(tx* text,DWORD mode);
// Undisp中は一部うまく反映できない設定があるので注意してください。
//1.90で追加
#define TXFLUSHEX_TXFLUSHALL 1 // txFlush + ウィンドウサイズ
//{###ダイアログ}
DWORD TXAPI txofnGetSaveFileNameEx(tx *text,mchar *szfilename,mchar *szCaption,DWORD mode);
// txofnGetSaveFileNameと同じですが、modeで詳細動作を指定できます
// OKされたら0以外、Cancelされたら0を返します
// CR形式が指定されたら返り値のTXOFN_RETURNCODE_CRがON、
// LF形式が指定されたら返り値のTXOFN_RETURNCODE_LFがONになります
// modeは次の値を組み合わせて指定します
#define TXOFN_OK 0x00000001LU // OKされた
#define TXOFN_NOFILETYPE 0x00000002LU // ファイル形式を指定しない
#define TXOFN_NOREADONLY 0x00000004LU
#define TXOFN_NOFILER 0x00000008LU
#define TXOFN_REFER 0x00000010LU // 参照
#define TXOFN_FOCUSFILE 0x00000020LU //2.97A 970227 ファイルの選択がすぐできるようにする
#define TXOFN_READONLY 0x00000800LU // readonlyが指定された
#define TXOFN_VIEWMODE 0x00001000LU // viewmodeが指定された
#define TXOFN_NEWFILE 0x00002000LU //1.00F newfileが指定された
#define TXOFN_RETURNCODE_CR 0x00004000LU //1.97
#define TXOFN_RETURNCODE_LF 0x00008000LU //1.97
#define TXOFN_KC_JIS 0x00010000LU //1.97
#define TXOFN_KC_UNICODE 0x00020000LU //1.97
#define TXOFN_KC_EUC 0x00040000LU //1.97
#define TXOFN_WZTEXT_ARC 0x00080000LU //1.97 WZ圧縮文書ファイル?
#define TXOFN_TEXT_PLAIN 0x00100000LU //2.99 970316 プレーンテキストファイル?
#define TXOFN_TEXT_FORM 0x00200000LU //2.99 970316 整形テキストファイル?
#define TXOFN_TEXT_WZ 0x00400000LU //2.99 970316 装飾・体裁付きテキストファイル?
#define TXOFN_HTML_TEXT 0x00800000LU //2.99 970316 HTML文書ファイル?
DWORD TXAPI txofnGetOpenFileNameEx(tx *text,mchar *szfilename,mchar *szCaption,DWORD mode);
// txofnGetOpenFileNameと同じですが、modeで詳細動作を指定できます
// OKされたら0以外、Cancelされたら0を返します
// modeは次の値を組み合わせて指定します
// TXOFN_NOREADONLY 上書き禁止ボタンを付けない
// TXOFN_NOFILER ファイラーボタンを付けない
// TXOFN_FOCUSFILE ファイルの選択がすぐできるようにする
DWORD TXAPI txccGetColor(tx *text,COLORREF *rgbResult,LPTSTR sztitle);
// 色指定コモンダイアログ
// OKされたら0以外、Cancelされたら0を返します
//1.00F sztitleにはダイログボックスのタイトルを指定してください
// NULLを指定すると、デフォルトのタイトルを表示します
//{###ダイアログ作成(低レベル)}
BOOL TXAPI modelessdialogFreeEx(HWND hwnd,BOOL fDestoryHwnd);
// モードレスダイアログhwndを管理リストから外す。
// hwndをDestroyWindowするかどうか選択可
//2.99D 970330 new
BOOL TXAPI modelessdialogAdd(HWND hwnd,DWORD proc,BOOL fMacro);
// モードレスダイアログhwndを管理リストに追加
//2.99D 970330
#define modelessdialogFree(hwnd) modelessdialogFreeEx(hwnd,TRUE)
//{###メニュー操作}
BOOL TXAPI menuTx(HMENU hmenu,mchar *szmenuitem,mchar *sztxfunc);
// hmenuのメニューにTXAPIを呼び出す項目を追加する
// szmenuitem:項目名
// sztxfunc:TXAPI名(引数が<tx *text>のAPIのみ)またはマクロ名
// 例:menuTx(hmenu,"オープン(&O)...","txuiOpen");
// 例:menuTx(hmenu,"ランチャー","launcher.root");
//{###ワープロ機能}
//段落書式や文字装飾、印刷機能。
//[HTML不可]と表示されているコマンドはHTMLファイル編集では使えません。
//{###フィルタ・イベント}
//各種フィルタやイベントマクロコマンド。
//{###定形句・メモ}
//テンプレート機能、メモ機能などを提供します。
//{###ファイル名・パス名}
void TXAPI pathFullConfig(mchar szdst[CCHPATHNAME],mchar* szfilename);
// szfilename("WZ:\"相対)の絶対パスをszdstにセット
// これを使ってユーザ別設定に対応できます
//2.00Eで追加
//{###コマンド}
void TXCMDBASE txNull(tx *text);
// 何もしません
//1.00Cで追加
void TXAPI TXCMDBASE txkeyRepeat(tx *text);
// 前回キーで実行したコマンドを再実行
//2.99 970320 {#MS}で%{Enter}の割り当てをやめた
/*1.01A vz.keyで^OにtxkeyRepeatを割り当てていたのをやめ、^Oは空けた
/*1.00D ms.keyで{F4}に、txkeyRepeatと検索コマンドが重複して割り当てられていたのでtxkeyRepeatの割り当てを解除した*/
/*2.99 ms.keyの^Y割り当てを削除*/
//{###ファイル}
void TXAPI alltextToHist(void);
// オープンされているすべてのテキストのファイル名を、
// HIST_NULLにセット
BOOL TXAPI txAddFileHist(tx *text,mchar *szPath);
// ファイル名ヒストリにszPathを追加
//{###描画}
void TXAPI hdcDrawFrame(HDC hdc,RECT *r,UINT mode);
// hdcのrに3次元で枠を描きます
// modefButtonが真なら、ふくらんだボタン、偽ならへこんだボタンの枠を描きます
// DF_BUTTON ふくらんだボタン
// DF_PUSHEDBUTTON へこんだボタン
// DF_INFO ステータスバー内の枠
// DF_INFOWHITE ステータスバー内の枠(中身白)
// DF_BORDER 境界線で枠
// DF_ROUNDBORDER 境界線で角が丸い枠
// DF_BUTTONSHADOW ボタンの影
// DF_BUTTONFACE ボタンベース色
#define DF_PUSHEDBUTTON 0
#define DF_BUTTON 1
#define DF_BORDER 2
#define DF_INFO 3
#define DF_ROUNDBORDER 4
#define DF_BUTTONSHADOW 5
#define DF_BUTTONFACE 6
#define DF_INFOWHITE 7
//{###フラッシュ}
void TXAPIBASE txFlushCurSelect(tx *text);
// カーソルを範囲選択の終点位置にセットする
// 論理行単位選択中なら、論理行先頭へ
// 表示行単位選択中なら、表示行先頭へ
void TXAPI txFlushCury(tx *text);
// text->cur0から、text->cury,text->curysizeを計算し、セットする
void TXAPI txFlushCurysize(tx* text);
// カレント表示行のサイズを計算してtext->curysizeをセットする
//1.93で追加
void TXAPI txFlushLx(tx *text);
// text->cur,text->cur0,text->curyからtext->lxを計算し、セットする
void TXAPI tyFlush(tx* text);
// editmode == 2のときに、lcywindowをフラッシュ
//1.90
//{###編集}
BOOL TXAPI txSort(tx *text,SORTARG *arg);
// SORTARGでソートする。
//{###カーソル移動}
BOOL TXAPI txDownBuff(tx *text);
// lx,cur,cur0,cury,curysize,lineを次表示行の先頭にセットする
// 次行がない場合は0を返す
//1.00H で追加
BOOL TXAPI txUpBuff(tx *text);
// lx,cur,cur0,cury,curysize,lineを前表示行の先頭にセットする
// 前行がない場合は0を返す
//1.00H で追加
//{###印刷}
DWORD TXAPI txLpOp(TX* text,int op);
//1.90 text->lpについて操作を行う
#define TXLPOP_PRINT 1 // 印刷実行
#define TXLPOP_CALC_NPAGEALL 2 // 全ページ数計算
#define TXLPOP_GET_DEVMODE 4 // デバイスからDEVMODEをロードして、
// lp->hDevModeにセット
#define TXLPOP_SET_DEVMODE 5 // lp->hDevModeの内容をデバイスにセットする
#define TXLPOP_FLUSH 6 // TXLPOP_FLUSHDEVMODE + txFlush
// 用紙サイズの折り返しをテキストに反映
#define TXLPOP_FLUSHDEVMODE 7 // lpで指定された用紙サイズ等の内容を
// lp->hDevModeにセットし、プリンタにもセットする
#define TXLPOP_PRINTENTER 8 // 印刷モードに入る(複数回呼び出すと蓄積される)
#define TXLPOP_PRINTEXIT 9 // 印刷モードを終る
#define TXLPOP_GETDC 10 // プリンタHDCを得る
// HDCが不要になったらTXLPOP_RELEASEDCすること
#define TXLPOP_GETIC 11 // プリンタ情報コンテキストHDCを得る
// HDCが不要になったらTXLPOP_RELEASEICすること
#define TXLPOP_RELEASEDC 12 //2.00B TXLPOP_GETDCで得たhdcを開放
#define TXLPOP_RELEASEIC 13 //2.00B TXLPOP_GETICで得たhdcを開放
#define TXLPOP_PROMPT 14 //2.00E2 プリンタの設定ダイアログを表示
#define TXLPOP_CALC 15 //2.96 970203 マージン/行数計算実行
#define TXLPOP_PREVIEWENTER 16 //2.96 970207 プレビューモードに入る
#define TXLPOP_PREVIEWEXIT 17 //2.96 970207 プレビューモードを抜ける
#define TXLPOP_FLUSHPVRATE 18 //2.96A 970214 最適なpvRateを計算
#define TXLPOP_FLUSHSTYLE 19 //2.96A 970214 スタイルの変更による、lpx,lpcxClientのフラッシュ
DWORD TXAPI lpCap(LPRINT* lp,WORD fwCapability,LPSTR lpszOutput);
//1.91A
//{###設定}
DWORD TXAPI txConfigOp(tx* text,int op,LPVOID arg);
// 設定の読み書き
// 詳しくは_text.hのtxConfigOpを検索して見てください。
//1.92 NEW
///2.96 970206 番号付け替え
/// ALL,SHARE
#define TXCONFIGOP_CONFIGSAVE 1 // sh->config,configBase,configExt,configFileを登録する
#define TXCONFIGOP_CONFIGDELALL 2 // 上記の設定を初期化する
#define TXCONFIGOP_CONFIGSAVE2 3 // sh->config,configBase,configExtを登録する
#define TXCONFIGOP_SHARESAVE 4 // sh->configを登録する
#define TXCONFIGOP_SHARESAVE_NET 5 //2.00E2 fNetShareXXXのみ登録
#define TXCONFIGOP_SHARESAVE_PART 6 //2.95 970128
// sh->configのうち、
// offsetからsizeバイトのみを登録する
// offsetはsh->config基準
// arg = MAKELONG(WORD offset,WORD size)
#define TXCONFIGOP_TXINITCONFIG 7 //2.99B 970322 txInitConfig(text)
// EXT/FILE
#define TXCONFIGOP_EXTGETNAME 100 // textの設定の名前を取得する
// 設定がなければ"標準"を返す
//2.00E2 argに名前を取得する文字列バッファ
// mchar szcfgname[CCHNAME]を指定
#define TXCONFIGOP_EXTGETNAMEPRIM 101// textの設定の名前を取得する
// 設定がなくてもそのまま返す
//2.00E2 argに名前を取得する文字列バッファ
// mchar szcfgname[CCHNAME]を指定
#define TXCONFIGOP_EXTENUM 102 // COMBOBOXに設定の一覧を取得する
#define TXCONFIGOP_EXTENUMLB 103 // LISTBOXに設定の一覧を取得する
#define TXCONFIGOP_EXTLOAD 104 // text->configExt,configFileを読み出す
#define TXCONFIGOP_EXTSETUPDISPSTYLE 105// text->width=text->twidth[text->dispmodestyle]; etc
#define TXCONFIGOP_EXTSETDISPSTYLE 106// text->twidth[text->dispmodestyle]=text->width; etc
#define TXCONFIGOP_EXTSAVE 107 // text->configExt,configFileを登録する
// textの設定がない場合は"標準"に登録
#define TXCONFIGOP_EXTSAVEPRIM 108 // text->configExt,configFileを名前を付けて登録する
#define TXCONFIGOP_EXTSETALL 109 // 全ての設定をtextと同じにする
#define TXCONFIGOP_EXTDEL 110 // textの設定を削除する
#define TXCONFIGOP_EXTDELALL 111 // 全ての設定を初期化する
#define TXCONFIGOP_EXTNAME_SAVE 112
// argに指定した名前で登録
#define TXCONFIGOP_EXTNAME_SEARCH 113
// argに指定した名前の設定があるか?
#define TXCONFIGOP_EXTSAVE_LPSTYLE 114//2.00E text->szlpstyleのみ登録する
#define TXCONFIGOP_EXTNAME_DEL 115 // argの設定を削除する
#define TXCONFIGOP_EXTGRP_ADD 116 //2.00E2 textの拡張子をargのグループに追加
#define TXCONFIGOP_EXTGRP_DEL 117 //2.00E2 argのグループを削除
#define TXCONFIGOP_EXTNAME_LOAD 118 //2.00E4
// argに指定した名前の設定をロード
#define TXCONFIGOP_EXTSAVE_PART 119 //2.95 970128
// text->configFile,configExt,configBase
// のうち、offsetからsizeバイトのみ登録する
// offsetはtext->configTop基準
// arg = MAKELONG(WORD offset,WORD size)
// configBaseをまたがった登録はできない
#define TXCONFIGOP_EXTSAVE_FONTSTYLE 120//2.96 970206 text->tFontstyleのみ登録する
#define TXCONFIGOP_SETMYCOLORDEFAULT 121//2.99C 970326 text->fMyColorを共通の設定にする
#define TXCONFIGOP_EXTGETEXIST 122 //3.00A4 970509 argに指定した設定があるかどうか返す
// LPRINT
#define TXCONFIGOP_PRINTGETCOUNT 200 // 印刷スタイル数を返す
#define TXCONFIGOP_PRINTENUM 201 // COMBOBOXに印刷スタイルの一覧を取得する
#define TXCONFIGOP_PRINTREAD 202 // text->lpにargの印刷スタイルを読込む
#define TXCONFIGOP_PRINTWRITE 203 // argの印刷スタイルをtext->lpとして登録
#define TXCONFIGOP_PRINTSEARCH 204 // 未実装
#define TXCONFIGOP_PRINTDEL 205 //2.00B argの印刷スタイルを削除する
#define TXCONFIGOP_PRINTDELALL 206 //2.00B 印刷スタイルを初期化する
#define TXCONFIGOP_PRINTEXIST 207 //2.00E2 argの印刷スタイルが存在するかどうか返す
#define TXCONFIGOP_PRINTENUMLB 208 //2.96 970210 LISTBOXに印刷スタイルの一覧を取得する
// TX-TEXTCONFIG
#define TXCONFIGOP_TEXTISEXIST 300 // <TX-TEXTCONFIG>があるか調べて返す
#define TXCONFIGOP_TEXTDEL 301 // 削除する
#define TXCONFIGOP_TEXTREAD 302 // text構造体に反映する
#define TXCONFIGOP_TEXTWRITE 303 // text構造体の設定を<TX-TEXTCONFIG>に反映する
//{###クリップボード、テキストスタック}
DWORD TXAPI txClipOp(TX* text,int op,HCLIP hclip,DWORD arg);
//1.99C
#define TXCLIPOP_GETCOUNT 1 // hclip内のデータ数を返す
#define TXCLIPOP_GETSIZE 2 //2.92
// hclipのスタックトップのデータのバイト数を返す
// argにistackを指定できる
//{#ENDAPI}
//##設定の部分保存
//2.95 970128
#define txcfgSavePart(text,var) \
txConfigOp(text,TXCONFIGOP_EXTSAVE_PART,MAKELONG((LPBYTE)&text->var - &text->configTop,sizeof(text->var)))
// varにはtext構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
#define txcfgSavePartArray(text,var) \
txConfigOp(text,TXCONFIGOP_EXTSAVE_PART,MAKELONG((LPBYTE)text->var - &text->configTop,sizeof(text->var)))
// 配列メンバ保存用
// varにはtext構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
#define shcfgSavePart(var) \
txConfigOp(textf,TXCONFIGOP_SHARESAVE_PART,MAKELONG((LPBYTE)&textf->share->config.var - (LPBYTE)&textf->share->config,sizeof(textf->share->config.var)))
// varにはsh->config構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
#define shcfgSavePartArray(var) \
txConfigOp(textf,TXCONFIGOP_SHARESAVE_PART,MAKELONG((LPBYTE)textf->share->config.var - (LPBYTE)&textf->share->config,sizeof(textf->share->config.var)))
// 配列メンバ保存用
// varにはsh->config構造体のメンバのうち、configTopからconfigEndまでのどれかを指定する
//##menu
#define TXMENUITEM_N 30
typedef struct {
mchar szcmd[CCHWORD]; // コマンド名
// "__sepa"などの場合もある
mchar szcaption[CCHWORD]; // 表示
} TXMENUITEM;
typedef struct {
mchar szname[CCHWORD]; // メニューの名前
TXMENUITEM tmenuitem[TXMENUITEM_N];
int nmenuitem;
BYTE fNew:1; // 新規? for custmize
} TXMENU;
DWORD TXAPI txmenuOp(int op,mchar* szname,HMENU hmenu);
//2.00E2 xxOP_NEW,xxOP_DELETE廃止
#define TXMENUOP_OPEN 1 // メニュー設定ファイルをオープン
// オープン中はTXMENUOP_CLOSE以外のopは実行できない
#define TXMENUOP_CLOSE 2 // メニュー設定ファイルをクローズ
#define TXMENUOP_LOAD 3 // hmenuにsznameのメニューをロードする
#define TXMENUOP_SAVE 4 // hmenuのメニューをsznameの名前を付けて登録する
#define TXMENUOP_DEL 5 // sznameのメニューを削除する
#define TXMENUOP_SEARCH 6 // sznameのメニューがあるか返す
#define TXMENUOP_LOADEX 7 // szname : TXMENU* txmenu
// txmenu->sznameをtxmenuにロードする
#define TXMENUOP_SAVEEX 8 // szname : TXMENU* txmenu
// txmenuをtxmenu->sznameとしてセーブする
#define TXKEYOP_OPEN 100 // キー設定ファイルをオープン
// オープン中はTXKEYOP_CLOSE以外のopは実行できない
#define TXKEYOP_CLOSE 101 // キー設定ファイルをクローズ
#define TXKEYOP_DEL 102 // sznameのキー定義を削除する
#define TXTOOLBAROP_OPEN 201 // ツールバー設定ファイルをオープン
// オープン中はTXTOOLBAROP_CLOSE以外のopは実行できない
#define TXTOOLBAROP_CLOSE 202 // ツールバー設定ファイルをクローズ
#define TXTOOLBAROP_DEL 203 // sznameのツールバーを削除する
DWORD TXAPI txOp(TX* text,int op,LPARAM wParam,LPARAM lParam);
//2.90 その他、オペレーション
// wParam lParam function
#define TXOP_EHSTART 10 // void void //2.90 eh start
#define TXOP_EHEND 11 // void void //2.90 eh end
#define TXOP_LYTOY 20 // ly void //2.90 lyのy座標を返す
#define TXOP_LYGETCY 21 // ly void //2.90 lyの行高を返す
#define TXOP_UNDOCLEAR 22 // void void //2.90 undoClear(text)
#define TXOP_IMESTRINSERT 23 // void szstr //2.90 imeStrInsert(text,szstr)
#define TXOP_SHORTCUTRESOLVE 30 // szshort szfull //2.90
#define TXOP_SHORTCUTGETARG 31 // szshort szarg //2.90
#define TXOP_ISOPEN 32 // szfilename void //2.92
#define TXOP_WZEXEC 33 // szfilename szarg//2.92
#define TXOP_TXJUMPURL 34 // void void //2.92
#define TXOP_TXCLOSESUB 35 // void void //2.93
#define TXOP_TXMULTI 36 // void void //2.94 970123
#define TXOP_TXFROMHWNDBASE 37 // hwnd void //2.96 970205 text=NULLで良い
#define TXOP_PRINT 38 // str void //2.96 970209
#define TXOP_PRINTF 39 // format arg //2.96 970209
#define TXOP_TABLEFLUSHALL 40 // fForce void //2.96 970210
#define TXOP_TAGFROMSTR 41 // pTag void //2.97 970221 text=NULL
#define TXOP_WRITERETURNEX 42 // mode void //2.97 970224 mode=1:BR
#define TXOP_PLUGTAB_CURPARA 43 // void void //2.97 970224 カーソル位置に一番近いPLUGTABを返す
// カーソル論理行にPLUGTABがなければNULLを返す
#define TXOP_PLUGTAB_RIGHT 44 // void void //2.97 970224
// カーソル位置から次のPLUGTABを検索。
// 現在論理行内だけで検索
// 見つけたかどうか返す。
#define TXOP_PLUGTAB_FLUSHCUR 45// void void // カーソル行のPLUGTABをflush
#define TXOP_FLUSH_NPARALETTERHEADER 46 // void void//2.97A 970227 レターヘッダの行数を数え直す
#define TXOP_TAGTOSTR 47 // tag void //2.97A 970301
#define TXOP_GETADDRESSCURSCREEN 48//void void //2.97A 970302
#define TXOP_SETLYCURSCREEN 49 // adr void //2.97A 970302
#define TXOP_INITSCROLLBAR 50 // void void //2.98 970308
#define TXOP_PATHGETEXTGROUP 51 // szext szGroup[CCHWORD] //2.99 970318
#define TXOP_TXFORMCHAR 52 // str offset //2.99C 970325
#define TXOP_TXISCHARTOP 53 // offset void //2.99C 970325
#define TXOP_TXLOADATR2 54 // arg void //2.99D 970329
typedef struct {
HFILE hf;
TX* txatr;
UINT cbMem;
BOOL fArc;
} TXLOADATR2ARG;
#define TXOP_WORDINIT 55 // void void //2.99D 970329
#define TXOP_TXSWAP1 56 // void void //2.99D 970329
#define TXOP_TXSWAP2 57 // void void //2.99D 970329
#define TXOP_MTSETCONTEXT 58 // i void //2.99D 970401
#define TXOP_MTREADCONTEXT 59 // i void //2.99D 970401
#define TXOP_SBDISPEDITMODE 60 // void void //3.00A 970430
#define TXOP_GETPARAFRONTEX 61 // buff sizebuff//3.00A2 970505
#define TXOP_GETPARAREAREX 62 // buff sizebuff//3.00A2 970505
#define TXOP_GETCHARTYPE 63 // p void //3.00B1 970522
#define CT_SPACE 2 // (0x00-0x20),全角スペース(0x8140)
#define CT_SYMBOL 3 // '$','_'を除く英記号
// 全角記号(0x8152-0x815Bを除く)
#define CT_KATA 4 // 半角カタカナ
#define CT_HIRA 5 // 全角ひらがな
#define CT_KANJI 6 // 上記以外の全角文字
#define CT_CHAR 7 // 上記以外の半角文字
#define CT_LF 8
#define CT_EOF 9
//2.94 970117 OLE
#define TXOP_OBJECTINSERT 100 // void void // オブジェクトの挿入
#define TXOP_OBJECTDELETE 101 // PLUGOLE* void // オブジェクトの削除(未完成)
#define TXOP_OBJECTCOPY 102 // PLUGOLE* void // オブジェクトのコピー
#define TXOP_OBJECTPASTE 103 // void void // オブジェクトのペースト
//2.95 970129 text local var
#define TXOP_VARSET 200 // szName data // データのセット
#define TXOP_VARGET 201 // szName void // データのゲット
#define TXOP_VARISEXIST 202 // szName void // データがあるかどうか
//3.00B TXOP_VARSETNOGARBAGE 203// szName fNoGarbage 廃止
//2.96A 970214 txmenuOpからこちらへ移動
#define TXOP_KEYLOADNAME 300 // szName void // textのキー定義をsznameからロードしてセット
//2.96A 970214 旧TXKEYOP_LOAD
#define TXOP_TOOLBARLOADNAME 301// szName void // textのツールバー定義をsznameからロードしてセット
//2.96A 970214 旧TXTOOLBAROP_LOAD
//2.97 970219 plugatr
#define TXOP_PLUG_NEWEX 400 // modePlug cbEx
#define TXOP_PLUG_NEW 401 // modePlug void
#define TXOP_PLUG_DELETE 402 // typ
#define TXOP_PLUG_GETTYP 403 // plugatr
#define TXOP_PLUG_READ 404 // typ
#define TXOP_PLUG_GETMODEPLUG 405// typ
#define TXOP_PLUG_GETSIZE 406 // plugatr
//2.90 TX->macro オペレーション
// arg1 arg2 function
#define MACROOP_OPENURL 1 // szUrl void //
#define MACROOP_OPENMAIL 2 // szMail void //
#define MACROOP_TXSEARCHLISTEX 3 // szFind arg //
typedef struct {
SEARCHMODE searchmode;
mchar* szReplace;
int cchReplace;
} TXSEARCHLISTARG;
//3.00A2 970505 MACROOP_REPLACEREPORT,REPLACEREPORTARG廃止
//##_share.h
#define MAXPROFILE 20
typedef struct __BINCOMPATIBLE__ {
BYTE lchFileName; // パス名の長さ
mchar szfilename[CCHPATHNAME]; // パス名
// window pos
SIGNED_WORD window_left;
SIGNED_WORD window_top;
SIGNED_WORD window_right;
SIGNED_WORD window_bottom;
// current position
NPARA npara; // 行番号
WORD ich; // 段落先頭からのバイト数
BYTE ly; // カーソルy座標
IFILE address; // カーソル位置
//
WORD editmode:2; // editmode
WORD dispstylemode:2; // 表示スタイル
WORD fOutline:1; // アウトラインウィンドウ
WORD freserved:11;
#if 1//3.00A3 970508
mchar tszlpstyle[DISPSTYLEMODE_N][CCHLPSTYLE]; // 印刷スタイル名
IFILE mark[MAXMARK]; // マーク位置
mchar reserved[80];
#else
mchar szlpstyle[CCHLPSTYLE]; // 印刷スタイル名
// mark
IFILE mark[MAXMARK]; // マーク位置
mchar tszmark[MAXMARK][CCHMARK];// マーク文字列
#endif
} PROFILE;
// ヒストリハンドル
typedef HANDLETX HHIST;
#define DEFAULT_SIZEHIST 512 // デフォルト ヒストリサイズ
#define HIST_NULL 0 // 内部ワーク用
#define HIST_FILE ((HHIST)1) // ファイル名
#define HIST_SEARCH ((HHIST)2) // 検索文字列
#define HIST_DIALOGSTR ((HHIST)3) // テキストボックスで入力された文字列(旧置換リスト)
#define HIST_STR ((HHIST)4) // 文字列
#define HIST_NUM ((HHIST)5) // 数値
#define HIST_PATH ((HHIST)6) // パス文字列
// 以下、user用
#define HIST_USER ((HHIST)7)
#define HIST_USER2 ((HHIST)8)
// ハンドルの個数
#define MAXHIST 9
//1.00Fで追加...オープンされているクリップボード構造体
#if 1//2.00E
typedef struct {
BYTE HUGE *hpClip; // TS/クリップボードのメモリブロックのアクセスアドレス
BYTE HUGE *hptopClip; // スタックトップの先頭アドレス
DWORD cbClip; // スタックトップのデータサイズ
DWORD curClip; // clipReadParaのアクセス中のオフセット
int nClipKind; // 範囲選択モード(CLIP_CHAR etc)
HGLOBAL hmemClip; // クリップボードに出力するデータハンドル
WORD fOpen:1; // オープン中?
WORD fClipWrite:1; // 書き込みでオープン中?
WORD fClipWz:1; // クリップボードをReadモードでオープンした場合、
// WZがペーストしたものかどうかがセットされる。
WORD freserved:13; // 予約済み
} OPENCLIP;
#else
typedef struct {
BOOL fOpen; // オープン中?
HGLOBAL hmemClip; // クリップボードに出力するデータハンドル
BYTE H]GE *hpClip; // TS/クリップボードのメモリブロックのアクセスアドレス
BYTE HUGE *hptopClip; // スタックトップの先頭アドレス
DWORD cbClip; // スタックトップのデータサイズ
DWORD curClip; // clipReadParaのアクセス中のオフセット
int nClipKind; // 範囲選択モード(CLIP_CHAR etc)
int fClipWrite; // 書き込みでオープン中?
BOOL fClipWz; // クリップボードをReadモードでオープンした場合、
// WZがペーストしたものかどうかがセットされる。
} OPENCLIP;
#endif
//2.00Eで佃加
typedef struct {
#ifndef __FLAT__
HGLOBAL hmemClip; // TSメモリハンドル
#endif
DWORD cbStackTop; // TS内有効データバイト数
DWORD cbClip; // TSメモリハンドルのメモリブロックバイト数
DWORD cbClipMax; // TS最大バイト数
// WZ16では、65535を越えないこと
// このサイズを越えるブロック(大ブロック)を
// クリップすることもできるが、
// それ以前の内容は全て捨てる。
// 大ブロックの後に新しくクリップを追加すると、
// 大ブロックは捨てられる
} TSCONTEXT;
#define CCHENVPATH (145*2) // 145:WZ16のCCHPATHNAME
#define DIRECTORYATR_N 3
typedef struct {
mchar szDirectory[CCHENVPATH]; // パス列
BYTE kc; // 漢字コード
BYTE cr; // 改行コード
} DIRECTORYATR;
//1.91A 設定(share)
// 設定内容はバイナリファイルで保存する。
typedef struct __BINCOMPATIBLE__ {
DWORD sizestruct;
// file
BBOOL fenvcheckfiletime; //1.01A Save時にfiletimeをチェック
BBOOL fCheckFiletimeActive; //1.95 アクティブ時にfiletimeをチェック
BYTE modeenvfileshare; //1.01A 排他制御モード
#define FILESHARE_DENY_WRITE 1 // 書き込み禁止
#define FILESHARE_EXCLUSIVE 2 // 読み書き禁止
BBOOL fenvstayalways; //1.00H4 常駐?
BBOOL fenvpathsearch; //1.00H4 パス検索を行う?
BBOOL fNoOpenHigh; //2.93 高速オープンしない?
BBOOL fSaveHistory; // ヒストリをファイルに保存?
BBOOL fSaveProfile; // プロファイルをファイルに保存?
// ヒストリバッファのサイズ
WORD sizeHistSearch; // 検索文字列履歴
WORD sizeHistFile; // オープンファイル名履歴
WORD sizeHistStr; // 文字列履歴
WORD sizeHistNum; // 数値入力履歴
// file
BBOOL fFilePreview; //2.99D 970402 ファイルプレビューを行う?
//
BBOOL fKcAuto; //1.97 漢字コードを自動判別する?
BBOOL fConfirmHtmlChange; //1.99E HTMLファイルのタグの書き換えを確認する?
BBOOL fHtmlSaveJisLf; //2.00E4 HTMLファイルはJIS,LFでセーブ?
BYTE modeHtml; //2.97A 970302
#define HTML_STD 0 // 標準
#define HTML_IE 1 // IE拡張タグも使用
#define HTML_NN 2 // NN拡張タグも使用
#define HTML_IENN 3 //2.99C 970326 IE拡張,NN拡張タグも使用
BBOOL modeHtmlOutTable; //2.99 970319
// 0:<TR><TD>...<TD>...形式
// 1:インデント形式
BYTE modeHtmlFilenameCase; //2.99C 970323 HTMLで図やリンク先ファイル名の大文字小文字を制御できるようにした
#define FNC_NONE 0 // そのまま
#define FNC_TOLOWER 1 // 小文字へ
#define FNC_TOUPPER 2 // 大文字へ
BBOOL fHtmlConvertReturnToSpace;//3.00A3 970508 HTMLテキスト->体裁で改行を空白に変換するか指定できるようにした
BYTE reservedFile[20];
// display
BBOOL fenvwinextap; // winextap
BBOOL fenvctl3d; // ctl3d
BBOOL fenvsmallfont; // smallfont
WORD cxenvbuttonsize; // toolbar buttonsize
WORD cyenvbuttonsize; // toolbar buttonsize
BYTE cyenvtoolbarint; // toolbar cyint
BYTE fEnglish; //1.99E 英語モード
BBOOL fAtok9; //2.00B ATOK9対応
BBOOL fSpecifyFontsizeByDot; //2.96 970205 フォントサイズをドット単位で指定する?
BBOOL fNoCursorBlink; //2.98 970304 カーソルのブリンクをしない?
BBOOL fDispLineEdit; //2.98 970304 変更行を保持し、その行の行番号を特別に表示?
BBOOL fScrollbarProp; //2.99D 970329 (未完成)プロポーショナルスクロールバーを使用?
BYTE reservedDisp[24];
// szenv
mchar szenvtxpath[CCHENVPATH]; // txpath
mchar szenvpath[CCHENVPATH]; // path
mchar szenvext[CCHENVPATH]; // ext
mchar szenvkey[CCHNAME]; // keyfile
mchar szenvinclude[2][CCHWORD]; //1.99C include
// WZ16/32で個別に指定可能
// TX-PCODE16でコンパイルすると拡張子は1*
// TX-PCODE32でコンパイルすると拡張子は3*
// になる
#if 1//2.00E2
mchar szPathTxpcode[2][CCHWORD];//1.99C TX-PCODE出力先(未完成)
// 元szExtVerticalなので、".txv"が
// セットされている点に注意!
mchar szExtGroup[370]; //2.00B 拡張子のグルーピング
//2.00E2 メンバーオフセット変更し、サイズ拡大
// szExtGroupの設定がなされていても
// szExtGroup[0]が0になり初期化できるように
// オフセットを変更した
// メーラ
mchar szMailer[120]; //2.90 メーラーのコマンドパス
WORD idMailer; //2.90 メーラーの種別(MAIL_XXX)
//2.98 970311
BYTE vkEhStart; // EHを開始するキー
BYTE vkImeOn; // IMEをONするキー
BYTE vkImeOff; // IMEをOFFするキー
BYTE vkImeSw; // IMEをON/OFFするキー
BBOOL fEnableEh; // EH有効?
BBOOL fEnableEhMail; // EH-Mail有効?
BBOOL fEnableImeOn; // IMEをON有効?
BBOOL fEnableImeOff; // IMEをOFF有効?
BBOOL fEnableImeSw; // IMEをON/OFF有効?
WORD wtmEhmailStartWait; // メーラのフックする前にms待つ
WORD wtmEhmailSendWait; //2.99B 970322 メール送信完了までms待つ
BBOOL fHookReadonly; //3.00A2 970503 ES_READONLYもメーラフック、テキストキャプチャーする?
BYTE reservedSzenv[52];
// ネットワーク
WORD fNetShareMenu:1; //2.00E2 メニューを共有
WORD fNetShareKey:1; //2.00E2 キーファイルを共有
WORD fNetShareToolbar:1; //2.00E2 ツールバーを共有
WORD fNetShareLpstyle:1; //2.00E2 印刷スタイルを共有
WORD fNetShareInifile:1; //2.00E2 INIファイルを共有
WORD fReserved:11;
#else
mchar szExtVertical[CCHWORD]; //1.99C 縦書きの拡張子(不要)(未使用)
mchar szPathTxpcode[2][CCHWORD];//1.99C TX-PCODE出力先(未完成)
mchar szExtGroup[CCHENVPATH]; //2.00B 拡張子のグルーピング
BYTE reservedSzenv[190];
#endif
// TX-C
mchar szmacrotest[CCHWORD]; // テストマクロ名
BBOOL fsave_at_macrotest; // テストマクロ実行時にテキストを保存?
TXCOPTION configTxc; // copt
BYTE reservedTxc[30];
//2.95 970128 TXCONFIGSHARE構造体サイズ拡大
mchar szmacroopenpost[30]; // オープン後イベントマクロ
// 禁則
mchar szKinsokuTop[200]; // 行頭禁則文字(行の先頭にきてはいけない文字)
mchar szKinsokuEnd[100]; // 行末禁則文字(行の末尾にきてはいけない文字)
mchar szKinsokuKuten[100]; // 句読点
BBOOL fNoMemorySearchOption; //2.95 970131 単語毎に検索オプションを記憶しない
// 検索
BBOOL fSearchSetFont; //2.97 970225
// 検索ダイアログの[検索文字列]と[置換文字列]のフォントを
// テキストの表示に用いているフォントと同じにする?
BBOOL fSearchButton; //2.97 970225
// モードレス検索/置換ダイアログで、
// 上へ/下へボタンで検索ができるようにする?
BBOOL fSearchGetText; //2.97 970225
// 範囲選択しないで検索/置換ダイアログを開いた時に、
// カーソル位置の文字列を取り込む?
//2.99 970313 フォルダ毎の漢字コード、改行コード指定。
DIRECTORYATR tDirAtr[DIRECTORYATR_N];
BBOOL fSearchModeless; //2.99A 970320 txkeySearchで、モードレス検索ダイアログを使用する?
mchar szPathHtmlBase[CCHENVPATH];//2.99B 970321 HTMLのリンク用ベースディレクトリ
BBOOL fImeStatusHold; //2.99C 970323 WZのウィンドウを切り替えたときもIMEのON/OFF状態を変化しない?
BBOOL fNoUpDownAtClipMouse; //2.99C 970323 マウスによる選択中の上下左右キーの特別扱いをしない
BYTE configDisuse; //2.99C 970327 for txcfg.c 廃止されたオプションのセット用
//3.00B1 970613 viewmodeの設定
BBOOL viewmodeModeDispUnder; // (未完成)
#define VIEWMODE_OFF 0 // OFF
#define VIEWMODE_ON 1 // ON
#define VIEWMODE_FILE 2 // 文書の設定に従う
BBOOL viewmodeModeDispToolbar;
BBOOL viewmodeModeDispRuler;
BBOOL viewmodeModeDispStatusbar;
BBOOL viewmodeModeDispFunctionKey;
// (未完成)viewmodeの専用の色
BBOOL viewmodefMyColor;
COLORREF viewmodeRgbText;
COLORREF viewmodeRgbBack;
COLORREF viewmodeRgbBlockText;
COLORREF viewmodeRgbBlock;
COLORREF viewmodeRgbNline;
COLORREF viewmodeRgbUnderline;
COLORREF viewmodeRgbControl;
COLORREF viewmodeRgbURL;
BYTE reserved[836];
} TXCONFIGSHARE;
#define NCLIPATR 4 //2.00E 3->4
//1.99C
typedef struct {
HCLIP hclipText; // 関連付けられたテキストのクリップ
DWORD cbText; // テキストのサイズ
DWORD serial; // シリアル番号
} HCLIPATRINFO;
//1.99C
typedef struct {
HWND hwnd; // hwndbase
DWORD modeProcess; // 起動中のWZプロセスのモード
#define WZPROCESS_STAYALWAYS 0x0002 // 常駐プロセス(WZ Iconなど)
#define WZPROCESS_EDITORLIKE 0x0008 //1.01A キャプションが"WZ Editor"でなくても、txSwitchWindowで切り替えられる
#define WZPROCESS_TXE 0x0010 //2.94 970120 TXEかどうか?
#define WZPROCESS_NOOPENHIGH 0x0020 //2.94 970122 このプロセスで高速オープン不可
RECT rectOriginal; // [ウィンドウ]-[元に戻す]用
WORD fWndMoving:1; //2.00E
WORD fCloseEvery:1; //2.94 970124 CloseEvery実行済み?
WORD fReserved:14;
mchar szTxeName[16]; //2.94 970122 TXEマルチオープンチェック用
HWND ehHwnd; //2.98 970310 eh?
HWND ehHwndBase; //2.99D 970401
#ifdef __FLAT__
BYTE reserved[2];
#else
BYTE reserved[4];
#endif
} WZPROCESS;
// WZ16では基本的に、SHARE構造体メンバ以外を指すポインタは持ってはいけない。
// ポインタの実体があるインスタンスが終了したら、駄目になる。
// WZ32では、ポインタを持ってはいけない。
// (SHARE構造体メンバも指すものも含む。こうゆうのはオフセットで持つこと)
// MapViewOfFileで、プロセスごとにSHAREが割り付けられるアドレスが異なるため。
typedef struct tagSHARE {
//2.99C 970327 異なるバージョンのWZが重複起動しないように
WORD wzID; // WZ ID
WORD wzVersion; // WZ version
// ヒストリ
UINT sizehist[MAXHIST]; // ヒストリバッファのサイズを指定(デフォルト:512)
STRBLK hist[MAXHIST]; // ヒストリ
// 複数のインスタンスで共有するので、
// ヒストリ用のHSTRBLKの実体は、shareで定義する。
// shareで定義しないと、ヒストリ用のHSTRBLKは
// インスタンス毎に持たれてしまい、異常動作する
#if 1//2.94 text構造体増加に仮対応
BYTE buffhist[20000]; // データバッファ
#else
BYTE buffhist[24000]; // データバッファ
#endif
// WZ環境設定
BBOOL fenvload; // WZ.DATロード済み?
mchar envbuff[2048]; // WZ.DAT内容バッファ
#ifdef __FLAT__
int tenvoffset[10]; // [2]以上のこと
#else
mchar *szenvextensions; // [Extensions]
mchar *szenvviewers; // [Viewer]
#endif
// デフォルトの環境設定。
// インストール時にセットされる。
// wzshare.cfgが存在しない時は、この情報を元に共通設定を作成する。
mchar env_key[CCHNAME];
int env_color;
int env_pc98;
mchar env_serial[CCHNAME]; // serial
mchar env_username[CCHNAME]; // username
// 共通設定
TXCONFIGSHARE config; // configShare
FONTSTYLE fontstyleText; // FONTTX_TEXTの標準設定
TX textBase; // configBase
// 標準のconfigExt,configFile
// 自動スクロール
int iScrollSpeed; // 初期値3
BOOL fScrollShift; // [Shift]が押されている?
// WZプロセスの管理
BOOL ffirstinitend; // 最初のインスタンスの初期化が終わった
#ifdef __FLAT__
#define MAXOPEN 100 // 最大プロセス数
#else
#define MAXOPEN 50 // 最大プロセス数
#endif
//2.93 仕様変更。高速オープン対応
// text1以外のtext->hwndbaseが
// 追加される事があります。
int nOpen; // 起動中のWZプロセス数
WZPROCESS tWzprocess[MAXOPEN]; //1.99C 起動中のWZプロセスのモード
// 起動された順序で入っている
// 有効な要素は、[0]から[nOpen-1]まで
// ファイル
BOOL fViewMode; // これから開くテキストをビューモードで開く
mchar szlastmask[CCHWORD]; // 最後に選択されたマスク
// プロジェクト
BBOOL fProjectOpening; // プロジェクトオープン実行中?
mchar szproject[CCHPATHNAME]; // カレントプロジェクト名
// 検索
// txuiSearchGet用
mchar szSearch[CCHWORD];
int lchSearch;
// text cmp
LPBYTE lpCmp;
IBUFF lchCmp;
//
REPLACEARGEX replace; // 置換再実行用
//2.96 970201 全WZを対象検索/置換用
HWND hwndSearchAllTextStart; //1.01A SEARCH_ALLTEXT開始ウィンドウ
// これがHWND_BROADCASTなら開始ウィンドウ閉じられた事を示す
REPLACEARGEX argSearchAll; //2.96 970201 実行中かどうか
// 実行中の場合、その内容
// 実行中でない場合、szFind[0]は0になる
DWORD nReplaced; //2.96 970201 SEARCH_ALLTEXTでの置換個数
WORD fResultSearchAlltext:2; // SEARCH_ALLTEXTの結果
// 1:一周した 2:ファイルが閉じられたので中断した
WORD fReservedSearch:14;
// キーボードマクロ
BOOL fMacroRec; // 記録中?
BOOL fMacroPlay; // 再生中?
#define MAXKEYMACRO 10 // 登録できるマクロ数
#define SIZETKEYMACRO 1024 // マクロのサイズ
BYTE tmacro[MAXKEYMACRO][SIZETKEYMACRO];
// マクロ記録バッファ
BYTE imacroring; // next record macro no.(ring)
BYTE imacrowrite; // write macro no.
BYTE *pmacrowrite; // write pointer on tmacro
BYTE *pmacroread; // read pointer on tmacro
BOOL fmacroinsertstr; // insertなら複数の文字を文字列にまとめる
// TX-C
BYTE modeTxc; //1.00H3 macroCompile時のTX-Cのモード
// 0:default,1:TX-C16,2:TX-C32
// ウィンドウ
int modeSplit; // 画面分割モード('C'/'V'/'H'),初期値'C'
HWND hwndFocus; // フォーカスをもったhwndtext(なければNULL)
// 標準出力(stdout)
HWND hwndStdout; // "stdout"ウィンドウハンドル
HWND reservedHwnd; //2.96 970209 廃止
BYTE fNoStdout; //2.96 970210 0以外なら出力しない
BYTE fReservedStdout;
// color
COLORREF rgbText;
COLORREF rgbBack;
COLORREF rgbBlock;
COLORREF rgbControl;
// クリップボード
//2.00E レイアウト変更
// WindowsクリップボードとTSの共通情報
OPENCLIP openclip[NCLIP]; // オープンされているクリップボード,TSのコンテキストを保持
// 1.00F クリップボード、TS複数同時オープンサポート
// 従来は、HCLIP_WINオープン中にHCLIP_TSなどを
// オープンできなかったが、
// オープンできるようにした。
TSCONTEXT tscontext[NCLIPINTERNAL-2]; // -2:HCLIP_PRIVATE,HCLIP_TXATRP
// TSコンテキスト
// TS(テキストスタック HCLIP_TS,HCLIP_DELSTR etc)コンテキスト
HCLIPATRINFO thclipatr[NCLIPATR];
// HCLIP_TXATRxコンテキスト
HCLIP hclipLastCopy; //2.90 HCLIP_WINとHCLIP_TSどちらに最後にデータがセットされたか?
DWORD serialClip; // クリップデータシリアル番号
// TEXTとTXATRの対応付け用
DWORD serialClipWin; // クリップボードのシリアル番号
BYTE reservedSC[2]; //2.00E 2バイトは確保しておくこと!
// Windowsクリップボード情報
#ifdef __FLAT__
int nClipKindCb; // WZがクリップボードにペーストしたテキストデータ
// の範囲選択モードを保持
#endif
// IME
#ifndef __FLAT__
#ifdef __IME_H
LPIMESTRUCT lpIme; // IMESTRUCT
#else
LPVOID lpIme;
#endif
#endif
// キー定義
BOOL fKeyInited; // 標準のキー定義初期化済み?
KEY key; // 標準のキー定義
mchar tszfkey[FKEY_NKIND][FKEY_NKEY][FKEY_SIZE];
// 標準のファンクションキーの内容
// WZCMD:マクロコマンド変換テーブル
// 文字列で指定される外部コマンドを登録して数値に変換するためのテーブル
#define CCHMACRONAME 512 // 指定できる最大マクロ名
#define CCHMACROCONTENT 8192// マクロ名文字列バッファサイズ
mchar tMacroNameBuff[CCHMACROCONTENT];
// マクロ名文字列バッファ
UINT lchMacroNameBuff; // tMacroNameBuff内、文字列バイト数
MACRONAME tMacroName[CCHMACRONAME]; // マクロ名テーブル
int nMacroName; // テーブル数
// WZ汎用共有メモリ
#ifdef __FLAT__
#define WZMEM_MAX 30 // 最大数
BYTE tWzmemHandle[WZMEM_MAX]; // ハンドル
#endif
// ネットワーク
BBOOL env_network; //2.00E ネットワーク?
WORD fSpecUserName:1; //2.00E2 ユーザ名が指定された?
WORD fReservedNet:15; //2.00E2
mchar szUserName[30]; //2.00E 現在のユーザ名
// szUserName[0] != 0なら、ユーザ毎に設定保存されます。
// 次のファイルがユーザ毎に、wzディレクトリの
// ユーザ名サブディレクトリの下に作られます
// wz.bar,wz.key,wz.mnu,wze.mnu
// wz.cfg,wzshare.cfg,wzprint.cfg
// wz.ini,wz.tpj
// *.bmp(ツールバーのビットマップデータキャッシュファイル)
// profWzDirNew,profWzIniNew,dialogSetIniEx
// でアクセスされるiniファイル
// 以上のファイルがユーザ名サブディレクトリに存在しない時は
// ルートのファイルがコピーされて使用されます。
// なお、permanent変数を使ったマクロは再コンパイルしないと
// permanent変数の内容がルートのwz.iniに保存されます。
// 音声化
BBOOL env_speak; //2.00E 音声化
#ifdef __FLAT__
//2.90 eh
WORD fehDoing:1; //2.90 eh実行中
WORD fehSendMailDoing:1; //2.99 970315 「ファイル|メール送信」からのメーラ起動中
WORD fehReserved:14;
int neh; //2.90 eh中のWZ数
DWORD wtmSendMailStart; //2.99 970315 「ファイル|メール送信」実行開始時間
#endif
// status
WORD fImeWasOn:1; //2.99C 970323 fImeStatusHold用
WORD fStatusReserved:15; //2.99C 970323
BYTE fNoPathSearchMacroTxcfgs;//2.99D 970328
// TX-Cでは構造体は64KBまでしか扱えない。
// WZ32では素のSHARE構造体のサイズは64KBを超えるので、
// マクロで参照しないメンバは公開しない
#ifndef __TXC__
PROFILE profile[MAXPROFILE]; // プロファイル
#endif
// 拡張してサイズが大きくなっても構わない
} SHARE;
//##ヒストリ
//1.00F histXXX 実装変更 histXXXを使用してるマクロバイナリも配布すること
// WZ32では、histXXXで返される文字列ポインタはプロセス間で共有できない。
// MapViewOfFileで、プロセスごとにSHAREが割り付けられるアドレスが異なるため。
#define histGetCount(h) sbGetCount(&text1->share->hist[(int)(h)])
// ヒストリハンドルh内の文字列数を返す
#define histRead(h,i) sbRead(&text1->share->hist[(int)(h)],i)
// istr番目の文字列を返す
// istr = 0..histGetCount(h)-1
#define histAdd(h,szstr) sbAddHist(&text1->share->hist[(int)(h)],szstr)
// ヒストリにstrを追加する
#define histSearchPrev(h,szstr,istr)\
sbiSearchPrev(&text1->share->hist[(int)(h)],szstr,istr)
// istr-1から0までszstrを検索する
// 見つからなければ-1を返す
#define histSearchNext(h,szstr,istr)\
sbiSearchNext(&text1->share->hist[(int)(h)],szstr,istr)
// i+1からn-1までstrを検索する
// 見つからなければ-1を返す
#define histDelAll(h) sbDelAll(&text1->share->hist[(int)(h)])
#define histDelI(h,i) sbDelI(&text1->share->hist[(int)(h)],i)
// ヒストリハンドルをHSTRBLKに変換する
#define histToStrblk(h) (&text1->share->hist[(int)(h)])
//1.01A _share.h内のTXAPIもapidbに追加
//{#API}
//{###プロセス管理}
HWND TXAPI textRead(int i);
// WZのテキストウィンドウのi番目のhwndbaseを返す
// iは0からshare->nOpen-1
//{###クリップボード、テキストスタック}
BOOL TXAPI clipDeleteTop(HCLIP hclip);
// クリップボード(テキストスタック)のトップを削除する
BOOL TXAPI clipClear(HCLIP hclip);
// クリップボードの内容をクリアする
int TXAPI clipGetKind(HCLIP hclip);
// hclipの表層の範囲選択モードを返す
int TXAPI clipIsWz(void);
// クリップボードのデータはWZがペーストしたものかどうか返す
//{###プロジェクト}
BOOL TXAPI histLoad(void);
BOOL TXAPI histSave(void);
//{###排他制御}
#define LOCK_SZSEARCH 0
#define LOCK_WZPROCESS 1
#define LOCK_HIST 2
#define LOCK_STDOUT 3
#define LOCK_PROJECT 4
#define LOCK_CLIP 5 // clip内部処理トランザクション
#define LOCK_CLIPTS 6 //2.00E HCLIP_TS使用中
#define LOCK_CLIPWORK2 7 //2.00E HCLIP_WORK2使用中
#define LOCK_CLIPWORK3 8 //2.00E HCLIP_WORK3使用中
#define LOCK_CLIPTXATR 9 //1.99C HCLIP_TXATR? トランザクション
#define LOCK_KBMACRO 10
#define LOCK_MTCMD 11
#define LOCK_MENU 12
#define LOCK_SENDMESSAGE 13
#define LOCK_PROFILE 14
#define LOCK_HWZMEM 15
#define LOCK_SEARCHALL 16 //1.01A
#define LOCK_CONFIG 17 //1.91A
//2.00E 旧名 いずれ廃止
#define LOCK_CLIP1 6
#define LOCK_CLIP2 7
#define LOCK_CLIP3 8
#ifdef __FLAT__
void TXAPI wzlock(int no);
void TXAPI wzunlock(int no);
#else
#define wzlock(no)
#define wzunlock(no)
#endif
//{###WZ共有メモリ}
//WZの全プロセスからアクセスできる、動的割り当て可能なメモリを提供します
//WZ32では各WZ窓のアドレス空間は独立なので、SendMessageなどで他のWZ窓に
//文字列などをそのまま渡すことは出来ません(WZ16ではできます)。
//WZ共有メモリAPIを使えば、可能になります。
//次は、WZ共有メモリを使ってWZ窓間で文字列を交換する例です。
//この例のようにプログラムすれば、WZ16でもそのまま同じ様に動作します。
//(送り側のプログラム例)
// HWZMEM hmem = wzmemNew();
// WZMEM wzmem; // WZ共有メモリAPI用のワーク変数の定義
// mchar* pmem = wzmemAlloc(hmem,&wzmem,1000);
// strcpy(pmem,"WZ共有メモリですよ");
// SendMessage(hwndDestination,WM_XXXX,0,(LPARAM)hmem);// hmemはlParamを使って渡す
// wzmemClose(&wzmem);
// wzmemDelete(hmem);
//(受け側のプログラム例)
// static txstr mymem;
// ...
// case WM_XXXX: {
// WZMEM wzmem;
// LPVOID pmem = wzmemOpen(lParam,&wzmem);
// strcpy(mymem,pmem);//自分のメモリ空間のメモリにコピー
// wzmemClose(&wzmem);
// return TRUE;
// }
//受け側のプログラムでは、returnで送り側に処理を返すまでの間に
//ユーザインターフェースを伴う処理(メニューやダイアログを出す)
//はしてはいけません。
//このような処理をするプログラムをWZ16で動かすとハングすることがあります。
typedef int HWZMEM; // ハンドルタイプ
#define HWZMEM_ERROR -1 // エラーハンドル
typedef struct {
HANDLE handle;
LPBYTE mem;
} WZMEM;
#ifndef __FLAT__
#define wzmemNew() memAlloc(100)
#define wzmemAlloc(h,wzmem,size) GlobalReAllocPtr(h,size,0)
#define wzmemOpen(h,wzmem) (h)
#define wzmemClose(wzmem)
#define wzmemDelete(h) memFree(h)
#else
HWZMEM TXAPI wzmemNew(void);
// WZ共有メモリハンドルを新しく確保して返します。
// HWZMEM_ERRORが返されたらエラーです
//1.01Aで追加
LPVOID TXAPI wzmemAlloc(HWZMEM h,WZMEM *wzmem,DWORD size);
// WZ共有メモリハンドルに、sizeバイトのWZ共有メモリを割り当てます。
// wzmemには、WZMEM変数のアドレスを渡して下さい。
//1.01Aで追加
LPVOID TXAPI wzmemOpen(HWZMEM h,WZMEM *wzmem);
// WZ共有メモリハンドルに割り当てられているWZ共有メモリのポインタを返します。
// wzmemには、WZMEM変数のアドレスを渡して下さい。
//1.01Aで追加
void TXAPI wzmemClose(WZMEM *wzmem);
// wzmemOpenし、WZ共有メモリのアクセスを終えたら、
// 必ずwzmemCloseを呼び出して下さい。
//1.01Aで追加
void TXAPI wzmemDelete(HWZMEM h);
// WZ共有メモリハンドルを使い終わったら、必ずwzmemDeleteを呼び出して下さい
//1.01Aで追加
#endif
//{#ENDAPI}
//##_gene.h
// 世代管理TXAPI
typedef struct {
IGENE curgene; // 現在の世代番号
TIME curtime; // 現在の世代の保存された時間
// 以下、世代リスト情報受け取り用 for edit.c
IGENE nList; // 世代数
IGENE maxList; // リストを受け取れる最大数
TIME *tTime; // 保存時間のポインタ(TIME tTime[maxgene])
mchar* tszComment; //1.97 (mchar tszComment[maxgene][CCHWORD])
} GENELIST;
BOOL TXAPI txGeneMakeList(tx *text,GENELIST *arg);
BOOL TXAPI txGeneJump(tx *text,IGENE igene);
BOOL TXAPI txGeneDelete(tx *text,IGENE igene);
BOOL TXAPI txGeneOpen(tx *text,IGENE igene);
BOOL TXAPI txuiGeneLoad(tx *text,IGENE igene);
void TXAPI txUndoNewest(tx *text);
//##_term.h
typedef struct {
DWORD BaudRate; // ボーレート(110-256000)
int nPort; // ポート番号(1...)
WORD sizeReciveBuff;// 受信バッファサイズ(1024...)
WORD sizeSendBuff; // 送信バッファサイズ(1024...)
int retRecive; // 受信改行コード(RET_CR,RET_LF,RET_CRLF)
int retSend; // 送信改行コード(RET_CR,RET_LF,RET_CRLF)
#define RET_CR 0
#define RET_LF 1
#define RET_CRLF 2
int flow; // フロー制御モード(FLOW_NONE,FLOW_HARD,FLOW_SOFT)
#define FLOW_NONE 0
#define FLOW_HARD 1
#define FLOW_SOFT 2
BOOL fKanjiBs2; // 漢字に対するBSは2回送られてくる?
BYTE phone; // 電話回線の種類
#define PHONE_TONE 0
#define PHONE_PULSE 1
#define PHONE_NONE 3
BYTE parity; // パリティー
#ifndef PARITY_NONE
#define PARITY_NONE 0
#define PARITY_ODD 1
#define PARITY_EVEN 2
#endif
BYTE ByteSize; // データ長(7,8)
BYTE StopBit; // ストップビット数
#define STOPBIT_ONE 0
#define STOPBIT_ONE5 1
#define STOPBIT_TWO 2
mchar *szmodeminitcmd; // モデム初期化コマンド
} TERMCONFIG;
///#define TERM_SIZESENDBUFF 2048 //2.00C
///#define TERM_SIZERECEIVEBUFF 2048 //2.00C
#define TERM_SIZESENDBUFF 4096 //2.00C
#define TERM_SIZERECEIVEBUFF 4096 //2.00C
int TXAPI _termOpen(TX *text,TERMCONFIG* config);
int TXAPI _termWriteStr(UCHAR *szBuff,DWORD tmTimeout);
void TXAPI _termRead(void);//2.00B
void TXAPI _termClose(void);
//##end
#ifdef __TXC__
}
extern "TX" {
extern TX* text; // フォーカス(キャレット)を持つテキスト
extern TX* textf; // textと同じ
extern TX* text1; // 表テキスト
extern TX* text2; // 裏テキスト
extern TX* textTarget; //2.94 970121 __wndproctext/__wndprocbaseの対象text
}
// for txstr
// friendをつけないと、関数のプロトタイプを定義したいのに、
// ()によるコンストラクタ呼び出しと見なされ、静的変数として定義されてしまう。
extern "stdlib" {
// 以下、dstに文字列をセットしてdstを返す
friend txstr _strmid(txstr dst,mchar *str,int sizeoffset,int size);
friend txstr _strleft(txstr dst,mchar *str,int sizeleft);
friend txstr _inttostr(txstr dst,int num);
friend txstr _chartostr(txstr dst,int ch);
//{#API}
//{###文字列操作}
mchar* _txapibase strright(mchar* str,int sizeright);
// 文字列strの右側部分sizeleftの文字列を返します
mchar* _txapibase strrear(mchar* str,int sizeleft);
// 文字列strの、sizeleftの文字より後ろの文字列を返します
//{#ENDAPI}
}
// standard library macro
#include "dialoga.txh"
#include "window.txh"
#include "stdlib.txh"
#include "cmd.txh"
#include "file.txh"
#include "help.txh"
#include "system.txh"
#include "macro.txh"//1.97
//2.96 970209 stdoutOpen,redirect,redirectadd廃止
#define iswz100AB() (!macroExist("std.getversion"))
#pragma TXCEX.
#endif//__TXC__
//2.92 safety strcpy op.
// szdstがmcharの配列の場合のみ使用可能。mcharへのポインタの場合は不可能
#define sstrcpy(szdst,szsrc) strcpymax(szdst,szsrc,cchof(szdst))
#define sstrcpylen(szdst,szsrc,lch) strcpylenmax(szdst,szsrc,lch,cchof(szdst))
//3.00A2 970503 sstrcat new
#define sstrcat(szdst,szsrc) strcpymax(szdst + strlen(szdst),szsrc,cchof(szdst) - strlen(szdst))
#endif//__TEXT_H