home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2000 January
/
VPR0001A.ISO
/
APUPDATE
/
VC
/
TXC206
/
txc206.lzh
/
_WZ.H
< prev
next >
Wrap
C/C++ Source or Header
|
1999-10-15
|
305KB
|
7,223 lines
/*
WZ EDITOR 4.0 / Pocket WZ EDITOR 2.0
TX object define
Start 1997年 7月22日
Refresh 1999年 9月25日
UNICODEを基本とする。ただしテキスト処理はANSIを使う。
WinAPIはUNICODE版を呼び出す。
Win95用のANSI版は、UNICODE版のWinAPIが実装されてないので、
自分でUNICODE版WinAPIラッパ(関数名:WinAPIの末尾に"_W"を付ける)
を作成しこれを呼び出す
WindowsCE : UNICODE only
WindowsNT : UNICODE / ANSI(UNICODEに内部で変換している)
Windows95 : ANSI only
一番軽く動作したいWindowsCEがUNICODEなのと、将来的にはWindows98は
WindowsNTに吸収される様なので、UNICODEベースとした。
*/
#ifndef __WZ_H
#define __WZ_H
//{###構造体/定数/基本
//##基本
#define __DEV__ 01 // 開発中?
#define __HARDCOPY__ 0 // 画面ハードコピー機能を使う?
#define __BETA__ 0 // ベータ版特有機能。製品では外す
#define __TRYAL__ 0 // 試用評価版 //WZ4.00Be 990512
// CE用は常にリリース
#ifdef _WIN32_WCE
#undef __DEV__
#define __DEV__ 0
#endif
// Win32 Release用
#ifdef WZ_RELEASE
#undef __DEV__
#define __DEV__ 0
#endif
// Memory debug
#if __DEV__
#define __MEMORYDEBUG__ UNIX // malloc/freeチェックを行う? //WZ4.00Bm 990929
#endif
// 汎用ライブラリとして使用
#if defined(GENERAL) || defined(TXC_DLL) || defined(SETUP) || defined(WZUP)
#undef GENERAL
#define GENERAL 1
#else
#undef GENERAL
#define GENERAL 0
#endif
//##WZ/PWZ基本定義
#define __WZ__ 0x4002 // __VERSION__ WZのバージョン番号
// 0x4000 WZ4.00
// 0x4001 WZ4.00A
// 0x4002 WZ4.00B
#define __PWZ__ 0x2003 // __VERSION__ PWZのバージョン番号
// 0x2000 PWZ2.00/2.00A
// 0x2002 PWZ2.05
// 0x2003 PWZ2.06
#define __XZ__ 0x0003 // __VERSION__ XZのバージョン情報
// 0x1000 XZ1.00
#define __TXSTRUCT__ 107 // __VERSION__ text,mailerなどの構造体のバージョン番号(WZ/PWZ/XZ共通)
//WZ4.00Ac 990206 101
//WZ4.00Ba 990304 101->102
//WZ4.00Bj 990823 102->103
//WZ4.00Bl 990909 103->104
//WZ4.00Bn 991007 104->105
//WZ4.00Bo 991011 105->106
//WZ4.00Bp 991014 106->107
//WCE1.00A 971103
// _WIN32_WCE WinCE版
// WINDOWSCE WinCE版
// POCKETWZ Pocket版? WZ4ではない
// WZ4 WZ4版? Pocketではない
// NEWWZ PWZ or WZ4。WZ1-3ではない。
// UNIX UNIX+XWindow版 //WZ4.00Be 990504
// PSPC Palm-size PC //WZ4.00Be 990508
#ifdef PSPC
#undef PSPC
#define PSPC 1
#else
#define PSPC 0
#endif
#ifdef _WIN32_WCE
#if 0 // dummy PSPC test
#undef PSPC
#define PSPC 1
#endif
#endif
#ifdef UNIX
#undef UNIX
#define UNIX 1 //WZ4.00Bm 990927 [1]にdefineし直し。
#else
#define UNIX 0
#endif
#define LINUX 0
#define WINDOWSCE211 0 //WZ4.00Be 990405
#define WINDOWSCE 0
#define WS_HVSCROLL (WS_HSCROLL|WS_VSCROLL)
#if UNIX
#define LINUX 1 // LINUX依存部分
#define POCKETWZ 0
#define WZ4 1
#define WINDOWSCE2 0
#define WS_TITLEBAR WS_OVERLAPPEDWINDOW
#define WS_EX_STANDARD WS_EX_CLIENTEDGE //WZ4.00Bl 990919
#define WS_BORDER_STANDARD 0 //WZ4.00Bm 990927
#define WS_HVSCROLL_UNIX WS_HVSCROLL //WZ4.00Bm 990928
#define SHELLEXECUTEINFOW SHELLEXECUTEINFO
#define MYSTATUSBAR 0
#define WZFUNC_PRINT 0 // 印刷機能を使う?
#define WZFUNC_PROP 0 // プロポーショナルフォントを使う?
#define WZFUNC_BITMAP 0 // 図の表示機能を使う?
#define WZFUNC_TMLHIGH 0 // マルチフォント等高度なTML機能を使う?
#define WZFUNC_CONV 0 // ファイルコンバータ機能を使う?
#ifdef WZFUNC_EMAIL
#define WZFUNC_EMAIL 1 // E-Mail機能を使う?
#else
#define WZFUNC_EMAIL 0 // E-Mail機能を使う?
#endif
#define WZFUNC_NIFTY 0 // WZ NIFTY/TERMを使う? //XZ0.2 990630
#define WZFUNC_TXC 0 // TX-Cを使う?
#define WZFUNC_TEXTCFG 0 // 設定をテキストファイルで保持?
#define WZFUNC_TEXTCFGBIN 0 //WZ3.90N 981201 設定をテキストファイルにも出力。テキストファイルの設定が更新されていたらそれを読み込む。
#define WZFUNC_OLECLIP 0 // OLEクリップボードを使う?
#define WZFUNC_OLEDD 0 // OLEドラッグアンドドロップを使う?
#define WZFUNC_UIREFER 0 // 「最近参照した位置に移動」を使う? //WZ3.90J 981108 「前位置に戻る」に置き換え
#define WZFUNC_CONVERTTEXT 1// 「テキストの変換」機能を使う? //WZ3.90K 981114
#define WZFUNC_TABBEAM 1 // 「タブ桁揃え」機能を使う? //WZ3.90K 981114
// これをONにすると従来の「タブ体裁」の機能はOFFになる。
#define WZFUNC_HTMLHIGH 0 // タグのアトリビュート・縮小表示等、高度なHTML機能を使う? //WZ4.00Ab 990117
#define WZFUNC_HEADLINECONVERT 1 // 見出しの変換・見出しスタイルを使う? //WZ4.00Ab 990118
#define WZFUNC_VERTICAL 0 // 縦書きあり? //XZ0.1 990525
#elif defined(_WIN32_WCE) // この_WIN32_WCEはWINDOWSCEに変更しないこと
#undef WINDOWSCE
#define WINDOWSCE 1
#if _WIN32_WCE >= 200
#define WINDOWSCE1 0
#define WINDOWSCE2 1 // WindowsCE2.0
#if _WIN32_WCE >= 211 //WZ4.00Be 990405
#undef WINDOWSCE211
#define WINDOWSCE211 1 // WindowsCE2.11
#define SWP_NOREDRAW 0 // SWP_NOREDRAWは定義されていない
#endif
#else
#define WINDOWSCE1 1
#define WINDOWSCE2 0
#endif
#define POCKETWZ 1
#define WZ4 0
#define WS_TITLEBAR WS_VISIBLE
#define WS_EX_STANDARD 0 //WZ4.00Bl 990919
#define WS_BORDER_STANDARD WS_BORDER //WZ4.00Bm 990927
#define WS_HVSCROLL_UNIX 0 //WZ4.00Bm 990928
#define SHELLEXECUTEINFOW SHELLEXECUTEINFO
#define MYSTATUSBAR 1
#define WZFUNC_PRINT 0 // 印刷機能を使う?
#define WZFUNC_PROP 1 // プロポーショナルフォントを使う?
#define WZFUNC_BITMAP 0 // 図の表示機能を使う?
#define WZFUNC_TMLHIGH 0 // マルチフォント等高度なTML機能を使う?
#define WZFUNC_CONV 0 // ファイルコンバータ機能を使う?
#define WZFUNC_EMAIL 1 // E-Mail機能を使う?
#define WZFUNC_NIFTY 1 // WZ NIFTY/TERMを使う? //XZ0.2 990630
#define WZFUNC_TXC 1 // TX-Cを使う?
#define WZFUNC_TEXTCFG 0 // 設定をテキストファイルで保持?
#define WZFUNC_TEXTCFGBIN 0 //WZ3.90N 981201 設定をテキストファイルにも出力。テキストファイルの設定が更新されていたらそれを読み込む。
#define WZFUNC_OLECLIP 0 // OLEクリップボードを使う?
#define WZFUNC_OLEDD 0 // OLEドラッグアンドドロップを使う?
#define WZFUNC_UIREFER 0 // 「最近参照した位置に移動」を使う? //WZ3.90J 981108 「前位置に戻る」に置き換え
#define WZFUNC_CONVERTTEXT 1// 「テキストの変換」機能を使う? //WZ3.90K 981114
#define WZFUNC_TABBEAM 1 // 「タブ桁揃え」機能を使う? //WZ3.90K 981114
// これをONにすると従来の「タブ体裁」の機能はOFFになる。
#define WZFUNC_HTMLHIGH 0 // タグのアトリビュート・縮小表示等、高度なHTML機能を使う? //WZ4.00Ab 990117
#define WZFUNC_HEADLINECONVERT 1 // 見出しの変換・見出しスタイルを使う? //WZ4.00Ab 990118
#define WZFUNC_VERTICAL 0 // 縦書きあり? //XZ0.1 990525
#else
#define WINDOWSCE 0
#define WINDOWSCE1 0
#define WINDOWSCE2 0
#define POCKETWZ 0
#define WZ4 1
#define WS_TITLEBAR WS_OVERLAPPEDWINDOW
#define WS_EX_STANDARD (_fwin40 * WS_EX_CLIENTEDGE) //WZ4.00Bl 990919
#define WS_BORDER_STANDARD (!_fwin40 * WS_BORDER) //WZ4.00Bm 990927
#define WS_HVSCROLL_UNIX 0 //WZ4.00Bm 990928
#define MYSTATUSBAR 0
#define WZFUNC_PRINT 1 // 印刷機能を使う?
#define WZFUNC_PROP 1 // プロポーショナルフォントを使う?
// 使わない場合はWZFUNC_PRINTも0にすること。
#define WZFUNC_BITMAP 1 // 図の表示機能を使う?
#define WZFUNC_TMLHIGH 1 // マルチフォント等高度なTML機能を使う?
#define WZFUNC_CONV 1 // ファイルコンバータ機能を使う?
#define WZFUNC_EMAIL 1 // E-Mail機能を使う?
#define WZFUNC_NIFTY 1 // WZ NIFTY/TERMを使う? //XZ0.2 990630
#define WZFUNC_TXC 1 // TX-Cを使う?
#define WZFUNC_TEXTCFG 0 // 設定をテキストファイルで保持?
//WZ3.90N 981201 やはり1割のオーバヘッドがあるので、WZFUNC_TEXTCFGBINに変更した。
#define WZFUNC_TEXTCFGBIN 1 //WZ3.90N 981201 WZ EDITORを閉じたときにバイナリ設定ファイルが更新されていたらテキスト設定ファイルに出力
// WZ EDITORを開いたときに、テキスト設定ファイルが更新されていたらそれを読み込む。
// WZFUNC_TEXTCFGも1にしておくこと。
#define WZFUNC_OLECLIP 1 // OLEクリップボードを使う?
// ONにすると、TMLでコピーして他アプリにペーストしたとき素のテキストとしてペーストされる。
// OFFにすると、TMLタグが付いてペーストされる。
#define WZFUNC_OLEDD 1 // OLEドラッグアンドドロップを使う?
#define WZFUNC_UIREFER 0 // 「最近参照した位置に移動」を使う? //WZ3.90J 981108 「前位置に戻る」に置き換え
#define WZFUNC_CONVERTTEXT 1// 「テキストの変換」機能を使う? //WZ3.90K 981114
#define WZFUNC_TABBEAM 1 // 「タブ桁揃え」機能を使う? //WZ3.90K 981114
// これをONにすると従来の「タブ体裁」の機能はOFFになる。
#define WZFUNC_HTMLHIGH 1 // タグのアトリビュート・縮小表示等、高度なHTML機能を使う? //WZ4.00Ab 990117
#define WZFUNC_HEADLINECONVERT 1 // 見出しの変換・見出しスタイルを使う? //WZ4.00Ab 990118
#define WZFUNC_VERTICAL 1 // 縦書きあり? //XZ0.1 990525
#endif
#define WZFUNC_MEMOEDIT 0 // MEMOEDITモードを使う? //WZ3.90L 981124 とりあえず使わない。
#define NEWWZ 1 // POCKETWZ|WZ4
#if __TRYAL__
#undef WZFUNC_TXC
#define WZFUNC_TXC 0
#endif
#if !UNIX && !WINDOWSCE
#define WINDOWSMT 1 // Windows95,98,NT,2000...
#else
#define WINDOWSMT 0
#endif
#if defined(ARM) //WZ4.00Be 990418 for ARM
#define memmove(d,s,c) tymemmove(d,s,c);
void* tymemmove(void* dest,void* src,size_t n);
#endif
//##以上、RCでも有効
#ifndef RC_INVOKED
//##TX-Cの基本定義
#ifdef __TXC__
// LPSTR等が<char>なので、漢字を扱うのが不便。
// そこで<char=unsigned char>とする
#pragma char=unsigned
#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型
#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))
#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;
typedef UINT size_t;
#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 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;
#define __stdcall _pascal
#define __import
#define WINAPI __stdcall __import
#define CALLBACK __stdcall
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(HMENU);
typedef int HFILE;
#define HFILE_ERROR ((HFILE)-1)
DECLARE_HANDLE(HGLOBAL);
DECLARE_HANDLE(HLOCAL); //WCE1.01 980313
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;
typedef int (FAR WINAPI *FARPROC)();
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
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;
// 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
// Windowsからコールバックされる関数
#define TXCALLBACK __stdcall
//WCE1.01 980313
typedef WORD WCHAR;
typedef short SHORT;
#define LPSECURITY_ATTRIBUTES LPVOID
typedef WORD* LPWSTR;
typedef const WORD* LPCWSTR;
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// for TXE Menu実現
#define IDM_MAINMENU_TXE 30025 // _idm.hでも定義。
#endif // __TXC__
//##基本定義
#define EXPORT __declspec(dllexport)
//#define EXPORT extern "C" __declspec(dllexport) // VC++でエラーになった
#if !UNIX //XZ0.1 990524 staticのwcharの配列をL"abc"のようにして定義する場合はTWCHAR("abc")の様に記述する for UNIX
#define TWCHAR(quote) L##quote
#endif
typedef unsigned char mchar; // ShiftJIS char
typedef WCHAR wchar; // UNICODE char
typedef mchar* pmchar; //WCE1.01 980314
typedef BYTE BBOOL;
typedef long TIME;
typedef struct tagtx tx;
typedef struct tagtx TX;
typedef signed char SIGNED_BYTE;
typedef signed short SIGNED_WORD;
typedef signed long SIGNED_DWORD;
typedef WORD TXCHAR; // 漢字・CR+LFも含めた文字列
typedef BYTE FBOOL; // 0か1のみのフラグ(WORD flag:1)と交換可
typedef BYTE CBOOL; // ++,--するフラグ(WORD flag:2以上)と交換可
typedef UINT IDM; // IDM_xxx //WZ3.90I 981102 new
//WCE1.01 980224 TCHARは、Windowsで定義されている。WCHAR or char
#ifdef UNICODE
typedef WCHAR tchar;
#define vsprintf_W wvsprintf
#define sprintf_W wsprintf
#define tstrlen wstrlen
#define tstrcpy wstrcpy
#define tstricmp wstricmp
#define tcchof wcchof
#define tsprintf wsprintf
#define tatol watol
#define tstrchr wstrchr
#define CreateFile_W CreateFile
#define DeleteFile_W DeleteFile
#define CreateFileMapping_W CreateFileMapping
#define CreateMutex_W CreateMutex
#define RemoveDirectory_W RemoveDirectory
#define CreateDirectory_W CreateDirectory
#define CopyFile_W CopyFile
#define MoveFile_W MoveFile
#define SetFileAttributes_W SetFileAttributes
#define SetWindowText_W SetWindowText
#define GetWindowText_W GetWindowText
#define SetDlgItemText_W SetDlgItemText
#define GetDlgItemText_W GetDlgItemText
#define ListBox_AddString_W ListBox_AddString
#define ListBox_FindStringExact_W ListBox_FindStringExact
#define ComboBox_AddString_W ComboBox_AddString
#define FindFirstFile_W FindFirstFile
#define FindNextFile_W FindNextFile
#define CreateWindow_W CreateWindow
#define CreateWindowEx_W CreateWindowEx
#define RegisterClass_W RegisterClass
#define GetClassName_W GetClassName
#define DrawText_W DrawText
#define ShellExecuteEx_W ShellExecuteEx
#define LoadLibrary_W LoadLibrary
#else
typedef unsigned char tchar;
#define vsprintf_A wvsprintf
#define sprintf_A wsprintf
#define tstrlen strlen
#define tstrcpy strcpy
#define tstricmp stricmp
#define tcchof cchof
#define tsprintf wsprintf
#define tatol atol
#define tstrchr strchr
#define SetWindowText_A SetWindowText
#define GetWindowText_A GetWindowText
#define SetDlgItemText_A SetDlgItemText
#define GetDlgItemText_A GetDlgItemText
#define ListBox_AddString_A ListBox_AddString
#define ListBox_FindStringExact_A ListBox_FindStringExact
#define ComboBox_AddString_A ComboBox_AddString
#define TextOut_A TextOut
#define CreateFile_A CreateFile
#define LoadLibrary_A LoadLibrary
#define myGetProcAddress_A GetProcAddress
#endif
#define rectCx(r) ((r)->right - (r)->left)
#define rectCy(r) ((r)->bottom - (r)->top)
#define ScreenToClientRect(hwnd,rect) MapWindowPoints(NULL,hwnd,(POINT*)(rect),2)
#define ClientToScreenRect(hwnd,rect) MapWindowPoints(hwnd,NULL,(POINT*)(rect),2)
#define rectDec(r) {(r)->left++;(r)->top++;(r)->right--;(r)->bottom--;}
#define rectInc(r) {(r)->left--;(r)->top--;(r)->right++;(r)->bottom++;}
#if WINDOWSCE
#define _hbrushBtnFace GetStockObject(WHITE_BRUSH)
//WCE1.01 980315 CE2.0でもないみたい
#define LPtoDP(hdc,p,n)
#define DPtoLP(hdc,p,n)
//WZ4.00Ab 990112
#if WINDOWSCE1 //WZ4.00Ac 990204 CE1.0でIDM_COPYができなかった。CE1.0ではLMEM_MOVEABLEが使えないみたい。
#define GMEM_MOVEABLE LMEM_FIXED
#else
#define GMEM_MOVEABLE LMEM_MOVEABLE
#endif
#define GMEM_FIXED LMEM_FIXED //WZ4.00Ac 990204
#define GMEM_SHARE 0
#define GlobalLock LocalLock
#define GlobalSize LocalSize
#define GlobalUnlock LocalUnlock
#define GlobalReAlloc LocalReAlloc
#define GlobalAlloc LocalAlloc
#define GlobalFree LocalFree
#else
extern HPEN _hpenBtnShadow; // Windowsシステム色のペン
extern HPEN _hpenBtnShine;
extern HPEN _hpenWindowFrame;
extern HPEN _hpenBtnFace;
extern HBRUSH _hbrushBtnFace; // Windowsシステム色のブラシ
#endif
#define TEXTCHAR_UNICODE 0 // 0:TEXTBUFFはTC_SJIS/TC_SINGLEBYTE
// 1:TEXTBUFFはTC_UNICODE
#define TB_EUC UNIX // TEXTBUFFはTC_EUCかどうか //XZ0.1 990528
#define CHAR_TAB 0x09 //
#define CHAR_CR 0x0D //
#define CHAR_LF 0x0A //
#define CHAR_FF 0x0C // 改ページは行を改めるが改段ではない
// CHAR_LFとは異なる
#define CHAR_EOF 0x1A //
#define CHAR_ESC 0x1B //
#define CHAR_CRLF 0x0D0AU //
#if TB_EUC
#define CHAR_JSPACE 0xA1A1 //WZ4.00Bj 990830 new
#else
#define CHAR_JSPACE 0x8140 //WCE1.01 980504 全角空白
#endif
// EUC
#define CHAR_EUC_KANA 0x8E //XZ0.1 990528
//WZ3.90N 981130 半角カナの定義
// VC++で"/J"オプションを付けないと、'ー'は-80になってしまい、どうにもならない。
//WZ3.90N 981130 この影響で、ーが半角に変換できなかった。
#define CHAR_KANA_ONBIKI 0xB0 // 'ー'
#define CHAR_KANA_NAKAGURO 0xA5 // '・'
#define CHAR_KANA_DAKUTEN 0xDE // '゙'
#define CHAR_KANA_HANDAKUTEN 0xDF // '゚'
#define _huge
#define TXAPI
#define TXAPIBASE
#define TXCMD
#define TXCMDBASE
#define TXHIGH
#define TXHIGH_COND // 条件付きTXHIGH //WZ3.90I 981029 new
#define TXHIGH_THROUGH
#define TXUI
#define TXGAPED
#define INTERNAL
#define __CCJAPAN__ // 日本語Cコンパイラ依存部分
#define __BYTEORDERLOW__ // バイト順(low-high)に依存部分
#define __SINGLETASK__ // シングルスレッド依存部分
#define __ANSICODE__ // ANSI文字コード依存部分
#define __X86__ // x86依存部分
#define __END__ // 依存部分終了
#define beep() MessageBeep(-1)
#define waitms(ms) Sleep(ms) //WZ4.00Bg 990719 UNIXではwait()システムコールと重複するのでwaitms()に変更。
#define beep2() {waitms(500);beep();waitms(100);beep();waitms(500);}
#define CCHPATHNAME 260
#define CCHFILENAME 260
#define cchof(str) (sizeof(str) / sizeof(mchar))
// mchar配列として定義した変数の要素数
// (変数に格納できる文字数)を返す
#define lchof(str) ((sizeof(str) / sizeof(mchar))-1)
// mchar配列として定義した変数の
// 文字列の長さ(最後のNULLは除く)を返す
#define wcchof(str) (sizeof(str) / sizeof(wchar))
// wchar配列として定義した変数の要素数
// (変数に格納できる文字数)を返す
#define wlchof(str) ((sizeof(str) / sizeof(wchar))-1)
// wchar配列として定義した変数の
// 文字列の長さ(最後のNULLは除く)を返す
#define cchtxstr(str) CCHTXSTR
// txstrに格納できる文字数+1を返す
#define divmod(n,v) (((n) / (v)) + (((n) % (v)) != 0))
// nをdで割った結果を返す
// nがdで割り切れないときは+1して返す
//WCE1.01 980226 new
#define mysmall(a,b) ((a) < (b) ? (a) : (b))
#define mybig(a,b) ((a) >= (b) ? (a) : (b))
#define myabs(i) ((i) < 0 ? -(i) : (i)) //WZ3.90J 981108
#define myminimum(n,min) (((n) >= (min)) ? (n) : (min)) //WZ3.90N 981130 nがmin未満ならminを返す
// 基本型定義
typedef DWORD NLINE; // 表示行番号
typedef DWORD NPARA; // 論理行番号
typedef WORD NPAGE; // ページ番号
typedef UINT IMEM; // CPUネイティブのメモリアクセスインデックス型
typedef DWORD IFILE; // テキストファイルインデックス
// gap部を除いたテキストアドレス
// TEXTCHAR単位
typedef UINT IBUFF; // テキストバッファインデックス
// gap部を含むテキストアドレス
// TEXTCHAR単位
#define IBUFF_ERROR ((IBUFF)0xFFFFFFFFU)
#define IFILE_ERROR 0xFFFFFFFF //WCE0.92 970918
#define DWORD_MAX 0xFFFFFFFF //WZ3.90I 981029 DWORDの最大値
#ifndef INT_MAX //WZ4.00Bj 990831 ifndefチェックを追加
#define INT_MAX 0x7FFFFFFF //WZ3.90I 981029 intの最大値
#endif
// 文字数定義
#define CCHLINE 512U // 表示行一行の最大文字数
// (\0、禁則追い出し域も含む)
#define CCHWORD 80 // 検索文字列サイズ(最大CCHLINE程度)
// 一般的な文字列の長さ
#define CCHSWORD 40 // CCHWORDの半分
#define CCHNAME 30 // 各種識別子
#define CCHNUMBER 40 // ltoa最大バッファ使用数
#define MINWIDTH 10U // 最小折り返し幅
#define MAXWIDTH (CCHLINE-11U) // 最大折り返し幅(禁則域は除く)
#define MAXTABSIZE 64 // 最大タブサイズ
#define MAXMARK 5 // 最大マーク数
#define CCHMARK 40 // マーク文字列
#define CCHLPSTYLE 40 // 印刷スタイル名
#define CCHSTYLENAME 40 // スタイル名 //WZ3.90I 981028
#define MAXREFERPOS 10 // 最大最近参照した位置
#define CCHTXSTR 260 // txstrの文字数(CCHPATHNAMEと同じ)
typedef struct tagtxstr {
mchar szString[CCHTXSTR];
} txstr;
#ifdef __TXC__
typedef txstr TXSTR;
#else
typedef LPVOID TXSTR;
#define TXAPI_(n) // TXAPI export number
#define _varyarg
#endif
//##双方向リストサポート
//WZ4.00Bm 990930 new (_windows.hの内容と共通)
#ifndef listd_itemadd
#define listd_itemadd(item,root) \
if (root) {\
(item)->next = root;\
(root)->prev = item;\
}\
root = item
#define listd_itemdel(item,root) \
if ((item)->prev) {\
(item)->prev->next = (item)->next;\
} else {\
root = (item)->next;\
}\
if ((item)->next) {\
(item)->next->prev = (item)->prev;\
}
#define listd_itempopup(item,root) \
{\
listd_itemdel(item,root);\
item->prev = item->next = NULL;\
listd_itemadd(item,root);\
}
#define listd2_itemadd(item,root,tail) \
if (root) {\
(item)->next = root;\
(root)->prev = item;\
} else {\
tail = item;\
}\
root = item
#define listd2_itemaddlast(item,root,tail) \
if (root) {\
(tail)->next = item;\
(item)->prev = tail;\
} else {\
root = tail = item;\
}
#define listd2_itemdel(item,root,tail) \
if ((item)->prev) {\
(item)->prev->next = (item)->next;\
} else {\
root = (item)->next;\
}\
if ((item)->next) {\
(item)->next->prev = (item)->prev;\
} else {\
tail = (item)->prev;\
}
#define listd2_itempopup(item,root,tail) \
{\
listd2_itemdel(item,root,tail);\
item->prev = item->next = NULL;\
listd2_itemadd(item,root,tail);\
}
#define listd2_itempopdown(item,root,tail) \
{\
listd2_itemdel(item,root,tail);\
item->prev = item->next = NULL;\
listd2_itemaddlast(item,root,tail);\
}
#endif // !listd_itemadd
//##クリップボードハンドル
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) // プライベートテキストスタック(テキスト固有)
// WZ32はマルチタスクなので、HCLIP_TSは他のWZのタスク
// と干渉します。
// スタックにPushしてPopする前に
// 他のWZがスタックを操作してしまうかもしれません。
// HCLIP_PRIVATEは他のWZとのデータ交換には使えない
// 代わりに他のWZのタスクと干渉しません
// WZ3まではプロセス固有でしたが、WZ4からはテキスト固有になりました。
#define HCLIP_TS ((HCLIP)1) // テキストスタック
#define HCLIP_WIN ((HCLIP)2) // Windowsクリップボード
// ここでは0x00を含むバイナリデータは扱えない
// HCLIP_WORKxxxでは扱える
typedef struct tagCLIPITEM {
HGLOBAL hGlobal; // データ
IFILE size; // データサイズ(末尾の\0は除く)
int fClip; // fClip
FBOOL fClipTxfEnable; // データにTXFタグが入っている可能性がある?
struct tagCLIPITEM* prev;
struct tagCLIPITEM* next;
} CLIPITEM;
//##汎用設定ファイル操作
typedef struct {
TX* text;
BOOL fTextAllocate;
int dataid;
int datalen;
BOOL fName;
} CONFIG;
//##拡大可能メモリブロック(汎用)
//PWZ2BETA0.6 980621 new
typedef struct {
LPBYTE pTop;
LPBYTE pCur;
DWORD sizeAlloc;
DWORD sizeExpand;
} MEMBLOCK;
void memblockInit(MEMBLOCK* mb,int sizeAlloc,int sizeExpand);
void memblockTerm(MEMBLOCK* mb);
DWORD memblockGetSize(MEMBLOCK* mb);
LPVOID memblockAdd(MEMBLOCK* mb,int sizeAdd);
BOOL memblockAddEx(MEMBLOCK* mb,int sizeAdd);
BOOL memblockCheckSize(MEMBLOCK* mb,UINT size);
BOOL memblockAddMem(MEMBLOCK* mb,LPVOID pAdd,int sizeAdd);
BOOL memblockAddString(MEMBLOCK* mb,mchar* szString);
void memblockDelAll(MEMBLOCK* mb);
//##VirtualAlloc support(汎用)
//WZ3.90J 981109 new
//// 拡大可能メモリブロックはこれに置き換えるべき。
// VirtualAllocコンテキスト
typedef struct {
LPBYTE pagetop; // アドレス空間の先頭
LPBYTE pageend; // アドレス空間の末尾
UINT pagesize; // ページサイズ
LPBYTE p; // 現在参照中の位置
LPBYTE pEnd; // 領域の末尾
} VALLOC;
BOOL vaInit(VALLOC* va,UINT kbMax);
BOOL vaCheckAdd(VALLOC* va,UINT add);
void vaFree(VALLOC* va);
//##パーティションウィンドウ
//WZ3.90F 980815
#if !WINDOWSCE
wchar wszclassPartition[];
#define CX_PARTITION 6 // 幅 //WZ3.90O 981202 5->6
// ウィンドウスタイル
#define WSPB_SEPARATOR 0x0001L // dialog box用セパレータ?
#define WSPB_SMALLFONT 0x0002L //2.99D 970330 小さいフォントを使う?
#define WSPB_NOCLIENTEDGE 0x0004L //WZ4.00Bl 990922 WS_EX_CLIENTEDGE対応。
#if WINDOWSCE
#define WSPB_STD WS_BORDER
#define CX_PARTITION_FLAT CX_PARTITION
#else
#define WSPB_STD WSPB_NOCLIENTEDGE
#define CX_PARTITION_FLAT (CX_PARTITION-2) // WSPB_NOCLIENTEDGEの場合のCX
#endif
// メッセージ
// 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 WMPB_GETRANGE (WM_USER + 4) // void void return:MAKELONG(min,max) //WZ3.90J 981112
// 通知
#ifndef __TXC__
typedef struct {
NMHDR hdr; //PWZ2BETA0.3 980523 hdrが先頭にないといけなかった
#define PARTITIONN_SETRANGE 10
int rate; // 現在のレート
} PARTITION_NOTIFY;
#endif
#endif // !WINDOWSCE
//##ツールバー
#if !WINDOWSCE
enum {ICONSET_STD=0,ICONSET_VIEW,ICONSET_WZ,ICONSET_FILE};
typedef struct tagTOOLBARITEM { // ボタンコンテキスト
mchar szCaption[CCHWORD]; // TIPヘルプ
mchar szCmd[60]; //WZ3.90J 981108 コマンド名、マクロ名 for custmize
int idm; // コマンド番号
mchar szfilenameIcon[160]; // アイコンのファイル名
//WZ3.90J 981108 CCHWORDでは短すぎなので拡大
int iIcon; // szfilenameIconでの位置(0origin)
BYTE iconset; //WZ3.90J 981108 使用するアイコンビットマップセット
WORD fLoadedEx:1; // ICONSET_FILEの場合、ロードしたかどうか?
struct tagTOOLBARITEM* next;
} TOOLBARITEM;
typedef struct { // ツールバーコンテキスト
TOOLBARITEM* root;
HWND hwnd;
HWND hwndParent;
HWND hwndCBCB; // 検索ボックスウィンドウ
HWND hwndInfo; // 情報ボックスウィンドウ
HWND hwndLpSel; // 印刷スタイル選択ドロップダウンリストボックス
HWND hwndLpSet; // 印刷スタイル設定ボタン
LPVOID text; // NULLでも可
WORD fIconView:1; // VIEWアイコンがある
WORD fIconWz:1; // WZ標準のアイコンがある
WORD fIconEx:1; // STD,VIEW,WZ以外のアイコンがある
WORD fSearchBox:1; // 検索ボックスがある
WORD fInfoBox:1; // 情報ボックスがある
WORD fPrintstyleBox:1; //WZ3.90L 981117 印刷スタイル選択ボックスがある
} TOOLBARCONTEXT;
HBITMAP toolbaritemLoadBitmap(TOOLBARITEM* item);
#endif
#if WINDOWSCE
#define toolbarSetEnableIdm(context,idm,f)
#define cmdbarSetEnableIdm(hwnd,idm,f) SendMessage(hwnd,TB_SETSTATE,idm,f ? TBSTATE_ENABLED : 0) //WZ4.00Ab 990124
#else
int toolbarGetHeight(TOOLBARCONTEXT* context);
void toolbarProcWM_SIZE(TOOLBARCONTEXT* context,RECT* r);
TOOLBARCONTEXT* toolbarOpen(HWND hwndParent,mchar* szApp,mchar* szName);
BOOL toolbarProcNotify(TOOLBARCONTEXT* context,LPARAM lParam);
void toolbarClose(TOOLBARCONTEXT* context);
int szidmToIdmEx(mchar* szidm,int lchidm);
void toolbarSetEnableIdm(TOOLBARCONTEXT* context,int idm,BOOL fEnable);
BOOL toolbarGetEnableIdm(TOOLBARCONTEXT* context,int idm);
TOOLBARCONTEXT* toolbarLoad(mchar* szApp,mchar* szName);
TX* toolbarOpenText(mchar* szApp,mchar* szName);
#endif
//##WZリストビュー
void listRegister(void);
//##ステータスバー
#define MAX_STATUSBAR_PANE 10
typedef struct {
mchar sz[30]; // 表示内容
int cx; // 幅(-1なら右端まで)
} STATUSBAR_PANE;
#define STATUSBAR_PANE_ALL -1
#define STATUSBAR_PANE_LOCATE 0
#define STATUSBAR_PANE_2STROKE 1
#define STATUSBAR_PANE_INSERT 2
#define STATUSBAR_PANE_EDITED 3
#define STATUSBAR_PANE_SELECTED 4
#define STATUSBAR_PANE_FORMING 5 //WCE0.95 970923 整形中かどうかステータスバーに表示
#define STATUSBAR_PANE_PAGINGMODE 6
#define STATUSBAR_PANE_FILENAME 7 //WCE0.93 970919 ステータスバーにファイル名を表示
int statusbarGetCy(TX* text);
void statusbarSetPaneString(TX* text,int ipane,mchar* sz);
void statusbarFlushDispInsert(TX* text);
int statusbarPointToPane(TX* text,int x);
void statusbarFlushDispSelect(TX* text);
void statusbarPrint(TX* text,int ipane);
int statusbarGetPaneWidth(HWND hwndStatusbarWin,mchar* szString);
int statusbarSetSimple(HWND hwndStatusbarWin,BOOL fSimple);
int statusbarGetHeight(HWND hwndStatusbarWin);
//##ファイル参照ダイアログ
typedef struct {
WORD fSaveAs:1; // 「名前を付けて保存」ダイアログを表示。
WORD fSaveAsVz:1; // VZライクの「名前を付けて保存」ダイアログ
// fSaveAsもTRUEにしてください。
WORD fSaveTo:1; // 始めに指定したファイル名をできるだけ変化させない for 添付ファイルの保存先の指定
// fSaveAsもTRUEにしてください。
WORD fOpenVz:1; // VZライクの「ファイルを開く」ダイアログ
WORD fModeSaveAs:1; // modeSaveAsの選択を行う?
WORD fNoOverwriteConfirm:1; // 上書き確認をしない
WORD fReadonly:1; //WZ3.90I 981103 リードオンリーで開く?
//WZ3.90J 981111 ダイアログでの選択結果が返されます。
WORD fEnableIllegalChar:1; //WZ4.00Aa 990109 ファイル名に*などの無効文字列を許す?
WORD fNoAddHist:1; //WZ4.00Bj 990813 ヒストリに追加しない?
WORD fEnableFiler:1; //WZ4.00Bn 991006 FILERを起動しても良い?
WORD fReserved:6;
BYTE modeSaveAs; // 「プレーンテキストへ変換」など。
BYTE reserved[10];
} TXOFN_ARG;
BOOL TXAPI_(398) uiSelectFolderW(wchar wszfilename[CCHPATHNAME],wchar* wszCaption);
BOOL TXAPI_(803) uiSelectFolder(mchar szfilename[CCHPATHNAME],mchar* szCaption);
BOOL ofnSelectFolderW(wchar* wszfilename,wchar* wszCaption,TXOFN_ARG* arg);
#if GENERAL
BOOL ofnGetOpenFileNameW(wchar* wszfilename,wchar* wszCaption,TXOFN_ARG* arg); //WZ4.00Bo 991011
#endif
//##メモリ
LPVOID TXAPI_(880) memAlloc(DWORD size);
LPVOID TXAPI_(881) memAllocZeroinit(DWORD size);
void TXAPI_(882) memFree(LPVOID p);
LPVOID TXAPI_(483) zmalloc(int size);
LPVOID memResize(LPVOID p,DWORD size);
#ifndef __TXC__
#if __MEMORYDEBUG__
void _myfree(LPVOID p,mchar* szfile,int line);
#define free(p) _myfree(p,__FILE__,__LINE__)
#else
void _myfree(LPVOID p);
#define free(p) _myfree(p)
#endif
#endif
#if __MEMORYDEBUG__ //WZ4.00Bm 990929 for memory debug
LPVOID _mymalloc(int size,mchar* szfile,int line);
#define malloc(s) _mymalloc(s,__FILE__,__LINE__)
LPVOID _zmalloc(int size,mchar* szfile,int line);
#define zmalloc(s) _zmalloc(s,__FILE__,__LINE__)
mchar* _mystrdup(mchar* szstr,mchar* szfile,int line);
#define strdup(p) _mystrdup(p,__FILE__,__LINE__)
LPVOID _myrealloc(LPVOID p,int size,mchar* szfile,int line);
#define realloc(p,s) _myrealloc(p,s,__FILE__,__LINE__)
#endif
#if WINDOWSCE // SH3,MIPSではBYTE境界はWORDアクセスできない
WORD lpReadWord(LPVOID p);
SIGNED_WORD lpReadSignedWord(LPVOID p);
void lpWriteWord(LPVOID p,WORD value);
DWORD lpReadDword(LPVOID p);
SIGNED_DWORD lpReadSignedDword(LPVOID p);
void lpWriteDword(LPVOID p,DWORD value);
#else
#define lpReadWord(p) (*((WORD*)(p)))
#define lpReadSignedWord(p) (*((SIGNED_WORD*)(p)))
#define lpWriteWord(p,value) (*((WORD*)(p)) = value)
#define lpReadDword(p) (*((DWORD*)(p)))
#define lpReadSignedDword(p) (*((SIGNED_DWORD*)(p)))
#define lpWriteDword(p,value) (*((DWORD*)(p)) = value)
#endif
#define lpReadByte(p) (*((BYTE*)(p)))
#define lpWriteByte(p,value) (*((BYTE*)(p)) = value)
#if UNIX
mchar* ty_memmem(mchar* src,int lchSrc,mchar* szfind,int lchFind);
#define memmem ty_memmem
#else
mchar* memmem(mchar* src,int lchSrc,mchar* szfind,int lchFind);
#endif
mchar* memistr(mchar* src,int lchSrc,mchar* szfind);
mchar* memistrword(mchar* src,int lchSrc,mchar* szfind);
mchar* memstrwordLen(mchar* src,int lchSrc,mchar* szfind,int lchFind);
mchar* memstrword(mchar* src,int lchSrc,mchar* szfind);
#ifdef __TXC__
LPVOID _cdecl TXAPI_(124) memcpy(void *mem1,void *mem2,size_t size);
// mem2のsizeブロックを、mem1にコピー
// mem1とmem2が重複する場合の動作は未定義
LPVOID _cdecl TXAPI_(125) memmove(void *mem1,void *mem2,size_t size);
// mem2のsizeブロックを、mem1にコピー
// mem1とmem2が重複していても正確に動作
LPVOID _cdecl TXAPI_(126) memset(void *mem1,int c,size_t size);
// mem1のsizeバイトを、バイトデータcで埋める。
int _cdecl TXAPI_(127) memcmp(void *mem1,void *mem2,size_t size);
// 2つのメモリブロックの内容を比較
// {返り値}mem1がmem2より小さい場合、負の値、
// mem1がmem2と等しい場合、0、
// mem1がmem2より大きい場合、正の値、を返す
LPVOID TXAPI_(128) memchr(LPVOID mem,int ch,size_t size);
// メモリブロック:mem,サイズ:sizeからchを探す。見つかればポインタを返す
// 見つからなければNULLを返す
//2.00Bで追加
LPVOID _cdecl TXAPI_(129) malloc(DWORD size);
// sizeバイトのメモリブロックを確保してポインタを返す
void _cdecl TXAPI_(130) free(LPVOID pmem);
// mallocで確保したメモリブロックを解放する
LPVOID _cdecl TXAPI_(131) realloc(LPVOID pmem,DWORD size);
// mallocで確保したメモリブロックのサイズを変更する
#endif // __TXC__
//##文字
UINT ch_jis2sjis(UINT ch);
UINT ch_sjis2jis(UINT ch);
BOOL my_isXdigiti(int c);
int zentohanAlpha(mchar* p);
WORD txzentohan(mchar *p);
#ifdef __TXC__
BOOL TXAPI_(791) isalnum(int c);
int TXAPI_(792) toupper(int c);
int TXAPI_(484) tolower(int c);
BOOL TXAPI_(793) isdigit(int c);
BOOL TXAPI_(794) isupper(int c);
BOOL TXAPI_(795) islower(int c);
BOOL TXAPI_(796) isalpha(int c);
BOOL TXAPI_(797) isspace(int c);
BOOL TXAPI_(798) iskanji(int c);
BOOL TXAPI_(799) iskanji2(int c);
BOOL TXAPI_(800) iskana(int c);
BOOL TXAPI_(801) isXdigit(int c);
BOOL TXAPI_(802) IschReturn(int c);
#else
extern BYTE _matchword[256]; // __ANSYCODE__
extern BYTE _matchword2[256]; // __ANSYCODE__
#define MATCH_WORD 0x01
#define MATCH_KEYWORD 0x02 //WCE1.01 980202 new
#define MATCH_KANJI 0x04
#define MATCH_KANJI2 0x08
#define MATCH_KANA 0x10
#define MATCH_DIGIT 0x20
#define MATCH_UPPER 0x40
#define MATCH_LOWER 0x80
//
#define MATCH2_TXFTAG 0x01
#define MATCH2_TAGNAME 0x02 // タグ名,アトリビュート名
#define MATCH2_PARAEND 0x04
#define MATCH2_RETURN 0x08 //WCE1.01 980202 MATCH->MATCH2
#define MATCH2_SPACE 0x10 //WCE1.01 980224
#define MATCH2_XDIGIT 0x20 //WCE1.01 980224 0-9,A-F
#define MATCH2_XDIGITI 0x40 //WZ3.90I 981004 0-9,A-F,a-f
//WCE1.01 980224 isXXX TEXTCHAR/UNICODE(2bytes)対応
#define IschMatchWord(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_WORD)) // a-zA-Z0-9_$
#define IschMatchKeyword(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_WORD|MATCH_KEYWORD))) // MATCH_WORD + \ //WCE1.01 980202
#define IschTxftag(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_TXFTAG)) // /#!*
#define IschTagname(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_TAGNAME)) // a-zA-Z0-9_
#define h_IschTagname(c) (_matchword2[((BYTE)(c))] & MATCH2_TAGNAME) // a-zA-Z0-9_
#define IschParaend(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_PARAEND)) // CHAR_LF,CHAR_EOF
//WCE1.01 980224 TEXTCHAR/UNICODE(2bytes)対応
#ifndef __WZRAS__
#undef isalnum
#undef isdigit
#undef isupper
#undef islower
#undef isalpha
#undef isspace
#if 1//PWZ2BETA0.4 980610 for マクロでもisalpha etcを使うので
BOOL my_isalnum(int c);
int my_toupper(int c);
int my_tolower(int c);
BOOL my_isdigit(int c);
BOOL my_isupper(int c);
BOOL my_islower(int c);
BOOL my_isalpha(int c);
BOOL my_isspace(int c);
BOOL my_isspace_txc(int c);
BOOL my_iskanji(int c);
BOOL my_iskanji2(int c);
BOOL my_iskana(int c);
BOOL my_isXdigit(int c);
BOOL my_IschReturn(int c);
#define isalnum(c) my_isalnum(c)
#define toupper(c) my_toupper(c)
#define tolower(c) my_tolower(c) //PWZ2BETA0.4 980610 new
#define isdigit(c) my_isdigit(c)
#define isupper(c) my_isupper(c)
#define islower(c) my_islower(c)
#define isalpha(c) my_isalpha(c)
#define isspace(c) my_isspace(c)
#define iskanji(c) my_iskanji(c)
#define iskanji2(c) my_iskanji2(c)
#define iskana(c) my_iskana(c)
#define isXdigit(c) my_isXdigit(c)
#define isXdigiti(c) my_isXdigiti(c) //WZ3.90I 981004
#define IschReturn(c) my_IschReturn(c)
#if !__TXC__
//WZ4.00Ab 990203 new 高速版 (c>=0x100)の時には対応していない
#define h_iskanji(c) (_matchword[((BYTE)(c))] & MATCH_KANJI)
#define h_iskanji2(c) (_matchword[((BYTE)(c))] & MATCH_KANJI2)
#define h_isspace(c) (_matchword2[((BYTE)(c))] & MATCH2_SPACE)
#endif
#else
#if WINDOWSCE
BOOL isalnum(int c);
int toupper(int c);
BOOL isdigit(int c);
BOOL isupper(int c);
BOOL islower(int c);
BOOL isalpha(int c);
BOOL isspace(int c);
BOOL iskanji(int c);
BOOL iskanji2(int c);
BOOL iskana(int c);
BOOL isXdigit(int c);
BOOL IschReturn(int c);
#else
#define isalnum(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_DIGIT|MATCH_UPPER|MATCH_LOWER)))
#define toupper(c) (((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER)) ? (c) & 0xDF : c)
#define isdigit(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_DIGIT))
#define isupper(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_UPPER))
#define islower(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER))
#define isalpha(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & (MATCH_UPPER|MATCH_LOWER)))
#define isspace(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_SPACE))
#define iskanji(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANJI))
#define iskanji2(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANJI2))
#define iskana(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_KANA))
#define isXdigit(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_XDIGIT)) //WCE1.01 980226 0-9,A-F
#define IschReturn(c) ((!((c) & 0xFF00)) * (_matchword2[((BYTE)(c))] & MATCH2_RETURN)) // CHAR_CR,CHAR_LF,CHAR_FF,CHAR_EOF
#endif
#endif
//
#if TB_EUC
#define txchIsKeisen(ch) (0xA8A1 <= (ch) && (ch) <= 0xA8C0) // JIS罫線素子か?
#define txchIsKeisenClm(ch) (txchIsKeisen(ch) && ch != 0xA8A1 && ch != 0xA8AC)
#else
#define txchIsKeisen(ch) (0x849F <= (ch) && (ch) <= 0x84BE) // JIS罫線素子か?
#define txchIsKeisenClm(ch) (txchIsKeisen(ch) && ch != '─' && ch != '━')
#endif
#define toallower(c) ((c) | 0x20)
#define toalupper(c) ((c) & 0xDF)
#define xdigitToInt(ch) (((ch) >= 'A') ? ((ch) - 'A' + 10) : ((ch) - '0'))
#define xdigitToIntI(ch) ((toupper(ch) >= 'A') ? (toupper(ch) - 'A' + 10) : ((ch) - '0'))
#define intToXdigit(i) (((i) >= 10) ? ((i) + 'A' - 10) : ((i) + '0')) //WZ3.90I 981101
#define intToXdigitl(i) (((i) >= 10) ? ((i) + 'a' - 10) : ((i) + '0')) //XZ0.20 990708
#if 1//WCE1.01 980224 TEXTCHAR/UNICODE(2bytes)対応
#define wtoupper(c) (((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_LOWER)) ? (c) & 0xDF : c)
#define wisdigit(c) ((!((c) & 0xFF00)) * (_matchword[((BYTE)(c))] & MATCH_DIGIT))
#else
#define wtoupper(c) ((L'a' <= (c) && (c) <= L'z') ? (c - L'a' + L'A') : (c))
#define wisdigit(c) ((c) < 256 && _matchword[((BYTE)(c))] & MATCH_DIGIT)
#endif
#endif
#endif // __TXC__
//##パス文字列
BOOL TXAPI_(486) wpathSearchPathtext(wchar* wszpath);
BOOL TXAPI_(487) wpathIsFull(wchar* wszpath);
BOOL TXAPI_(488) pathIsFull(mchar* szpath);
void TXAPI_(489) pathSetDir(mchar *path);
int TXAPI_(465) wispathsepa(wchar c);
int TXAPI_(476) ispathsepa(mchar c);
wchar* TXAPI_(490) TXAPIBASE wpathSetLong(wchar *path);
mchar* TXAPI_(852) pathSetLong(mchar* path);
BOOL wfilenameIsLocation(wchar* wszfilename);
BOOL TXAPI_(491) wpathFormDir(wchar* path);
BOOL TXAPI_(599) pathFormDir(mchar* path);
BOOL TXAPI_(492) wpathFormDirDos(wchar* path);
BOOL TXAPI pathFormDirDos(mchar* path);
void pathForm(mchar* szpath);
BOOL wpathParent(wchar wszfilename[CCHPATHNAME]);
BOOL wpathIsRoot(wchar wszfilename[CCHPATHNAME]);
BOOL wpathIsUnc(wchar* wszfilename);
BOOL wpathFlushUnc(wchar* wszfilename);
BOOL TXAPI_(493) TXAPIBASE wpathFormLong(wchar* path);
BOOL TXAPI_(506) TXAPIBASE pathFormLong(mchar *path);
wchar* TXAPI_(494) TXAPIBASE wpathGetFileName(wchar* path);
mchar* TXAPI_(510) TXAPIBASE pathGetFileName(mchar *path);
void TXAPI_(496) wpathFlush(wchar* szstr);
void TXAPI_(511) pathFlush(mchar* szstr);
void TXAPI_(892) pathFlushSepa(mchar* szstr,int ch);
wchar* TXAPI_(497) TXAPIBASE wpathSetFileName(wchar *path,wchar *filename);
mchar* TXAPI_(509) TXAPIBASE pathSetFileName(mchar *path,mchar *filename);
wchar* TXAPI_(498) TXAPIBASE wpathGetExt(wchar* path);
mchar* TXAPI_(507) TXAPIBASE pathGetExt(mchar *path);
wchar* TXAPI_(499) TXAPIBASE wpathSetExt(wchar *path,wchar *ext);
mchar* TXAPI_(508) TXAPIBASE pathSetExt(mchar *path,mchar *ext);
wchar* TXAPIBASE wpathAddExt(wchar* path,wchar* ext);
mchar* TXAPIBASE pathAddExt(mchar* path,mchar* ext);
BOOL TXAPI_(500) wpathIsExt(wchar* szfilename,wchar* szext);
BOOL TXAPI_(512) TXAPIBASE pathIsExt(mchar *path,mchar *ext);
BOOL TXAPI_(501) wpathIsWild(wchar *path);
BOOL TXAPI_(505) pathIsWild(mchar* path);
BOOL TXAPI_(502) wpathIsDirectory(wchar *path);
BOOL TXAPI_(894) pathIsDirectory(mchar* szpath); //WZ4.00A 981229
void TXAPI_(503) wpathSetDir(wchar *path);
wchar* TXAPI_(504) wpathSetFull(wchar* wszpath);
mchar* TXAPI_(851) pathSetFull(mchar* szpath);
mchar* TXAPI_(915) pathSepa(mchar* szstr); //WZ4.00Bl 990914 pathSepaをTX-Cから使えるようにした。ユーザ要望。
int TXAPI wpathSetMode(wchar* wszfilename,wchar* wszbase,wchar* wszaddress,int mode);
#define PATH_ABSOLUTEDRIVE 1 // ドライブ名付きの絶対パス
#define PATH_ABSOLUTE 2 // ドライブ名なしの絶対パス
#define PATH_URL 3
#define PATH_RELATIVE 4
int TXAPI_(853) pathSetMode(mchar* szfilename,mchar* szbase,mchar* szaddress,int mode);
#if !__TXC__
BOOL wpathSetFilenameUnique(wchar* wszfilename);
void TXAPI wpathSetRoot(wchar* wszfilename);
void TXAPI pathSetRoot(mchar* szfilename);
BOOL wpathIsCszFiletype(wchar* wszfilename,mchar* cszExt);
int TXAPI pathGetMode(mchar* szfilename);
int TXAPI wpathGetMode(wchar* wszfilename);
UINT wpathGetDriveType(wchar* wszpath);
void wpathGetWzFilename(wchar* wszfilename);
BOOL wpathIsBinaryFiletype(wchar* wszfilename);
int TXAPI pathCmp(mchar* szpath1,mchar* szpath2,int *plch);
int TXAPI pathCmpN(mchar* szpath1,mchar* szpath2,int lch,int *plch);
BOOL pathmasksmatch(mchar* szname,mchar* szmasks);
BOOL TXAPI wpathGetRoot(wchar* wsz);
BOOL TXAPI pathGetRoot(mchar* sz);
BOOL wfilenameIsLocation(wchar* wszfilename);
int wpathIsMemoryCard(wchar* wszfilename);
#endif // !__TXC__
//##KERNEL拡張
//DDE
BOOL TXAPI_(829) ddeConnect(mchar* pszService, mchar* pszTopic);
BOOL TXAPI_(830) ddeDisconnect(void);
BOOL TXAPI_(831) ddeExecute(mchar* pszCmd);
BOOL TXAPI_(832) ddeExecuteEx(mchar* pszCmd,DWORD* dwResult);
BOOL TXAPI_(833) ddePoke(mchar* szItem,mchar* szData);
UINT TXAPI_(834) ddeGetLastError(void);
BOOL TXAPI_(835) ddeRequest(mchar* szItem,mchar** szData);
HWND TXAPI_(884) apSearchWindow(mchar* szCaption);
BOOL __ddeDelete(void);
//
BOOL TXAPI_(849) shellExecute(mchar* pszFile,mchar* pszOp);
BOOL TXAPI_(538) shellOpenW(wchar* szfilename);
typedef int SKEY;
SKEY TXAPI_(617) GetShiftKey(void);
#define SKEY_SHIFT 0x01
#define SKEY_CONTROL 0x02
#define SKEY_ALT 0x04
int TXAPI GetWindowsPlatform(void);
LPBYTE TXAPI_(606) fileallocW(wchar* szfilename,DWORD* size);
DWORD TXAPI_(913) wpathGetDiskFreeSpace(wchar* wszpath);
//
#if !__TXC__
BOOL CreateDirectoryForce_W(wchar* wszpath,LPVOID lpsa);
BOOL RemoveDirectoryEx_W(wchar* wszfilename);
//
BOOL TXAPI CommandExec(mchar* szline);
BOOL WinExecEx_W(wchar* wszfilenameExe,wchar* wszCmdline);
//
BOOL wpathGetFfd(wchar* wszfilename,WIN32_FIND_DATAW* ffd);
BOOL mySHGetShortcutTarget(wchar* wszfilename,wchar* wsztarget,int cchTaraget);
BOOL wpathCreateDirectoryPath(wchar* wszfilename);
BOOL wpathGetFileTime(wchar* wszfilename,FILETIME* filetime);
#if !UNIX
BOOL GetFileInformation_W(wchar* wszfilename,BY_HANDLE_FILE_INFORMATION* info);
#endif
#if WINDOWSMT
DWORD GetShortPathName_W(wchar* wsz,wchar* wszShort,int cch);
#endif
#if WINDOWSCE
#define GetCurrentTime() GetTickCount()
#else
enum {WINDOWS95=1,WINDOWSNT};
extern BYTE _platform;
extern DWORD _dwWindowsVertion; //WZ3.90P 981205
#endif
BOOL _tapiTerm(BOOL fAtExist);
#if UNIX
#define sockwzNew() TRUE
#define sockwzDelete() TRUE
#else
BOOL sockwzNew(void);
BOOL sockwzDelete(void);
#endif
//キーマウスフック
void keyhookStart(int (*hookProc)(WPARAM wParam,LPARAM lParam));
void keyhookEnd(void);
void keyhookTerm(void);
void mousehookStart(int (*hookProc)(WPARAM wParam,LPARAM lParam));
void mousehookEnd(void);
void mousehookTerm(void);
//スレッド
#if !UNIX
#undef csEnter
#undef csExit
#define csEnter(cs) EnterCriticalSection(cs)
#define csExit(cs) LeaveCriticalSection(cs)
#define csInit(cs) InitializeCriticalSection(cs)
#define csTerm(cs) DeleteCriticalSection(cs)
extern CRITICAL_SECTION g_csCaret;
#endif
#endif // !__TXC__
//##USER拡張
#define SFF (UNIX) //WZ4.00Bm 990927 システムフォントが固定ピッチ?
DWORD TXAPI_(850) myChooseColor(HWND hwndParent,COLORREF* rgbResult,mchar* sztitle);
BOOL TXAPI_(531) wndSetPosSize(HWND hwnd,int x,int y,int cx,int cy);
BOOL TXAPI_(532) wndSetPos(HWND hwnd,int x,int y);
void TXAPI_(533) wndSetTimer(HWND hwnd,UINT timerid,DWORD ms);
void TXAPI_(534) wndMoveFocus(HWND hwnd,BOOL fPrev);
LRESULT TXAPI_(459) SendMessageOther(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
BOOL TXAPI_(298) TXAPIBASE wndImeGetOpen(HWND hwnd);
void TXAPI_(299) TXAPIBASE wndImeSetOpen(HWND hwnd,BOOL fOpen);
int TXAPI_(528) ListBox_GetItemText_A(HWND hctrl,int index,mchar* szbuff,int cch);
int TXAPI_(529) ListBox_GetItemText_W(HWND hctrl,int index,wchar* szbuff,int cch);
BOOL ListBox_SetDeletedFromUndo(HWND hctrl,TX* text);
mchar* TXAPI ListBox_GetItemTextAlloc_A(HWND hctrl,int index);
void TXAPI_(393) GetWorkRect(RECT *r);
BOOL TXAPI_(535) EnableDlgItem(HWND hwnd,int id,BOOL fEnable);
BOOL TXAPI EnableDlgItemEx(HWND hwnd,int id,BOOL fEnable,int idDefault);
BOOL TXAPI_(536) IsDlgItemTextEmpty(HWND hwndDlg,int idControl);
//window context(__TXC__でも使用)
#define hwndGetContext(hwnd) ((LPVOID)GetWindowLong(hwnd,0))
#define hwndSetContext(hwnd,context) SetWindowLong(hwnd,0,(LONG)context)
#define wndprocContext(hwnd,context,message,wParam,lParam) \
if (context == NULL && message != WM_CREATE) return DefWindowProc(hwnd,message,wParam,lParam);
#define hwndtextGetText(hwnd) ((TX*)hwndGetContext(hwnd))
#define hwndbaseGetText(hwnd) ((TX*)hwndGetContext(hwnd))
//
#if !__TXC__
BOOL TXAPI wndSetZorder(HWND hwnd,HWND hwndInsertAfter);
BOOL IsOwnered(HWND hwndParent,HWND hwnd);
BOOL wndSetSize(HWND hwnd,int cx,int cy); //WZ4.00Bl 990912 #defineマクロから関数化
#if WINDOWSCE
BOOL IsIconic(HWND hwnd);
HWND GetDesktopWindow(void);
#endif
//
void myCheckMenuItem(HMENU hmenu,int idm,BOOL fCheck);
void myEnableMenuItem(HMENU hmenu,int idm,BOOL fEnable);
BOOL GetEnableMenuItem(HMENU hmenu,int idm);
void hmenubarDeleteShortcut(HMENU hmenuRoot);
void hmenuDeleteShortcut(HMENU hmenu);
#if !WINDOWSCE
HWND CommandBar_Create(HINSTANCE hInst, HWND hwndParent, int idCmdBar);
BOOL CommandBar_Show(HWND hwndCB, BOOL fShow);
int CommandBar_AddBitmap(HWND hwndCB, HINSTANCE hInst, int idBitmap,int iNumImages, int iImageWidth,int iImageHeight);
HWND CommandBar_InsertComboBox(HWND hwndCB, HINSTANCE hInstance,int iWidth, UINT dwStyle,WORD idComboBox, WORD iButton);
BOOL CommandBar_InsertMenubar(HWND hwndCB, HINSTANCE hInst,WORD idMenu, WORD iButton);
HMENU CommandBar_GetMenu(HWND hwndCB, WORD iButton);
BOOL CommandBar_AddAdornments(HWND hwndCB,DWORD dwFlags,DWORD dwReserved);
int CommandBar_Height(HWND hwndCB);
void CommandBar_AddButtons(HWND hwndCB,int cbButtons,LPVOID lpButtons);
void CommandBar_AddToolTips(HWND hwndCB,int cbToolTips,LPVOID lpToolTipsStrings);
#endif
//
int TXAPI dtcx(int dtcx);
int TXAPI dtcy(int dtcy);
int TXAPI systemfontGetCx(void);
int TXAPI systemfontGetCy(void);
void hwndSetCenter(HWND hwndBase);
BOOL wndRePos(HWND hwnd);
BOOL TXAPI wndGetRect(HWND hwnd,RECT* r);
void rectReWork(RECT* r);
void strToRect(mchar* p,RECT* r);
BOOL rectCheck(RECT* r);
//intelli mouse
BOOL imouseGetEnable(void);
BOOL messageIsMouseWheel(UINT message);
BOOL imouseGetPageTurn(void);
int imouseGetScrollLines(WPARAM wParam);
//
#if WINDOWSCE
UINT IsDlgButtonChecked(HWND hwnd,int idd);
BOOL CheckDlgButton(HWND hwnd,int idd,UINT uCheck);
BOOL SetDlgItemText_A(HWND hwndDlg,int idControl,LPCSTR lpsz);
BOOL GetDlgItemText_A(HWND hwndDlg,int idControl,LPSTR lpsz,int cchMax);
#if WINDOWSCE1 //PWZ2BETA0.4 980530
HPEN CreatePen(int style,int nWidth,COLORREF rgb);
#endif
#else
extern int _cxSysChar;
extern int _cySysChar;
int GetSystemFontNo(void);
void InitSystemFontSize(HWND hwnd);
#endif
//
mchar* GetWindowTextAlloc_A(HWND hwnd);
#ifdef UNICODE
void ListBox_AddString_A(HWND hctrl,mchar* sz);
int ListBox_FindStringExact_A(HWND hctrl,int i,mchar* sz);
void ComboBox_AddString_A(HWND hctrl,mchar* sz);
int sprintf_A(LPSTR szDst,LPCSTR szFormat,...);
int vsprintf_A(LPSTR szDst,LPCSTR szFormat,void** arg);
BOOL TextOut_A(HDC hdc,int x,int y,LPCSTR lpString,int lchString);
BOOL WINAPI SetWindowText_A(HWND hwnd,LPCSTR lpsz);
int WINAPI GetWindowText_A(HWND hwnd,LPSTR lpsz,int cchMax);
BOOL SetDlgItemText_A(HWND hwndDlg,int idControl,LPCSTR lpsz);
BOOL GetDlgItemText_A(HWND hwndDlg,int idControl,LPSTR lpsz,int cchMax);
#else
void ListBox_AddString_W(HWND hctrl,wchar* wsz);
int ListBox_FindStringExact_W(HWND hctrl,int i,wchar* wsz);
void ComboBox_AddString_W(HWND hctrl,wchar* wsz);
int sprintf_W(LPWSTR szDst,LPCWSTR szFormat,...);
int vsprintf_W(LPWSTR szDst,LPCWSTR szFormat,void** arg);
HANDLE FindFirstFile_W(LPCWSTR wszpath,WIN32_FIND_DATAW* ffd);
HANDLE FindNextFile_W(HANDLE hFindFile,WIN32_FIND_DATAW* ffd);
BOOL SetWindowText_W(HWND hwnd,LPCWSTR lpsz);
int GetWindowText_W(HWND hwnd,LPWSTR lpsz,int cchMax);
BOOL SetDlgItemText_W(HWND hwndDlg,int idControl,LPCWSTR lpsz);
int GetDlgItemText_W(HWND hwndDlg,int idControl,LPWSTR lpsz,int cchMax);
HWND CreateWindow_W(LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
HWND CreateWindowEx_W(DWORD dwExStyle,LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
ATOM RegisterClass_W(WNDCLASSW* lpwc);
int GetClassName_W(HWND hwnd,LPWSTR lpClassName,int cchClassName);
int DrawText_W(HDC hdc,LPCWSTR wszStr,int cchStr,LPRECT lprc,UINT wFormat);
#endif // !UNICODE
//
#if !WINDOWSCE1 && !UNIX
BSTR ime98GetPhonetic(OLECHAR* wszKanji);
#endif
void hwndSetFontDefault(HWND hwnd);
BOOL hbitmapGetSize(HBITMAP hBitmap,SIZE* s);
BOOL iskanjifont(mchar *lfFaceName);
void TreeView_Hook(HWND hwnd);
int TreeView_GetItemNest(HWND hwnd,HTREEITEM tvitem);
#endif // !__TXC__
#if __TXC__
HWND TXAPI_(111) CreateWindow_W(LPCWSTR lpszClassName,LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,HMENU hmenu,HANDLE hinst,LPVOID lpvParam);
WORD TXAPI_(816) RegisterClass_W(LPVOID lpwc);
#endif
//##GDI拡張
void myRectangle(HDC hdc,int left,int top,int right,int bottom);
void DrawXorBox(HDC hdc,RECT* r,HBRUSH hbrush);
int GetTextTurn(HDC hdc,tchar* sz,int lchSz,int cx);
int TXAPI_(761) pointsToMmtext(HDC hdc,int points);
int TXAPI_(762) pixelsToMcm(HDC hdc,int pixels);
int mmtextToPoints(HDC hdc,int mmtext);
int TXAPI_(763) mcmToPixels(HDC hdc,int mcm);
void TXAPI_(765) 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
enum {
DF_FRAMEOUTSIDE=110,
DF_FRAMEINSIDE,
DF_FRAME, // DF_FRAMEOUTSIDE+DF_FRAMEINSIDE //WZ3.90O 981202
};
void TXAPI_(764) hdcSelectObjectDefault(HDC hdc);
//
#if !__TXC__
#if WINDOWSCE
void MoveTo(HDC hdc,int x,int y);
void LineTo(HDC hdc,int x,int y);
BOOL TextOut(HDC hdc,int x,int y,LPCTSTR lpString,int cbString);
#else
#define MoveTo(hdc,x,y) MoveToEx(hdc,x,y,NULL)
#endif
#endif // !__TXC__
//##メニュー操作
HMENU TXAPI_(387) menuNew(void);
void TXAPI_(388) wmenuStr(HMENU hmenu,wchar* szStr,int id);
void TXAPI_(810) menuStr(HMENU hmenu,mchar* sz,int id);
void TXAPI_(245) wmenuPopup(HMENU hmenu,wchar *szStr,HMENU hmenuPopup);
void TXAPI_(811) menuPopup(HMENU hmenu,mchar* sz,HMENU hmenuPopup);
void TXAPI_(389) menuSepa(HMENU hmenu);
void TXAPI_(390) menuDelete(HMENU hmenu);
BOOL TXAPI_(874) menuTx(HMENU hmenu,mchar* szCaption,mchar* szMacro); //WZ3.90L 981122 TX-C互換
int TXAPI_(391) menuOpenEx(HMENU hmenu,UINT flag,int x,int y,HWND hwndParent);
#define MENU_CMD 0x0001 // ウィンドウプロシジャを経由せず、コマンドを返す。
#define MENU_CENTER 0x0002 // 画面中央に表示。x,yにはlcx,lcyを指定。
#define MENU_MOUSE 0x0004 // マウス位置に表示。
#define MENU_TXCUR 0x0008 // textのカーソル位置に表示。
#define MENU_TRAY 0x0010 // タスクトレイの位置に表示。
#define MENU_DELETE 0x0020 // オープン後にhmenuを削除する。
#define MENU_GETPARENT 0x0040 // hwndParentに関わらずhwndbaseGetする。//WZ4.00Bk 990909
// 以下、TX-Cからも利用可能
#define txHmenuSelect(text,hmenu) menuOpenEx(hmenu,MENU_CMD|MENU_DELETE|MENU_TXCUR,0,0,text->hwndtext)
#define txHmenuOpenKey(text,hmenu) menuOpenEx(hmenu,MENU_TXCUR,0,0,text->hwndbase) //WZ4.00A 981229 new hwndtextを渡すのは×、hwndbaseが○
#define menuSelectMouse(hmenu) menuOpenEx(hmenu,MENU_CMD|MENU_DELETE|MENU_MOUSE,0,0,NULL)
#define menuOpenMouse(hmenu) menuOpenEx(hmenu,MENU_MOUSE,0,0,NULL)
#define menuOpenXY(hmenu,x,y) menuOpenEx(hmenu,0,x,y,NULL)
// 以下、内部用
#define menuSelectXY(hmenu,x,y) menuOpenEx(hmenu,MENU_CMD|MENU_DELETE,x,y,NULL)
#define menuOpenCenter(hmenu,lx,ly) menuOpenEx(hmenu,MENU_CENTER,lx,ly,NULL)
#define menuOpenTray(hmenu,hwnd) menuOpenEx(hmenu,MENU_TRAY,0,0,hwnd)
HMENU menuLoadMouseR(mchar* szApp,mchar* szName);
HMENU menuLoad(mchar* szApp,mchar* szName);
HMENU menubarLoad(mchar* szApp,mchar* szName);
//##パス検索(GREP)
typedef struct tagFOLDER_WALK {
BBOOL fSearchSubFolder; // サブフォルダも検索
BBOOL fNoSearchWindows; // Windowsフォルダは検索しない
BBOOL fNoSearchBinaryFiletype; // バイナリ拡張子のファイルは検索しない
BBOOL fNoSearchBigFile; // 巨大なファイルは検索しない
int (*appProc)(LPVOID appContext,wchar* wszfilename);
LPVOID appContext; // appProcに渡すクライアント定義コンテキスト
// appProc用
BOOL fAborted; // 中止する
// 内部用
wchar wszPath[CCHPATHNAME]; // 検索パス
mchar szReject[CCHPATHNAME]; //WZ4.00Bj 990823 除外用
} FOLDER_WALK;
int folderWalk(FOLDER_WALK* walk,wchar* wszPath);
//##ファイル入出力
#define FILEHANDLE_ERROR ((HANDLE)0xFFFFFFFF) // replace HFILE_ERROR
// 0じゃない!
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#define _llseekTop(hf) _llseek(hf,0,SEEK_SET)
#define _llseekSet(hf,ifile) _llseek(hf,ifile,SEEK_SET)
#define _llseekEnd(hf) _llseek(hf,0,SEEK_END)
#define _llseekCur(hf) _llseek(hf,0,SEEK_CUR)
#if WINDOWSCE
//WZ4.00Bl 990915 !WINDOWSCEのTX-Cでは、_lread/_lwrite/_llseekは#include <windows.h>して使用し_wz.hでは定義しない。そうしないと#include <windows.h>したときにエラーになる。
UINT TXAPI_(451) _lread(HANDLE hfile,LPVOID lpBuffer,UINT cbRead);
UINT TXAPI_(452) _lwrite(HANDLE hfile,LPVOID lpBuffer,UINT cbWrite);
LONG TXAPI_(453) _llseek(HANDLE hfile,LONG lOffset,int nOrigin);
#endif
BOOL TXAPI_(454) _lreduce(HANDLE hf,IFILE cbReduce);
BOOL TXAPI_(455) fileIsReadonlyW(wchar* szfilename);
BOOL TXAPI_(456) TXAPIBASE fileIsExistW(wchar *_szfilename);
BOOL TXAPI_(457) TXAPIBASE fileIsExist(mchar *szfilename);
BOOL TXAPI_(458) filetimeFromFileNameW(FILETIME* filetime,wchar* szfilename);
#if !__TXC__
BOOL _lreadPara(HANDLE hf,mchar* buff,int cch);
BOOL _lreadParaContent(HANDLE hf,mchar* buff,int cch);
BOOL _llseekLf(HANDLE hf);
void _lcloseex(HANDLE hfile);
#define _lclose(h) _lcloseex(h)
BOOL _lwriteString(HANDLE hf,mchar* szstr);
BOOL _lwriteStringWtoA(HANDLE hf,wchar* wszstr);
BOOL _lwriteStringInt(HANDLE hf,int num);
BOOL _lwriteStringReturn(HANDLE hf,mchar* szstr);
BOOL _lwriteStringSpace(HANDLE hf,mchar* szstr);
BOOL _lwritef(HANDLE hf,mchar* szformat,...);
BOOL _lwriteReturn(HANDLE hf);
BOOL _lwriteFromFile(HANDLE hf,HANDLE hfSrc,IFILE size);
BOOL hfLastIsReturn(HANDLE hf);
BOOL hfLastSetReturn(HANDLE hf);
#define FILE_SHARE_READWRITE (FILE_SHARE_READ|FILE_SHARE_WRITE)
HANDLE _lopenex(wchar* wszfilename,DWORD fdwAccess,DWORD fdwShareMode);
HANDLE _lopenex_A(mchar* szfilename,DWORD fdwAccess,DWORD fdwShareMode);
HANDLE _lopenAlways(wchar* wszfilename,DWORD fdwShareMode);
HANDLE _lcreatex(wchar* wszfilename,DWORD fdwShareMode);
HANDLE _lcreatex_A(mchar* szfilename,DWORD fdwShareMode);
HANDLE _lcreatexNew(wchar* wszfilename,DWORD fdwShareMode);
#ifdef UNICODE
HANDLE CreateFile_A(LPCSTR lpszName,DWORD fdwAccess,DWORD fdwShareMode,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwCreate,DWORD fdwAttrsAndFlags,HANDLE hTemplateFile);
HANDLE LoadLibrary_A(mchar* szfilename);
FARPROC myGetProcAddress_A(HINSTANCE hinstance,mchar* szFunction);
#else
HANDLE CreateFile_W(LPCWSTR lpszName,DWORD fdwAccess,DWORD fdwShareMode,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwCreate,DWORD fdwAttrsAndFlags,HANDLE hTemplateFile);
BOOL CopyFile_W(LPCWSTR lpszSrc,LPCWSTR lpszDst,BOOL fFailIfExists);
BOOL MoveFile_W(LPCWSTR lpszSrc,LPCWSTR lpszDst);
BOOL DeleteFile_W(LPCWSTR lpszFileName);
BOOL SetFileAttributes_W(LPCWSTR lpszFileName,DWORD dwFileAttributes);
BOOL RemoveDirectory_W(LPCWSTR wszDir);
BOOL CreateDirectory_W(LPCWSTR lpszPath,LPSECURITY_ATTRIBUTES lpsa);
HANDLE CreateFileMapping_W(HANDLE hFile,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCWSTR lpszMapName);
HANDLE CreateMutex_W(LPSECURITY_ATTRIBUTES lpsa,BOOL fInitialOwner,LPCWSTR lpszMutexName);
#if !UNIX && !__TXC__
BOOL ShellExecuteEx_W(SHELLEXECUTEINFOW* info);
#endif
HANDLE LoadLibrary_W(wchar* wszfilename);
#endif
#endif // !__TXC__
//##文字列
int TXAPI_(297) strsize(mchar* szstr);
int _cdecl TXAPI_(99) sprintf(mchar* szdst,mchar* szformat,...);
int TXAPI_(460) formstr(mchar *str);
#ifndef __OLECPP__
mchar* itoa(int value,mchar* string,int radix);
#endif
mchar* itoaZ(int value,mchar* string,int radix);
int TXAPI_(100) wstrtostr(wchar* src,int lchSrc,mchar* dst,int cchDst);
int TXAPI_(101) strtowstr(mchar* src,int lchSrc,wchar* dst,int sizeDst);
int TXAPI_(888) strtowstrsz(mchar* src,int lchSrc,wchar* dst,int cchDst);
int TXAPI_(889) wstrtostrsz(wchar* src,int lchSrc,mchar* dst,int cchDst);
int TXAPI_(886) pathtowpath(mchar* szpath,wchar* wszpath);
int TXAPI_(887) wpathtopath(wchar* wszpath,mchar* szpath);
wchar* TXAPI_(102) TXAPIBASE wstrcpylen(wchar *dst,wchar *src,int len);
wchar* TXAPI_(103) wstrcpylenmax(wchar *dst,wchar *src,int len,int lcxmax);
wchar * TXAPI_(104) wstrcpymax(wchar *szdst,wchar *szsrc,int lchmax);
int TXAPI_(461) formstrex(mchar *str,BOOL fCurWestern);
int strread(mchar* sz,TXCHAR* ch,IBUFF len);
wchar* wstristr(wchar* str1,wchar* str2);
#ifndef __TXC__
mchar* strSkipRe(mchar* p,int* pnRe);
int strlensize(mchar *szstr);
void sprintfAfnEx(mchar* szdst,mchar* szAf,TX* text,BOOL fSkipTopClm);
void wi10toa(int value,wchar* buff);
long watoi10(wchar* buff);
mchar* TXAPIBASE strGetWordTopLch(mchar* szStr,int lch);
int yearAdjust2000(int year);
int atoi2(mchar* p);
int atoiLen(mchar* p,int len);
IBUFF SearchParaTop(LPBYTE buff,IMEM off,IMEM _size);
IBUFF SearchParaTopEx(LPBYTE buff,IMEM off,IMEM size,IBUFF ibuffAtError);
IBUFF SearchCharTop(LPBYTE buff,IBUFF off,IBUFF _size);
IBUFF SearchParaEnd(LPBYTE buff,IMEM off,IMEM _size);
mchar* TXAPI strnext(mchar* szstr);
BOOL issepastr(mchar* str);
mchar* sepastrGetIndexStr(mchar* str,int i,int* pLch);
mchar* csstrGetInclude(mchar* csstr,int size,mchar* szName);
mchar* strGetTailSpacePrev(mchar* sz,mchar* szEnd);
void strDeleteTailSpace(mchar* sz);
void strDeleteTailSpaceTab(mchar* sz);
#if WINDOWSCE
mchar* strnset(mchar* s,int ch,size_t n);
mchar* strupr(mchar* s);
mchar* strlwr(mchar* s);
#endif
void sprintSize(mchar* dst,IFILE size);
void sprintDate(mchar* szdst);
void sprintfDate(mchar szdst[CCHWORD],mchar* szDateFormat,TX* text);
void sprintFiletime(mchar* szbuff,FILETIME* filetime);
void sprintFiletimeDate(mchar* szbuff,FILETIME* filetime);
void sprintFiletimeTime(mchar* szbuff,FILETIME* filetime);
void strToFiletime(mchar* p,int len,FILETIME* filetime,int dHourAdd);
void sprintSizeKB(mchar* szbuff,IFILE size);
#if UNIX //XZ0.1 990516 標準ライブラリのwcsXXXはint*なので使用できない。
wchar* wstrcpy(wchar* dst,wchar* src);
int wstrcmp(wchar* sz1,wchar* sz2);
int wstrlen(wchar *str);
wchar* wstrcat(wchar* dst,wchar* src);
wchar* wstrstr(wchar* sz1,wchar* sz2);
int wstrncmp(wchar* sz1,wchar* sz2,int lch);
#else
#if WINDOWSCE
//WZ4.00Ac 990206 A-60でpermanentを含むマクロがコンパイル&実行できない。permanentinitのwcscpyでハングするので、wstrcpyを自分で実装した。
wchar* wstrcpy(wchar* dst,wchar* src);
// #define wstrcpy wcscpy
#else
#define wstrcpy wcscpy
#endif
#define wstrlen wcslen
#define wstrcat wcscat
#define wstrstr wcsstr //3.90H 980910
#ifdef _WIN32_WCE_EMULATION
int wstrcmp(wchar* sz1,wchar* sz2);
#else
#define wstrcmp wcscmp
#endif
#endif
#endif // __TXC__
// for ANSI(!UNICODE) version
mchar* TXAPI_(904) strdupW(wchar* wsz);
wchar* TXAPI_(905) wstrdupA(mchar* sz);
wchar* wstrdupLenA(mchar* sz,int lch);
wchar* wstrset(wchar* dst,int ch,int lch);
// safety strcpy op.
// szdstがmcharの配列の場合のみ使用可能。mcharへのポインタの場合は不可能
#define sstrcpy(szdst,szsrc) strcpymax(szdst,szsrc,cchof(szdst))
#define wsstrcpy(szdst,szsrc) wstrcpymax(szdst,szsrc,wcchof(szdst))
#define sstrcpylen(szdst,szsrc,lch) strcpylenmax(szdst,szsrc,lch,cchof(szdst))
#define wsstrcpylen(szdst,szsrc,lch) wstrcpylenmax(szdst,szsrc,lch,wcchof(szdst))
#define sstrcat(szdst,szsrc) strcpymax(szdst + strlen(szdst),szsrc,cchof(szdst) - strlen(szdst))
#define wsstrcat(szdst,szsrc) wstrcpymax(szdst + wstrlen(szdst),szsrc,wcchof(szdst) - wstrlen(szdst))
#define strcatmax(szdst,szsrc,cch) strcpymax(szdst + strlen(szdst),szsrc,cch - strlen(szdst))
#define strcatlenmax(szdst,szsrc,lch,cch) strcpylenmax(szdst + strlen(szdst),szsrc,lch,cch - strlen(szdst)) //WZ3.90M 981129
#define wstrcatmax(szdst,szsrc,cch) wstrcpymax(szdst + wstrlen(szdst),szsrc,cch - wstrlen(szdst))
#define sstrcatlen(szdst,szsrc,lch) strcpylenmax(szdst + strlen(szdst),szsrc,lch,cchof(szdst) - strlen(szdst))
#define wstrsize(szstr) ((wstrlen(szstr) + 1) * sizeof(wchar))
#define wstrlensize(szstr) (wstrlen(szstr) * sizeof(wchar))
mchar * TXAPI_(462) strcpymax(mchar *szdst,mchar *szsrc,int lchmax);
BOOL TXAPI_(463) TXAPIBASE txchIsKanji(TXCHAR c);
BOOL TXAPI_(464) TXAPIBASE txchIsReturn(TXCHAR c); // 0x0D0A,0x0A,0x1A
BOOL txchIsSubtitleIllegal(TXCHAR ch);
#ifndef __WZRAS__
#define txchIsAlpha(c) (c < 256 && isalpha(c)) //WCE1.01 971229 new
#define txchIsAlnum(c) (c < 256 && isalnum(c)) //WCE1.01 971229 new
#define txchIsDigit(c) (c < 256 && isdigit(c)) //WCE1.01 971229 new
#endif
wchar* wstrdup(wchar* wszstr);
#if !__OLECPP__ && !UNIX && !__MEMORYDEBUG__
mchar* strdup(mchar* szstr);
#endif
mchar* TXAPI_(910) strdupLen(mchar* str,int lch);
mchar* stristrword(mchar *szstr,mchar *szfind);
mchar* strchrs(mchar *str1,mchar *chrs);
mchar* strchrlast(mchar *str,WORD c);
mchar* strchrex(mchar* p,int ch);
wchar* wstrchrex(wchar* p,int ch);
BOOL strisidi(mchar* szstr,mchar* szId);
// 標準のstrstr/strchr/strichrはTXCHARに対応してないので、
// __strstr/__strchr/__strichrとは動作が異なるので、overrideする
mchar* __strstr(mchar *str1,mchar *str2);
#define strstr __strstr
mchar* __strchr(mchar *str1,WORD c);
#define strchr __strchr
mchar* __strichr(mchar *str1,WORD c);
#define strichr __strichr
mchar* __stristr(mchar *str1,mchar *str2); //WCE1.01B 980615
#define stristr __stristr //WCE1.01B 980615
mchar* strchrex(mchar* p,int ch);
wchar* wstrchrex(wchar* p,int ch);
mchar* strchrtail(mchar* p,int ch);
wchar* wstrchrtail(wchar* p,int ch);
BOOL strismsgheader(mchar* sz);
mchar* TXAPIBASE strGetNextWordTop(mchar* szStr);
mchar * TXAPI_(477) TXAPIBASE strGetWordTop(mchar* szStr);
int TXAPI_(478) TXAPIBASE strGetWordLen(mchar* szStr);
mchar* TXAPI_(845) strGetWord(mchar* szbuff,mchar* szstr);
int TXAPI strGetLineLen(mchar* szStr);
int strGetQuoteLen(mchar* szStr);
mchar * TXAPI_(479) TXAPIBASE strcpylen(mchar *dst,mchar *src,int len);
mchar * TXAPI_(480) strcpylenmax(mchar *dst,mchar *src,int len,int lcxmax);
#ifndef __OLECPP__
int TXAPI_(481) stricmp(mchar* sz1,mchar* sz2);
int TXAPI_(482) strnicmp(mchar* sz1,mchar* sz2,int maxlen);
#endif
mchar* sjis_strupr(mchar* s);
int sjis_strnicmp(mchar* sz1,mchar* sz2,int maxlen);
mchar * TXAPI_(485) strGetLast(mchar *szstr);
mchar* TXAPI strGetLastAscii(mchar* szstr);
int strisidi(mchar* szstr,mchar* szId);
wchar* TXAPI_(466) wstrGetLast(wchar* szstr);
int TXAPI_(467) wstricmp(wchar* sz1,wchar* sz2);
int wstrncmp(wchar* sz1,wchar* sz2,int lch);
int TXAPI_(468) wstrnicmp(wchar* sz1,wchar* sz2,int lch);
wchar* TXAPI_(469) wstrchr(wchar* sz,int c);
wchar* TXAPI_(470) TXAPIBASE wstrGetWordTop(wchar *szStr);
int TXAPI_(471) TXAPIBASE wstrGetWordLen(wchar* szStr);
mchar* TXAPIBASE szwordtop(mchar* sz);
int TXAPIBASE szwordlen(mchar* sz);
#define watoi(sz) watol(sz)
long TXAPI_(472) watol(wchar* sz);
UINT TXAPI_(473) formcharex(mchar* str,UINT offset);
int TXAPI_(474) hextoint(mchar *szhex);
int TXAPI_(475) _hextoint(int c);
#ifdef __TXC__
int _cdecl TXAPI_(105) strlen(mchar *str);
pmchar _cdecl TXAPI_(106) strcpy(mchar *str1,mchar *str2);
pmchar _cdecl TXAPI_(107) strncpy(mchar *str1,mchar *str2,size_t len);
pmchar _cdecl TXAPI_(108) strcat(mchar *str1,mchar *str2);
pmchar _cdecl TXAPI_(109) strnset(mchar *str,int ch,size_t len);
int _cdecl TXAPI_(110) strcmp(mchar *str1,mchar *str2);
int _cdecl TXAPI_(112) strncmp(mchar *str1,mchar *str2,size_t len);
pmchar _cdecl TXAPI_(114) strstr(mchar *str1,mchar *str2);
pmchar _cdecl TXAPI_(115) stristr(mchar *str1,mchar *str2);
pmchar _cdecl TXAPI_(116) stristrword(mchar *str1,mchar *str2);
pmchar _cdecl TXAPI_(117) strchr(mchar *str1,WORD c);
pmchar _cdecl TXAPI_(118) strichr(mchar *str1,WORD c);
pmchar _cdecl TXAPI_(119) strchrs(mchar *str1,mchar *found);
pmchar _cdecl TXAPI_(120) strupr(mchar *str);
pmchar _cdecl TXAPI_(121) strlwr(mchar *str);
long _cdecl TXAPI_(122) atoi(const mchar *str);
void TXAPI_(123) vsprintf(mchar *szdst,mchar *_format,void *pparam);
// unicode string
int _cdecl TXAPI_(775) wstrlen(wchar *str);
wchar* _cdecl TXAPI_(776) wstrcpy(wchar *str1,wchar *str2);
wchar* _cdecl TXAPI_(777) wstrcat(wchar *str1,wchar *str2);
int _cdecl TXAPI_(778) wstrcmp(wchar *str1,wchar *str2);
#endif // __TXC__
//##タブカンマ区切り文字列
#if !__TXC__
int cvszGetWordLen(mchar* csz);
mchar* cvszGetWordTop(mchar* csz);
mchar* cszGetWordTop(mchar* csz);
int cszGetWordLen(mchar* csz);
mchar* cszFindNosensecase(mchar* csz,mchar* sz);
BOOL cszItemDel(mchar* csz,mchar* sz);
mchar* cszItemAddAlloc(mchar* csz0,mchar* sz);
mchar* csszGetInclude(mchar* cssz,mchar* szName);
mchar* csszGetWordTop(mchar* csz);
int csszGetWordLen(mchar* cssz);
int clmsToTclm(mchar* szClms,mchar* tClm,int cchClm,int iClm,int maxClm);
mchar* clmsFromTclmAlloc(mchar* tClm,int cchClm,int iClm,int maxClm,mchar* szFirstClm);
#endif // !__TXC__
//{###TEXT/WZ構造体
//##テキストバッファ基本定義
#define TEXTBUFFSIZE 16384U //1.00F (IBUFF) -> U , 65536U-16U -> 65520U
// テキストバッファの初期サイズ
// 16の倍数であること。
// これはあくまで確保するサイズ。
// バッファに入っているテキストデータのバイト数は、
// text->sizebuffに入っている。
// WINDOWSCEはメモリが少ないので少な目に確保
#define MAXPARASIZE 8192U //1.00F (IBUFF) -> U
// 論理行の最大サイズの目安
// これを越える論理行も何ら問題なく編集できる
#define STDGAPSIZE 2048U //1.00F (IBUFF) -> U
// 最低2048、最大8192程度
#define TEXTBUFFSIZE_MARGIN 8U // WINDOWSCE
// EOF追加,ターミネータのため、8bytes余計に取る
// 最低3バイト余計に取らないといけない
// 追加EOF1バイト分と、ターミネータ2+1バイト分(+1:WCE)
#define TC_SJIS 0 // ShiftJIS (1byte or 2bytes)
// 拡張ASCIIコード(欧文文字:0x80-0xFF)は
// iskanjiと重なるコードは0x80を追加して
// 2bytesで表現する。
// (!TEXTCHAR_UNICODE時のみ)
#define TC_SINGLEBYTE 1 // 1バイト文字(ASCII+拡張ASCII)
// 日本語は使えない
// (!TEXTCHAR_UNICODE時のみ)
#define TC_UNICODE 2 // UNICODE(all 2bytes)
// UNICODEで定義された16bitで表現できる文字が
// 使用可能
// (TEXTCHAR_UNICODE時のみ)
#define TC_EUC 3 // EUC //XZ0.1 990528
#if TB_EUC
#define iseuc(c) (c & 0x80) // cがEUCの1バイト目かどうか返す
#define tbiskanji(c) iseuc(c) // 半角カナの場合もTRUE
#define tbisideo(c) (iseuc(c) && c != CHAR_EUC_KANA) // 半角カナは除く
#define h_tbiskanji(c) iseuc(c)
#define h_tbiskanji2(c) iseuc(c)
#define tbkanjisize(p) eucGetCharSize(p)
#define txchIsJspace(ch) (ch == 0xA1A1) //XZ0.1 990613 new
#else
#define tbiskanji(c) iskanji(c)
#define tbisideo(c) iskanji(c)
#define h_tbiskanji(c) h_iskanji(c)
#define h_tbiskanji2(c) h_iskanji2(c)
#define tbkanjisize(p) 2
#define txchIsJspace(ch) (ch == 0x8140) //XZ0.1 990613 new
#endif
#if UNIX
#define CHAR_CMDLINESW '-'
#define CHAR_TXE_CMDLINESW '='
#define CHAR_PATH_SEPA '/' //WZ4.00Bj 990814
#else
#define CHAR_CMDLINESW '/'
#define CHAR_TXE_CMDLINESW '-'
#define CHAR_PATH_SEPA '\\' //WZ4.00Bj 990814
#endif
#if TEXTCHAR_UNICODE
typedef unsigned short TEXTCHAR; // textbuff char set is UNICODE
#define TEXTSTR(quote) L##quote
#define textvsprintf vsprintf_W
#define textsprintf sprintf_W
#define textstrlen wstrlen
#define textstrcpy wstrcpy
#define textstrcpylen wstrcpylen
#define textstricmp wstricmp
#define textcchof wcchof
#define textsprintf sprintf_W
#define textatol watol
#define textstrchr wstrchr
#define textstrncmp(s1,s2,n) memcmp(s1,s2,(n)*2)
#define textstrnicmp(s1,s2,n) wstrnicmp(s1,s2,n)
#define textmemcmp(s1,s2,n) memcmp(s1,s2,(n)*2)
#define textmemcpy(s1,s2,n) memcpy(s1,s2,(n)*2)
#define textmemmove(s1,s2,n) memmove(s1,s2,(n)*2)
#define textitoa(n,s,r) itow(n,s,r)
#define textstrcpylenmax wstrcpylenmax
#else
typedef unsigned char TEXTCHAR; // textbuff char set is ShiftJIS(ANSI)
#define TEXTSTR(quote) quote
#define textvsprintf vsprintf_A
#define textsprintf sprintf_A
#define textstrlen strlen
#define textstrcpy strcpy
#define textstrcpylen strcpylen
#define textstricmp stricmp
#define textcchof cchof
#define textsprintf sprintf_A
#define textatol atol
#define textstrchr strchr
#define textstrncmp(s1,s2,n) memcmp(s1,s2,n)
#define textstrnicmp(s1,s2,n) strnicmp(s1,s2,n)
#define textmemcmp(s1,s2,n) memcmp(s1,s2,n)
#define textmemcpy(s1,s2,n) memcpy(s1,s2,n)
#define textmemmove(s1,s2,n) memmove(s1,s2,n)
#define textmemchr(s,c,n) memchr(s,c,n)
#define textitoa(n,s,r) itoa(n,s,r)
#define textstrcpylenmax strcpylenmax
#endif
//##TXF定義
// 詳しくは"txf.txt"を参照。
// TXF_PARA_xxx : 段落先頭のみに存在。段落属性を表す。
// 971106 start
#define CHAR_TXF 0x1F // TXF_xxxが続く
// この後にタグ名、アトリビュートが続く。
// タグにはバイナリデータは使わない。0x00や0x0Dなどが入ると混乱するため。
#define CHAR_TXFEND 0x1E // タグの終わり
#define CHAR_ATRDELI 0x1D // 一つのアトリビュートの終わり
//// CHAR_TXF,CHAR_TXFEND,CHAR_ATRDELIのコードはまだ確定していない
//// ESCシーケンスなどとの整合性を調べる
//// 問題が少なそうなコードとして0x08(BS),0x0B(VT),0x18(CAN)も候補
// CHAR_TXFの直後に置く
#define CHAR_TXFTAG_END '/' // 閉タグ
#define CHAR_TXFTAG_CHAR '*' // 文字タグ
#define CHAR_TXFTAG_PARA '#' // 段落タグ
// CHAR_TXFTAG_SINGLEが続くと、改行操作で次行に引き継がない
#define CHAR_TXFTAG_SINGLE '!' // 単独タグ
// 文字数
#define CCHTAG 30 // タグ名の最大文字数+1
#define CCHTXFTAG 500 // アトリビュートも含めて最大文字数+1
// タグが閉じているか調べる時のコンテキスト
typedef struct tagTAGNEST {
BYTE lchTag;
TEXTCHAR szTag[CCHTAG]; // タグ名 アトリビュートは除く
TEXTCHAR* pTag; //WCE1.01 980308 タグアドレス
TEXTCHAR* szAtr; // malloced
// for tagnestNext
SIGNED_BYTE nNest; // 現在のネストレベル
FBOOL fParaTag; // 段落タグ?
DWORD lParam; // ユーザデータ
FBOOL fPreTagIsTop; // (ユーザデータ)直前のタグが開タグだった?
FBOOL fClearTag; // タグのクリア?
//WCE1.01 980308 for for tagnestNext
int nTag; // 現在までのタグ数
struct tagTAGNEST* prev;
struct tagTAGNEST* next;
} TAGNEST;
// タグ解析コンテキスト
typedef struct {
BYTE lchTag;
TEXTCHAR szTag[CCHTAG];
BOOL fSingle; // 単独タグか?
BOOL fPara; // 段落タグか?
BOOL fParaSingle; // 段落単独タグか?
BOOL fEnd; // 閉タグか?
BOOL fChar; // 文字タグか?
BOOL fUser; // ユーザ定義タグか?
} TAGANA;
// for "TD" atr analyze
typedef struct {
int width;
BOOL fWidthAuto;
int lineTop; // default:CELLLINE_LINE
int lineLeft; // default:CELLLINE_LINE
int lineBottom; // default:CELLLINE_NULL
int align; // default:CELLALIGN_LEFT
int xbase; // default:0
} CELLATR;
// atr align
#define CELLALIGN_LEFT 0 // 左揃え
#define CELLALIGN_CENTER 1 // 中央揃え
#define CELLALIGN_RIGHT 2 // 右揃え
// atr line
#define CELLLINE_NULL 0 // 線なし
#define CELLLINE_LINE 1 // 実線
#define CELLLINE_BOLD 2 // 太線
#define CELLLINE_CONNECT 3 // 連結
// for "IMG" atr analyze
typedef struct {
wchar wszfilename[CCHPATHNAME];
int modeDisp ; // 表示モード
#define IMGDISP_WYSIWYG 0 // (default)画面上のサイズと同じサイズで印刷
#define IMGDISP_TEXTRATE 1 // テキストの横幅に対するパーセンテージで印刷
#define IMGDISP_RATE 2 // 図のサイズをパーセンテージで拡大/縮小して印刷
int rate; // (default=100)パーセンテージ
BBOOL fAbsolutePath; //WZ3.90I 981106 絶対パス?
#ifdef WINVER
BITMAPFILEHEADER* dib; // (default=NULL)埋め込みの場合はそのDIBデータ(malloced)
#else
LPVOID dib;
#endif
} IMGATR;
// for "BEAM" atr analyze
typedef struct {
int lx; // lx
BOOL fSpace; // 余白数を指定する
int nSpace; // fSpaceの場合、このBEAMで空ける余白数
} BEAMATR;
// 図
#ifndef __TXC__
typedef struct tagIMGSET {
wchar wszfilename[CCHPATHNAME];
FBOOL fHeadAlloced;
#if !UNIX
BITMAPFILEHEADER* head;
BITMAPINFOHEADER* info;
BITMAPINFO* bitmapinfo;
#endif
LPBYTE bitmap;
struct tagIMGSET* prev; // for Cache link
struct tagIMGSET* next; // for Cache link
} IMGSET;
BOOL imgCreateDIB(IMGSET* img,int cx,int cy,int bits);
BOOL imgSave(IMGSET* img,BOOL fCreateAlways);
void imgFreeContents(IMGSET* img);
#endif
// リンクヒストリ
typedef struct {
#define MAX_LINKHIST 100
IFILE tAdr[MAX_LINKHIST];
int n;
int index;
} LINKHIST;
//##paraatr/見出し
//WCE1.01 980205 new //WZ4.00Bl 990920 全面変更。
// この情報はキャッシュ的に用いること。必ずあると仮定して依存してはいけない。
typedef struct {
IFILE paratop1; // 段落先頭ifile+1(0:無効)
// 段落内のBEAMタブ桁情報(PARAATR_TEXT_BEAMTABは廃止してこれに統合した)
WORD* tlxTab;
int allocTab; // アロケートした要素数
// 数KBを越える長い段落の折り返し計算キャッシュ(GplCache)
IBUFF* tibuff;
UINT paraoff; // 現在tibuffに格納されている中で最大のparatopからのoffsetを保持
int nCache; // 現在の要素数
int allocCache; // アロケートした要素数
} PARAATREX; //WZ4.00Bl 990918 new
enum {
CPARA_NORMAL=1,
CPARA_DIVMUL,CPARA_MULDIV,
CPARA_IF_0,CPARA_IF_1,CPARA_IF_A,CPARA_ELSE,CPARA_ENDIF,
CPARA_USER1_TOP,CPARA_USER1_END,
CPARA_USER2_TOP,CPARA_USER2_END,
};
#if !WINDOWSCE
#pragma pack(push,1) //WZ4.00Bl 990918 メモリ節約
#endif
typedef struct {
PARAATREX* pex; // 拡張情報 //WZ4.00Bl 990918
IFILE len; // 段落の長さ(0:不明) //WZ4.00Bl 990920
WORD fEdited:1; // 編集が加えられた?
WORD nline:6; // この段落の表示行数(0:不明,PARA_NLINE_BIG:多すぎるのでカウントを中止した for 長大段落)
#define PARA_NLINE_BIG 63
WORD cpara:4; // この段落の色分け属性(広範囲色分け用)(0:不明)
WORD fCparaElif:1; // "elif"の段落か?
} PARAATR;
#if !WINDOWSCE
#pragma pack(pop)
#endif
#define MAX_NEST_CPARA 10
typedef struct {
PARAATR* buff; // PARAATR buff
NPARA cur0; // gap start
NPARA cur; // gap end + 1
NPARA size; // buff size
WORD fPsbOK:1; // EOFまで数え終わり、数え直す必要はない?
WORD fPsbSetNlineall:1; // PSBによってtext->nlineAllがセットされた?
WORD fPsbCountedAll:1; // すべての段落をカウントし終えた?
WORD fPsbOnProc:1; // 計算処理中?
WORD fNoSetGplCashe:2; // 一時的にGplキャッシュに追加しない?
NPARA nparaTopLast; // paratop1を保持している最終段落
NPARA nparaCparaLast; // tCparaCond/nestCparaキャッシュを保持しているnpara
BYTE tCparaCond[MAX_NEST_CPARA];
#define CPARA_1 0x01 // 条件TRUE?
#define CPARA_A 0x02 // #elseで反転しない?
BYTE nestCpara; //
} PARAATR_CONTEXT;
#define HEADLINE_N 6 // 見出し数
#define CCHHEADLINE CCHWORD // 見出しの最大長さ //WZ4.00Bj 990824 CCHSWORDから拡大 for 正規表現
typedef struct {
mchar sz[CCHHEADLINE];
BYTE lch; // 見出し文字列の長さ(無効な場合もあるので注意)
BBOOL fDelete;
BBOOL fCfunc; // C関数定義を見出しとする?
struct tagRE_CONTEXT* re; // 正規表現見出しの場合は、!=NULL
} HEADLINE;
typedef struct {
HEADLINE t[HEADLINE_N];
} HEADLINE_SET;
void cszToHeadline(mchar* csz,HEADLINE_SET* head);
mchar* cszFromHeadlineAlloc(HEADLINE_SET* head);
//##TX用ウィンドウメッセージ
// ユーザが間違えてWM_TXUSER以下を使った場合でも影響が出にくい様に800-900番台を使用
// 700-719:イベント・フック
#define WM_TXEVENT (WM_USER+700) // id arg WZ3.90I 981024
// textから自分自身(text->hwndtext)へのイベント通知
#define TXEVENT_INPUT 1 // IMEを介さないキーボードからの入力。arg:挿入される文字列
// txSetHookWndproctextResultを使って1を返すと入力を行わない
#define TXEVENT_INPUTIME 2 // IMEからの入力。arg:挿入される文字列
// txSetHookWndproctextResultを使って1を返すと入力を行わない
#define TXEVENT_OPEN 3 // (fFrameのみ)オープンされた
#define TXEVENT_OPENED 4 // (fFrameのみ)オープン後
#define TXEVENT_SAVE 5 // (fFrameのみ)保存前。arg:ファイル名
#define TXEVENT_SAVED 6 // (fFrameのみ)保存後。arg:ファイル名
#define TXEVENT_CLOSE 7 // (fFrameのみ)閉じる前
#define TXEVENT_IDMEXEC 10 // IDMの実行前。arg:idm
// txSetHookWndproctextResultを使って1を返すとIDMの処理を行わない
#define TXEVENT_2STROKE 11 // 2ストロークの実行前
// txSetHookWndproctextResultを使って1を返すと2ストロークの処理を行わない
#define TXEVENT_JUMPLINK 12 // リンク先へジャンプ
// arg:リンク先
#define TXEVENT_JUMPURL 13 // URL/E-Mailへジャンプ
// arg:ジャンプ先
#define TXEVENT_CURSORMOVE 14 //WZ4.00Aa 990109 new
// ユーザ操作でカーソル位置が変化した可能性がある
#define TXEVENT_IDMEXECED 15 // IDMの実行後。arg:idm。 //WZ4.00Ab 990112 new
// 720-739: TXE用。アプリケーションで、アプリケーションに送られたキーのキャプチャーetc用
#define WM_TX_KEYDOWN (WM_USER+720) // vk hwnd
// キーをキャプチャーするかどうか返す
#define WM_TX_SYSKEYDOWN (WM_USER+721) // vk hwnd
// キーをキャプチャーするかどうか返す
#define WM_TX_LBUTTONDBLCLK (WM_USER+722) // vk hwnd
// キーをキャプチャーするかどうか返す
#define WM_TX_CHAR (WM_USER+723) // vk hwnd
// キーをキャプチャーするかどうか返す
//PWZ2BETA0.3A 980526 new
// 740-759: ダイアログウィンドウプロシジャ専用。wndprocText/Baseには無関係
#define WM_TXDIALOG_WRITEITEM (WM_USER+740) // id 0
#define WM_TXDIALOG_PAGECHANGED (WM_USER+741) // iPage 0
#define WM_TXDIALOG_WIZNEXT (WM_USER+742) // iPage 0
//WZ3.90G 980830 返り値(移動できないなら-1)を返すこと
#define WM_TXDIALOG_WIZBACK (WM_USER+743) // iPage 0
//WZ3.90G 980830 返り値(移動できないなら-1)を返すこと
#define WM_TXDIALOG_NOTIFY (WM_USER+744) // id arg
#define TXDLGN_REFERED 100 // dialogControlIDによる参照が行われた。arg = idd。
#define TXDLGN_PSN_APPLY 101 // プロパティシートでOKされた。arg = iPage 返り値(OKできないなら-1)を返すこと //WZ4.00Ab 990119 new
// 800-829: WZ内部用
#define WM_TXIDLEEXEC (WM_USER+800) // id lParam
// アイドル時に実行する内部動作 for wndprocBase
// IDLE_XXX
#define IDLE_FIRST 100 // wndprocBase
#define IDLE_REG 101 // wndprocBase
#define IDLE_EXECFIND 102 // wndprocText
#define IDLE_FLUSHWINDOW 103 // wndprocBase
#define IDLE_CHECKFILETIME 104 // wndprocBase //WZ4.00A 981227
#define IDLE_EXECREPLACESA 105 // wndprocBase //WZ4.00Bl 990916
#define WM_TXDRAGDROP (WM_USER+801) // TXDD_xxx arg
//WZ3.90I 981103 for D&D
#define TXDD_START 1 // 開始
#define TXDD_DROP 2 // ドロップ arg = TXDD_DROP_ARG*
typedef struct {
HGLOBAL hGlobal;
TX* text; // !=NULLならtextのデータを挿入
} TXDD_DROP_ARG;
#define TXDD_DRAGOVER 3 // ドロップ先指定中 arg = MAKELONG(x,y)
#define TXDD_SETDISP 4 // txSetDispする
#define TXDD_ACTIVATE 5 // SetForegroundWindowする
#define WM_TXEMACS_TXCMD (WM_USER+802) //WZ4.00A 981230 new
#define WM_TXHTML_TXCMDPOST (WM_USER+803) //WZ4.00A 981230 new emacsライクキー定義でHTML編集ができるようにした。両者でWM_TXUSERを使っていてバッティングしていた。
#define WM_WKLBUTTON3 (WM_USER+804) //WZ4.00Bl 990909
#define WM_WKLBUTTON4 (WM_USER+805) //WZ4.00Bl 990909
// 830-849: WZ MAIL EDITOR専用
#define WM_MAILEDITN_CLOSE (WM_USER+830) // id fEnglish
//WZ3.90G 980902 fEnglish:英文
#define WM_MAILEDITN_SAVE (WM_USER+831) // id ヘッダ部分のサイズ
// 850-899: wndprocBase専用。他インスタンスのWZ窓の操作用/PostMessage用
#define WM_TXGETEDIT (WM_USER+850) // 0 0
#define WM_TXUISAVE (WM_USER+851) // 0 0
#define WM_TXQUIT (WM_USER+852) // 0 0
#define WM_TXSETACTIVE (WM_USER+853)
#define WM_TXSETWINDOWLIST (WM_USER+854) // hctrl TXSWL_LPARAM
enum {TXSWL_HISTMENU,TXSWL_WINDOWLIST,TXSWL_PRJ};
typedef struct {
UINT id:8; // 0オリジン、番号指定
UINT mode:2; // モード
UINT iMenuPos:8; // InsertMenuに渡す挿入場所
UINT fCur:1; // この項目はカレント?
} TXSWL_LPARAM;
#define WM_TXKEYMACROCONTINUE (WM_USER+855) // 0 0
#define WM_TXNEXTPARA (WM_USER+856) // 0 0
#define WM_TXSETUNDISP (WM_USER+857) // fSetUndisp
#define WM_TXJUMPADDRESS (WM_USER+858) // 0 address
#define WM_TXJUMPFILEEND (WM_USER+859) // void void
//WZ3.90I 981023 new
#define WM_TXSPLITPARA (WM_USER+860) // void void
//WZ3.90I 981023 new
// カーソル位置の前文字が改行でなければ改良を挿入。
#define WM_TXCLOSEEVERY (WM_USER+861) // fForce 0 WCE0.99
#define WM_TXQUERYCLOSE (WM_USER+862) // 0 0 // フックを可能にすることも兼ねている
#define WM_TXWNDSETPOSSIZE (WM_USER+863) // x,y cx,cy //WZ4.00A 981227
// 900-949: WM_TERM_xxx,WM_MAIL_xxx
// 950-990: WM_OUTLINE_xxx
#define SBLISTN_FLUSHLIST (WM_USER+996)
#define SBLISTN_FLUSHCONTENT (WM_USER+997)
#define SBLISTN_SET (WM_USER+998)
#define SBLISTN_ADD (WM_USER+999)
// 1000: for user macro
#define WM_TXUSER (WM_USER+1000) // これ以下、user用
//##WM_NOTIFY/WM_TIMER/WM_COPYDATA/IDM
// text->hwndtextから親ウィンドウへの通知
//WZ3.90I 981026 WM_TXNOTIFYを廃止し、WM_NOTIFYによる通知に変更。
//WM_NOTIFY
#if defined(WINVER) || UNIX // NMHDRが定義されている場合のみ
typedef struct {
NMHDR hdr; // hdrが先頭
} TXNOTIFY;
#endif
#define TXN_CHANGENPARA 1 // ユーザ操作でy座標が変化した
#define TXN_CHANGEX 2 // ユーザ操作でx座標が変化した(未完成)
#define TXN_IDMEXECPRE 3 //WCE1.01 980421 idmExec前か、文字挿入前
#define TXN_IDMEXECPOST 4 //WCE1.01 980421 idmExec後か、文字挿入後
// filelist
#define TXN_FILELIST_CHANGEFOLDER 101 // フォルダが変化した
#define TXN_FILELIST_CHANGESELECT 102 // 選択内容が変化した
//WM_TIMER id
#define WM_TIMER_TXSCROLLMOUSE 900
#define WM_TIMER_TXAUTOSAVE 901
#define WM_TIMER_TXFLUSHTABLE 902 //WCE1.01 971222
#define WM_TIMER_TXFLUSHDISPBOX 903 //WCE1.01 980209
#define WM_TIMER_TXBRINKCURSOR 904 //WCE1.01 980409
#define WM_TIMER_TXDRAGCHECK 905 //WZ3.90G 980827 new
#define WM_TIMER_TXCLICKACTIVE 906 //WZ3.90I 981104
#define WM_TIMER_TXFLUSHDETAIL 907 //WZ3.90I 981106
#define WM_TIMER_TXAUTOSCROLL 908 //WZ3.90J 981110
#define WM_TIMER_TXFLUSHBEAMTAB 909 //WZ3.90L 981115
#define WM_TIMER_HISTSAVE 910 //WZ4.00Bj 990808 for PWZ
#define WM_TIMER_SCROLLBARPROP 911 //WZ4.00Bl 990920 for プロポーショナルスクロールバー
#define WM_TIMER_TXUSER 1000 // これ以下、user用
//WM_COPYDATA id
// ユーザが間違えてWM_COPYDATA_TXUSER以下を使った場合でも影響が出にくい様に900番台を使用
#define WM_COPYDATA_CMPFILENAME 901 // CD_BOOL //WZ4.00Bp 991014 仕様変更
typedef struct {
wchar wszfilename[CCHPATHNAME];
wchar wszShort[CCHPATHNAME]; // 短い名前がある場合は、その名前。
} CMPFILENAMEARG; //WZ4.00Bp 991014 new
#define WM_COPYDATA_CMDLINE 902 //
#define WM_COPYDATA_CMPBUFF 903 //WCE1.01 980202
// マッチしたバイト数+1を返す
#define WM_COPYDATA_ACCOUNT 904 // ACCOUNT受け渡し
#define WM_COPYDATA_INSERT 905 // 挿入する //WZ3.90I 981023
//#define WM_COPYDATA_CMPFILEID 906 //WZ4.00Bj 990825 new //WZ4.00Bp 991014 廃止
#define WM_COPYDATA_GETFILENAME 907 //WZ4.00Bl 990908 new
#define WM_COPYDATA_FORK 908 //WZ4.00Bl 990914 new
#define WM_COPYDATA_TXUSER 1000 // これ以下、user用
// WM_COPYDATAは返り値0は返しちゃいけないみたいなので...
#define CD_TRUE 2
#define CD_FALSE 1
//IDM(id menu)
#define IDM_TXUSER 1000 // これ以下、30000までuser用
//##検索
typedef DWORD SEARCHMODE; //1.92 検索モード
#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 // 正規表現による検索(text->modeReで動作が変わる)
// 正規表現による検索では、SEARCH_NOESC,
// SEARCH_NOSYMBOL,SEARCH_WORD,SEARCH_NOSENSEZENHANの指定は無効
// SEARCH_NOSENSECASEはOK
#define REPLACE_CONFIRM 0x00000800L // 置換確認を行う(置換時のみ)
#define REPLACE_ONCE 0x00001000L //1.96 最初の1つだけ置換
#define SEARCH_NOSYMBOL 0x00002000L //2.98 970309 テキストの改行や空白や記号を無視して検索
#define SEARCH_NOSELECT 0x00004000L // 検索で見つけた文字列の選択を行わない
#define SEARCH_ALLTEXT 0x00008000L //1.01A オープン中の全てのテキストを対象として検索
// (検索するtextが裏テキストの場合は無効)(内部用)
#define SEARCH_PARA1 0x00010000L //PWZ2BETA0.5 980617 現在の段落内のみ検索する
// TXHIGH時には対応しない
#define SEARCH_REWZ 0x00020400L //WZ3.90H 980908 正規表現による検索。必ずWZ標準で検索
#define SEARCH_REVWXW 0x00040400L //WZ3.90H 980908 正規表現による検索。必ずVWXW互換で検索
#define SEARCH_REVWXWEX 0x00080400L //WZ3.90H 980908 正規表現による検索。必ず拡張VWXW互換で検索
/* //WZ3.90H 980908 廃止。SEARCHMODEは32bitしかないので、関係ないものは割り当てない
#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のみ)
*/
// 正規表現用追加検索モード
typedef DWORD SEARCHRE;
#define SEARCHRE_NOTOPPARA 0x00000001L // メモリブロックの先頭は段落先頭でない
#define SEARCHRE_NOTOPWORD 0x00000002L // メモリブロックの先頭は単語先頭でない
#define SEARCHRE_NOENDPARA 0x00000004L // メモリブロックの末尾は段落末尾でない
#define SEARCHRE_NOENDWORD 0x00000008L // メモリブロックの末尾は単語末尾でない
#define SEARCHRE_VWXW 0x00000010L // VWXWとできるだけ互換性を持つモード
#define SEARCHRE_VWXWEX 0x00000020L // VWXWの拡張表現を使用。SEARCHRE_VWXWのときだけ指定すること。
#define SEARCHRE_BINARY 0x00000040L // バイナリ検索
#define SEARCHRE_TXF 0x00000080L // CHAR_TXFを特別扱い?
typedef struct {
BOOL fWord;
BOOL fSenseCase;
BOOL fSearchNoSymbol;
BOOL fFuzzy;
BOOL fPrev;
BOOL fAll;
BOOL fArea;
BOOL fReplaceConfirm;
BOOL fRe; //WZ3.90G 980905
BOOL fNoEsc; //WZ4.00Bl 990908
BOOL fAllText; //WZ4.00Bl 990916
// 以下、SEARCHMODEに関係ない
BOOL fSearchSet;
BOOL fOpenTempWindow; //WZ3.90H 980914
BOOL fReplace; //WZ3.90H 980914
int mode; //WZ3.90J 981112 基本/曖昧/単語/正規
#define SEARCHOPT_DIALOG_NEW 1
TX* text;
} SEARCHOPT;
typedef struct {
mchar szfind[CCHWORD];
mchar szreplace[CCHWORD];
SEARCHMODE searchmode;
} SEARCH_PACKET; //WZ3.90H 980910 new
typedef struct {
TX* text;
TX* textExpandTag; //WZ3.90L 981123 NULL以外ならfExpandTag時にこちらに展開する。
int cbFind;
int nReplace;
SEARCHMODE searchmode; //WZ3.90H 980907
mchar* szreplace0; //WZ3.90H 980907 オリジナルのszreplace
mchar szreplace[CCHTXSTR]; //WZ3.90H 980907 置換文字列の'\'対応
//WZ3.90L 981123 CCHWORD->CCHTXSTRに拡大
int lchReplace;
BOOL fExistTag; //WZ3.90H 980907 正規表現置換でタグ指定がある?
#define RETAG_EXIST 0x01
#define RETAG_FIND 0x02 // $+
#define RETAG_FINDPREV 0x04 // $`
#define RETAG_FINDNEXT 0x08 // $'
IFILE cliptop; //WZ3.90H 980908 for 範囲内の確認置換
//WZ3.90H 980908 範囲内の置換で確認がONだと1回しか置換されなかった
} TXSEARCH_CONTEXT; //WZ3.90L 981123 検索置換実行時コンテキスト
BOOL rcReplaceInit(TXSEARCH_CONTEXT* rc,BOOL fExpandTag);
//##KEY
#define CCHKEY 20 // キーボードのキー表記を文字列で表した時の最大長
#define TXVK_MAX_2STROKE 10 // 2ストロークキーMAX
typedef int WZKEY;
typedef WORD WZCMD;
#define TXVK_NULL 0x00 // NULL
#define TXVK_ASCIITOP 0x01 // ASCII(0x40)
#define TXVK_ASCIIBASEEND 0x20 // ASCII(0x5F)
#define TXVK_ASCIIEND 0x26 // ASCII(0x5F) + 6
//WZ3.90I 981103 +6 : '-'など、他のキーも使えるようにした。
#define TXVK_NUMTOP 0x27 // 数字先頭'0'
#define TXVK_NUMEND 0x30 // 数字末尾'9'
#define TXVK_CONTROLTOP 0x31 // コントロールコード先頭
#define TXVK_NEXT 0x31
#define TXVK_PRIOR 0x32
#define TXVK_INSERT 0x33
#define TXVK_DELETE 0x34
#define TXVK_UP 0x35
#define TXVK_LEFT 0x36
#define TXVK_RIGHT 0x37
#define TXVK_DOWN 0x38
#define TXVK_HOME 0x39
#define TXVK_END 0x3A
#define TXVK_ESCAPE 0x3B
#define TXVK_TAB 0x3C
#define TXVK_BACK 0x3D
#define TXVK_RETURN 0x3E
#define TXVK_SPACE 0x3F
#define TXVK_MOUSEL 0x40
#define TXVK_MOUSEL2 0x41
#define TXVK_MOUSEL3 0x42
#define TXVK_MOUSEL4 0x43
#define TXVK_MOUSER 0x44
#define TXVK_F1 0x45
#define TXVK_F15 (TXVK_F1 + 15 - 1)
#define TXVK_CONTROLEND TXVK_F15// コントロールコードこれまで
#define TXVK_SIZE (TXVK_CONTROLEND + 1)
#define TXVK_ADD_SHIFT (TXVK_SIZE * 1)
#define TXVK_ADD_CONTROL (TXVK_SIZE * 2)
#define TXVK_ADD_SHIFTCONTROL (TXVK_SIZE * 3)
#define TXVK_ADD_MENU (TXVK_SIZE * 4)
#define TXVK_ADD_SHIFTMENU (TXVK_SIZE * 5)
#define TXVK_ADD_CONTROLMENU (TXVK_SIZE * 6)
#define TXVK_ADD_SHIFTCONTROLMENU (TXVK_SIZE * 7)
#define TXVK_ADD_2STROKE(i) (TXVK_SIZE * 8 + (TXVK_NUMEND + 1) * (i))
typedef struct {
FBOOL fInUse; // 使用中
mchar szPre[CCHKEY];
int lchPre;
} PREKEY;
enum {
FKEY_NORMAL=0,FKEY_SHIFT,FKEY_CTRL,FKEY_SHIFTCTRL,FKEY_N,
};
#define FKEY_SIZE 13 // 登録できる文字数+1
#define FKEY_NKEY 12 // 最大キー数
typedef struct {
// 2ストロークキー
int nPre; // 使用中の数
PREKEY tPre[TXVK_MAX_2STROKE];
// キーに割り当てられたコマンド
WZCMD tWzcmd[TXVK_ADD_2STROKE(TXVK_MAX_2STROKE)];
#if !WINDOWSCE
// ファンクションキー表示内容 //WZ3.90I 981107
//WZ4.00Bl 990909 ファンクションキー表示バッファが足りなかったので拡大。
#define CCH_CSZFKEY (FKEY_NKEY*(FKEY_SIZE+3)) //WZ4.00Bl 990909
mchar tcszFkey[FKEY_N][CCH_CSZFKEY]; // タブ区切りcsz
#endif
} KEY;
typedef struct {
BYTE lch;
mchar *sz;
WORD idm;
} SZCMDTOWZCMD;
extern SZCMDTOWZCMD _tSzcmdToWzcmd[];
//##コマンドライン解析
typedef struct tagWZMAILEDITORFLAGS {
DWORD modeMailAddress:2; //WCE1.01 980409 アドレス帳モード
#define MODEMAILADDRESS_EMAIL 0
#define MODEMAILADDRESS_NIFTY 1
DWORD category:3; //PWZ2BETA0.3 980522 種類
#define MAILEDIT_MAIL 0 // メール
#define MAILEDIT_MESSAGE 1 // メッセージ
#define MAILEDIT_NOTE 2 // WZ NOTE
DWORD categoryMailbox:3; //PWZ2BETA0.3 980522
// MAILBOX_INTERNET etc
DWORD charset:3; //WZ3.90M 981129 旧fEnglish
DWORD fSendButton:1; //WZ4.00Bj 990812 「送信」ボタンを付ける?
DWORD fDispToCc:1; //WZ4.00Bo 991011 ToとCcを表示?
DWORD reserved:19; //WZ4.00Bj 990812 合計が32bitになってなかったので修正
} WZMAILEDITORFLAGS; //PWZ2BETA0.3 980510
typedef struct {
BOOL fNeedCreateInstance; // このコマンドラインの実行には、
// 新しいインスタンスを生成する必要がある
wchar wszfilename[CCHPATHNAME]; // 編集ファイル名
// 複数指定の場合は、先頭に指定されたファイル名
// 後続のファイル名は無視される
wchar wszMacro[CCHWORD]; // オープン後、このマクロを実行
wchar wszExt[CCHNAME]; // この拡張子をデフォルトで付ける
wchar wszMacroFork[CCHPATHNAME];
// WZ Editorではなく、Filerなど
// PWZ apを起動
mchar szFind[CCHWORD]; // 検索文字列
mchar szcfg[CCHSTYLENAME]; //WZ3.90J 981112 使用する設定名
#if WZFUNC_PRINT
mchar szlpstyle[CCHLPSTYLE];//WZ4.00Bj 990830 印刷スタイル名
#endif
int nCmdShow; // nCmdShow
WORD fViewer:1; // viewモードで起動
WORD fMulti:1; // 複数のファイル名が指定されている
WORD fSingleFileName:1; // コマンドラインに空白を含むファイル名をそのまま指定
// このオプション指定は、ファイル名の指定の前に行なうこと
WORD fNoCheckDuplicate:1; // 多重化でもなく、二重化でもなく、
// ファイルを複数窓でオープンする
WORD fNoAddHist:1; // 起動時にファイル名をヒストリに追加しない
WORD fNoTextPathSearch:1; // テキストファイルのパス検索をしない
WORD fNoProfile:1; // txOpenTextでプロファイルを参照しない
WORD fNoProfileJump:1; // txOpenTextでプロファイルによるジャンプをしない? //WZ4.00Bl 990922
WORD fClipPaste:1; //PWZ2BETA0.3 980512 起動後にペーストする
WORD fNoFileShareControl:1; //PWZ2BETA0.4 980604 排他制御をかけない?
WORD fReload:1; //PWZ2BETA0.4 980607 既に起動されているときは、再読み込みする
WORD fTags:1; //PWZ2BETA0.4 980612 タグファイルとして開く
WORD fOpenMulti:1; //WZ3.90H 980915 もし既にオープンされていたら多重化する。
WORD fKcOpenAuto:1; //WZ4.00Bl 990915 漢字コードを自動判別?
WORD fKcOpen:1; //WZ3.90H 980927 kcOpenの漢字コードで開く
WORD kcOpen:3; //WZ3.90H 980927
WORD fPrjOpen:1; //WZ3.90I 981030 プロジェクトを開く?
WORD fSetWindowPos:1; //WZ3.90I 981030 ウィンドウ位置を指定?
WORD fDuptext:1; //WZ3.90I 981103 2重化?
WORD fOpenQuit:1; //WZ3.90I 981103 ファイルオープンダイアログを出して終了
WORD fJumpAddress:1; //WZ3.90L 981123 adrJumpにジャンプ?
WORD fIDM_UINEW:1; //WZ3.90N 981202 IDM_UINEWする?
WORD fNeedCreateWindow:1; //WZ4.00Ab 990204 このコマンドラインの実行には新しいウィンドウを作成する必要がある
// 空テキスト上からの実行の場合でも、空テキストはそのままで、新しいウィンドウを作成する必要がある
WORD fLpPrint:1; //WZ4.00Bj 990830 印刷する?ダイアログを表示
WORD fLpPrintExec:1; //WZ4.00Bj 990830 印刷する?直ちに実行。
HWND ehHwnd; // キャプチャ中の他プロセスの"EDIT"クラスウィンドウハンドル
HWND ehHwndBase; // ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
BYTE ehTarget; //WZ3.90I 981031 ehTarget
NPARA nparaJump; // ジャンプ先(0:指定なし)
int offset1Jump; // ジャンプ先のバイトオフセット+1(0:指定なし)
int fJumpLy; // 't':lyを0に
// 'c':lyを中央に
// n:lyをn-1に
IFILE adrJump; //WZ3.90L 981123 ジャンプ先アドレス
FBOOL fUiReg; // レジストリメンテ?
WORD igene1; //WCE1.01 980201 (gene1 - 1)の世代を開く
HWND hwndMailer; //WCE1.01 980327 メーラのhwnd
WORD idMail; //WCE1.01 980327 このメールのID
BYTE modeMail; //WCE1.01 980327 モード
WZMAILEDITORFLAGS mailflags;//PWZ2BETA0.3 980522
RECT rect; //WZ3.90I 981030 ウィンドウ位置(fSetWindowPos時に有効)
} CMDLINECONTEXT;
BOOL cmdlineAnalyzeW(CMDLINECONTEXT* cc,wchar* szcmdline,int nCmdShow);
void cmdlineDeleteOneFilenameW(wchar* szcmdline);
void SendMessageCmdline(HWND hwnd,wchar* wszcmdline);
typedef struct {
HWND hwnd; // fAlreadyOpen : 既にオープンされていたテキストのhwndbase
// !fAlreadyOpen : オープンしたテキストのhwndbase
TX* text; // オープンしたtext(同一プロセスWZの場合)
// fAlreadyOpenで、同一プロセスWZなら、
// 既にオープンされているtext
FBOOL fAlreadyOpen; // 既にオープンされていた
//WZ4.00Bl 990916 スペルミス修正fAlrearyOpen->fAlreadyOpen
FBOOL fWzexec; // WZを起動した
BYTE reserved[32];
} TXFORKRESULT;
//##印刷/FONTSET
// 標準の文字の高さ
#if WINDOWSCE
#if WINDOWSCE2
#define lfHeightDefault 10
#define lfHeightDialogDefault 10
#else
#define lfHeightDefault 8
#define lfHeightDialogDefault 8
#endif
#else
#define lfHeightDefault 12
#define lfHeightDialogDefault 9
#endif
#define CXY_LPREVIEW_FRAMEBASE 4
// ユーザフォントセット定義 //WZ4.00Bl 990920 new
#define USERFONTSET_N 3 //WZ4.00Bl 990919 ユーザ定義できる数。
typedef struct {
mchar lfFaceName[LF_FACESIZE];
mchar lfFaceName2[LF_FACESIZE];
mchar szHeight2[5]; // lfFaceName2のサイズ
// 0:標準、+n,-n:増減、n%:比率指定
BBOOL fFont2_5C; // 文字コード5C(\)にhfont2を用いる? //WZ4.00Bl 990920
BYTE reserved[40]; // 拡張用
} USERFONTSET;
typedef struct tagFONTSET {
BYTE configTop;
// ユーザ指定 - LOGFONTに影響する部分、CACHEのタグとして使用
mchar lfFaceName[LF_FACESIZE];
int lfHeight;
FBOOL lfItalic; // イタリック?
FBOOL lfUnderline; // アンダーライン?
FBOOL lfStrikeOut; // 打ち消し線?
WORD lfWeight; //WCE1.01 980302 太字も使える様に
// 0:標準 1-1000: 太さを指定。1000が一番太い
// ユーザ指定 - LOGFONTに影響しない部分、CACHEのタグとしては使用しない
FBOOL lfEuro; // SJIS中の欧文処理をする?
WORD lfSup; // 上付き表示する?
// しない場合は0
// する場合は基準フォントのcyAscent
BYTE configEnd;
// 内部情報
HFONT hfont;
HFONT hfont2; // フォント2(半角英字表示に用いる)(通常はなし) //WZ4.00Bl 990919
int cxChar; // 文字幅
int cyChar; // 文字の高さ
int cyAscent; // 文字のベースラインより下の部分の高さ
int cyDescent; // 文字のベースラインより下の部分の高さ
int tcyAscent[2]; // hfont2がある場合、hfont,hfont2それぞれのAscent //WZ4.00Bl 990920
int tcyDescent[2]; // hfont2がある場合、hfont,hfont2それぞれのDescent //WZ4.00Bl 990920
int cxCharKanji; // 漢字の文字幅(fKanji時のみ)
int lfHeightIme; // IMEに渡す用 //WZ4.00Bn 991005
FBOOL fProp; // プロポーショナルフォント?
// 漢字は固定ピッチとして扱う
// ひらがな、カタカナをプロポーショナルとする
FBOOL fKanji; // TRUE:漢字を含むフォント(ShiftJIS)、FALSE:漢字を含まないフォント(文字コード0-255まで)
CBOOL fLock; //WZ3.90O 981203 キャッシュアウトされないようにロックされている?
FBOOL fFont2_5C; // 文字コード5C(\)にhfont2を用いる? //WZ4.00Bl 990920
WORD* tcxChar; // fPropの場合、文字幅の配列
struct tagFONTSET* prev; // for Cache link
struct tagFONTSET* next; // for Cache link
} FONTSET;
enum {FRAME_NONE,FRAME_LINE,FRAME_DOUBLELINE};
typedef struct {
mchar lfFaceName[LF_FACESIZE];
int lfHeight; // フォントの高さ(perHeight != 0ならperHeightに従う)
WORD perHeight; // !=0なら、フォント高さを本文フォント基準の%で指定
FBOOL lfItalic; // イタリック?
FBOOL lfUnderline; // アンダーライン?
WORD lfWeight; // 太字
// 0:標準 1-1000: 太さを指定。1000が一番太い
BYTE modeAlign; // 配置
// (ALIGN_NONE,ALIGN_LEFT,ALIGN_CENTER,ALIGN_RIGHT)
WORD perNline; // 行どり(%)
COLORREF rgbColor; // 文字の色
BYTE modeFrameLeft; // 枠線のなし/あり
BYTE modeFrameTop;
BYTE modeFrameRight;
BYTE modeFrameBottom;
#define pointToDpt(pt) (pt * 10)
WORD dptFrameLeft; // 枠線の太さ(0.1ポイント単位)
WORD dptFrameTop;
WORD dptFrameRight;
WORD dptFrameBottom;
BYTE perFrameAmi; // 枠線の網掛け(%)
} HEADLINESTYLE; // 見出しスタイル
typedef struct {
BYTE configTop;
// 以下、ユーザ設定
// configEndまでバイナリ出力
// dm:プリンタオプション
// twips:1/1440inch = 0.01764mm (最大32767twipsまでであることに注意)
// mcm:0.1mm
// 設定値はmcmで持つ。twipsで持って、ダイアログ設定時にmcmに変換すると
// 割り算の誤差によってダイアログで何も変更しないでOKしても設定値が変わった。
// lpx:プリンタピクセル座標
// プリンタ
SIGNED_WORD dmPaperSize; // 用紙サイズ
SIGNED_WORD dmOrientation; // 用紙の向き
SIGNED_WORD dmScale; // スケーリング(100=等倍)(未完成)
SIGNED_WORD dmScaleFont; // フォント(本文と見出し)と図のスケーリング(100=等倍)
SIGNED_WORD dmDefaultSource; // 用紙供給元
SIGNED_WORD dmTTOption; // TrueTypeフォントの印刷方法
SIGNED_WORD dmPrintQuality; // 印字品質(マイナス値の場合もある)
BBOOL fPrinterName; // プリンタ名を指定するか
mchar szPrinterName[CCHWORD]; // プリンタ名
// 余白
SIGNED_WORD mcmMarginTop; // 上余白
SIGNED_WORD mcmMarginLeft; // 左余白
SIGNED_WORD mcmMarginBottom; // 下余白
SIGNED_WORD mcmMarginRight; // 右余白
SIGNED_WORD mcmPaperWidth; // 用紙サイズ
SIGNED_WORD mcmPaperHeight; // 用紙サイズ
SIGNED_WORD mcmCharInt; // 字間(未完成)
SIGNED_WORD mcmLineInt; // 行間
SIGNED_WORD mcmClmInt; // 段組間の空白
BBOOL fMarginSymmetry; // 左右ページでマージンを対称に
BBOOL fLineInt; // 行間を指定?
// 文字数・行数
BYTE modeLcxLcy; // 文字数・行数の指定方法
#define MODELCXLCY_TEXT 0 // 文書の設定を使用
#define MODELCXLCY_SPECIFY 1 // 指定
#define MODELCXLCY_PAPER 2 // 用紙サイズから自動計算
SIGNED_WORD lcx; // 文字数
SIGNED_WORD lcy; // 行数
SIGNED_WORD nClm; // 段組数
BYTE modeVertical; // 縦書き/横書き //WZ3.90O 981204
// ヘッダ・フッタ
SIGNED_WORD mcmMarginHeader; // ヘッダ上余白
SIGNED_WORD mcmMarginFooter; // フッタ下余白
BBOOL fHeader; // ヘッダを印刷
BBOOL fFooter; // フッタを印刷
BBOOL fSpecifyHeader2; // 偶数ページのヘッダ/フッタを指定する?
BBOOL fHeaderSymmetry; // 左右ページでヘッダフッタを対称に
mchar szHeader[CCHWORD]; // ヘッダ文字列
mchar szFooter[CCHWORD]; // フッタ文字列
mchar szHeader2[CCHWORD]; // 偶数ページのヘッダ文字列
mchar szFooter2[CCHWORD]; // 偶数ページのフッタ文字列
mchar lfHeaderFaceName[LF_FACESIZE];// ヘッダのフォント名
SIGNED_BYTE lfHeaderHeight; // ヘッダのフォントサイズ
// フォント
BBOOL fUsePrintFontstyle; // TRUE 本文、見出しをLPRINTのフォントで印刷
// FALSE 文書の設定のフォントで印刷
mchar lfFaceName[LF_FACESIZE]; // フォント名
SIGNED_BYTE lfHeight; // フォントサイズ
// その他
BBOOL fDispLineNo; // 行番号を印刷?
BBOOL f2pages; // 袋とじ?
mchar szTemplateHeader[CCHWORD];// レターヘッダ用テンプレート
mchar szTemplateFooter[CCHWORD];// レターフッタ用テンプレート
BBOOL fColor; //WZ3.90H 980926 カラー印刷を行う?
BYTE charatr; //WZ4.00Bo 991012 文字装飾(太字,下線,斜体)の印刷を行う?
// Bold mask:0x01(COLORING_BOLD)
// Under mask:0x02(COLORING_UNDER)
// Italic mask:0x08(COLORING_ITALIC)
// スタイル
BBOOL fUseHeadlineStyle; //WZ3.90I 981103 見出しのスタイルを使うか?
HEADLINESTYLE tHeadlineStyle[HEADLINE_N]; //WZ3.90I 981030 見出しのスタイル
BYTE configEnd;
// 以下、内部情報。設定ファイルには出力しない
mchar szstyle[CCHWORD]; // スタイル名
TX* text;
HANDLE hDevNames; // デバイス名
HANDLE hDevMode; // デバイスモード
int cbDevMode; // sizeof DEVMODE
CBOOL fHoldDev; //WZ3.90O 981203 txLpFlushPreviewでhDevNames,hDevModeを保持?
mchar szPrinterNameDefault[CCHWORD];//WZ3.90P 981206 現在の通常のプリンタ名
// 空ならWindowsから通常のプリンタ名を取得
// 空でなければ印刷ダイアログで選ばれたプリンタ名。
// これをszPrinterNameよりも優先して使用し、印刷ダイアログでのプリンタの切り替えをサポート。
// 各種サイズ
SIGNED_DWORD logPixelsX; // 1インチあたりのデバイスピクセル数 X
SIGNED_DWORD logPixelsY; // 1インチあたりのデバイスピクセル数 Y
SIGNED_WORD lpxMarginTop; // 上余白
SIGNED_WORD lpxMarginLeft; // 左余白
SIGNED_WORD lpxMarginBottom; // 下余白
SIGNED_WORD lpxMarginRight; // 右余白
SIGNED_WORD lpxMarginLeftAdd; // 縦書き & 袋とじ印刷用
SIGNED_WORD lpxMarginHeader; // ヘッダ上余白
SIGNED_WORD lpxMarginFooter; // ヘッダ下余白
SIGNED_WORD lpxPaperWidth; // 用紙幅(用紙の向きdmOrientationの影響は受けない)
SIGNED_WORD lpxPaperHeight; // 用紙サイズ(用紙の向きdmOrientationの影響は受けない)
SIGNED_WORD lpxLineInt; // 行間
SIGNED_WORD lpxCharInt; // 字間(未完成)
SIGNED_WORD lpxClmInt; // 段組間の空白
SIGNED_WORD lpcxClm; // 1段の幅
SIGNED_WORD lpcxClient; // 紙のサイズ(左右マージンの分も含む)
// 用紙の向きが縦なら、lpxPaperWidthと同じ
// 用紙の向きが横なら、lpxPaperHeightと同じ
SIGNED_WORD lpcyClient; // 紙のサイズ(上下マージンの分も含む)
// 用紙の向きが縦なら、lpxPaperHeightと同じ
// 用紙の向きが横なら、lpxPaperWidthと同じ
// 印刷可能域
SIGNED_WORD mcmMarginMinTop; // 印刷マージンの最小値
SIGNED_WORD mcmMarginMinLeft;
SIGNED_WORD mcmMarginMinBottom;
SIGNED_WORD mcmMarginMinRight;
SIGNED_WORD lpxOffsetX; //WZ3.90H 980926
SIGNED_WORD lpxOffsetY; //WZ3.90H 980926
SIGNED_WORD lpxMarginMinRight; //WZ3.90I 981014 for 縦書き
// HDC
HDC hdc; // プリンタデバイスコンテキスト
HDC hic; // プリンタ情報コンテキスト
int fGetHdc; // GetHdcカウンタ
int fGetHic; // GetHicカウンタ
BBOOL fNoPrinter; //WZ3.90N 981130 プリンタがない。この場合hdc,hicは画面のDCになる
// 印刷中ワーク
int fPrint; // 印刷モードフラグカウンタ
NPARA npara; // 印刷モードに入ったときのnpara
IFILE ich; // ich
int ly; // ly
SIGNED_WORD xbase; // xbase
WORD nSpaceTop; //
WORD cySpace; //
IFILE adr0;
NPAGE npageStart; // 印刷開始ページ
NPAGE npageEnd; // 印刷終了ページ
NPAGE npageAll; // 全ページ
FILETIME time; // 印刷開始時間
BBOOL flpPreview;
IFILE lpAdr0; // 印刷プレビュー中に印刷した場合の位置保持
FBOOL fVertical; //WZ3.90O 981204
// プレビュー
BYTE fNoViewportOrg; // ViewportOrgを変更しない?
int xViewportOrg; // 原点X
int yViewportOrg; // 原点Y
SIGNED_WORD cxWindow; // hwndtextの幅
SIGNED_WORD cyWindow; // hwndtextの高さ
// 設定保存しない、印刷時の設定
BBOOL fNpagenum; // 開始ページのページ番号を指定?
NPAGE npagenum; // 開始ページのページ番号
BYTE modePrintPage; // 0:全てのページを印刷,1:奇数ページを印刷,2:偶数ページを印刷
BBOOL fLpSelect; // 選択範囲を印刷?
int nCopy; // 部数
// プリンタが複数部数をサポートしている場合は1
BBOOL fCollate; // 部単位で印刷
// プリンタがサポートしている場合はFALSE
// 範囲内の印刷
BBOOL fLpClip; // 範囲内の印刷モード中?
IFILE adrClipEnd; // 範囲の末尾アドレス
int fClip0;
IFILE cliptop0;
IFILE texttopClip0;
IFILE adrClip0;
int lyClip0;
NLINE nlineClip; // 範囲先頭のnline
NPARA nparaClip; // 範囲先頭のnpara
// 内部ワーク
FBOOL fInsideSetupLcxLcyLineint;
struct tagDIALOG* hd;
BYTE errorLpstyle; //WZ3.90H 980926 lpSetupLcxLcyLineintでのエラー
#define ERROR_LPSTYLE_LCX 1
#define ERROR_LPSTYLE_LCY 2
#define ERROR_LPSTYLE_MARGIN_LEFT 3
#define ERROR_LPSTYLE_MARGIN_TOP 4
#define ERROR_LPSTYLE_MARGIN_RIGHT 5
#define ERROR_LPSTYLE_MARGIN_BOTTOM 6
#define ERROR_LPSTYLE_MARGIN_HEADER 7
#define ERROR_LPSTYLE_MARGIN_FOOTER 8
#define ERROR_LPSTYLE_LINEINT 9
#define ERROR_LPSTYLE_NOPRINTER 10
BYTE errorLpstyle0; //WZ3.90H 980926 前回の表示
CBOOL fHeadlinestylePreview; //WZ3.90I 981030 見出しスタイルのプレビュー用?
} LPRINT;
//ページ
#define NPAGE_MAX 9999
typedef struct {
IFILE ifilePagetop; // ページ先頭のIFILE
WORD lcy; // ページ内の表示行数
WORD yAdd; //WCE1.01 980301 カラム2段目以降に付加したy
// 0 <= y <= yAddは1段組である
BYTE nClm; // このページの最大段組数
} PAGEATR;
// for 印刷プレビュー
// 現在ページ内の各行の情報
// 印刷プレビュー時もlyをメインに使うことにする
// 試しにyをメインで使ったら大変だった
#define LINE_N 1000 //WZ4.00Bj 990831 1頁に最大で印刷できる行数を500から1000行に拡大。588行で印刷したい方が居た。
typedef struct {
WORD y; // 行のy座標(nSpaceTopは含まない)
// 段組の場合は通しy座標。cyLineを取得するためにも使用
BYTE iClm; // この行の段番号(0:左端)
// gls_nClmとは異なる
WORD off; // curscreenからのオフセット
WORD fLF:1; // 改行の行?
BYTE gls_iHeadline; //WZ3.90H 980924
WORD gls_cyChar; //WZ3.90H 980924
WORD gls_cyAscent; //WZ3.90H 980924
WORD gls_cyDescent; //WZ3.90H 980924
WORD gls_yFootnote; //WZ3.90H 980924
} LINEATR;
typedef struct {
NPARA npara;
IFILE offset; // 段落先頭からのオフセット
WORD size; // 行の長さ
LINEATR lineatr;// lineatr
WORD cy; // cyLine
} LINESIZE_ENTRY; //WZ3.90H 980919
typedef struct {
NPARA nparaTop; // lsc内の最小npara
NPARA nparaEnd; // lsc内の最大npara
int n; // エントリ数
LINESIZE_ENTRY* lsc;
} LINESIZE_ENTRY_ROOT; //WZ3.90H 980919
//##多重化
#if !WINDOWSCE
typedef struct tagMT {
HWND hwndbase;
HWND hwndtext;
HWND hwndOutline;
HWND hwndOutlinePartition; //WZ4.00Bj 990824
FBOOL fOutlineHide;
FBOOL fOutlineSplited;
HWND hwndCBCB; // コマンドバーコンボボックス
HWND hwndStatusbar; // ステータスバー
HWND hwndFunctionbar; // ファンクションキー
HWND hwndRuler; // ルーラー
TOOLBARCONTEXT* toolbar;
STATUSBAR_PANE* tStatusbarPane;
IFILE adr;
int ly;
WORD idMt; // ID
struct tagMT* prev;
struct tagMT* next;
} MT;
#if 0
typedef struct {
// backup text
TX* text;
HWND hwndtext;
RECT rHwndtext;
IFILE adr;
int ly;
BOOL fClip;
IFILE cliptop;
DWORD nEdit;
HWND hwndOutline;
FBOOL fOutlineHide;
FBOOL fOutlineSplited;
BOOL fOutlineSplitWindow;
// dialog item
HWND hwndDialog;
BBOOL fOutline;
// work
CBOOL fRedraw;
FBOOL fFirst;
SEARCHOPT* opt;
} TXMULTI_CONTEXT;
#endif
typedef struct { // 前回の一時ウィンドウのコンテキスト
IFILE adr;
int ly;
BBOOL fOutline;
RECT rectTempWindow;
} TXMULTI_CONTEXT_TEMP;
#endif
//##HTML
typedef struct { //WZ3.90I 981029
HBITMAP hbitmapBr; // <BR>のビットマップ
HBITMAP hbitmapP; // <P>のビットマップ
HBITMAP hbitmap_P; // </P>のビットマップ
HBITMAP hbitmapTr; // <TR>のビットマップ
HBITMAP hbitmap_Tr; // </TR>のビットマップ
HBITMAP hbitmapTd; // <TD>のビットマップ
HBITMAP hbitmap_Td; // </TD>のビットマップ
HBITMAP hbitmapInline; // <インラインコンテナ>のビットマップ
HBITMAP hbitmap_Inline; // </インラインコンテナ>のビットマップ
HBITMAP hbitmapControlblock; // <コントロールコンテナ>のビットマップ
HBITMAP hbitmap_Controlblock; // </コントロールコンテナ>のビットマップ
HBITMAP hbitmapSingle; // <IMG,シングルエレメント>のビットマップ
HBITMAP hbitmapItem; // <アイテムエレメント>のビットマップ
HBITMAP hbitmap_Item; // </アイテムエレメント>のビットマップ
HBITMAP hbitmapBlock; // <ブロックコンテナ>のビットマップ
HBITMAP hbitmap_Block; // </ブロックコンテナ>のビットマップ
TX* textcfgTag; // "htmltag.cfg"の内容
IFILE adr0; //WZ3.90O 981203
} HTMLATR;
typedef enum {
VALIGN_NONE,VALIGN_TOP,VALIGN_CENTER,VALIGN_BOTTOM
} VALIGN;
//##ウィンドウプロシジャーのフック
//WZ3.90I 981026 多重フックができるようにした。これができないとマクロがつくれない。
typedef DWORD HOOKRESULT;
#define HOOK_CONTINUE 0
#define HOOK_CAPTURE 1
#define HOOK_ERROR 2
typedef HOOKRESULT (CALLBACK *WNDTEXTHOOKPROC)(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
#define txSetHookWndproctextResult(text,result) (text->resultWndtextHook = result)
#define txSetHookWndprocbaseResult(text,result) (text->resultWndbaseHook = result)
typedef struct tagTXWNDHOOK {
UINT fTxpcode:1; // TX-PCODEからのフック
WNDTEXTHOOKPROC lpHook; // フックプロシジャ
struct tagTXWNDHOOK* prev;
struct tagTXWNDHOOK* next;
} TXWNDHOOK;
//##その他のサブ構造体
typedef struct {
int ly; //
NPARA npara; //
IFILE address; //
IFILE ich; //
} UNDISPCONTEXT;
#define UNDISPCONTEXT_N 5
// 裏テキストなど、fUndispがマイナス値の場合もある。
#define txGetUndispContextPre(text) \
((1 <= text->fUndisp && text->fUndisp <= UNDISPCONTEXT_N) ? &text->tUndispContext[text->fUndisp - 1] : NULL)
typedef struct {
SIGNED_BYTE fPacking; // for クライアント動作チェック
IFILE adrPackTop; // pack開始時text->pundo
WORD nPacked; // packされたコマンド数
} UNDOPACK_CONTEXT;
#define TXWS_SZCLASS L"txText"
#define TXWS_SZCLASSA "txText"
#define TXWS_TEXT 0x0001L // TEXT構造体をアロケートする
// すなわちWZコントロールであることを示す
#define TXWS_OPENTEXT 0x0002L // いきなりtxOpenTextする
#define TXWS_ENABLEUNDO 0x0008L // undo可
#define TXWS_TEXTINHERIT 0x0080L // textを丸ごと(text contextそのものを)引き継ぐ
#define WzBox_GetTx(hwnd) ((LPVOID)GetWindowLong(hwnd,0))
extern WCHAR wszclassBase[];
extern WCHAR wszclassText[];
extern wchar wszclassWzicon[];
#if !WINDOWSCE
extern BOOL _fwin40;
#endif
typedef struct {
//WCE 970819
BYTE lcxIndent; // インデント数(0-255)
#define LCXINDENT_MAX 255
//WCE 970817 custmize
int lchSymbol; // 行頭文字のバイト数
mchar szSymbol[CCHSWORD]; // 行頭文字
//
BYTE articleTop;
mchar szArticle[CCHSWORD]; // 見出し文字列
SIGNED_WORD lchArticle; // 0なら無効
SIGNED_WORD cxArticle;
WORD fArticleNum:1; // szArticleは番号付きか?
WORD fArticleSub:1; // szArticleは小見出しか?
WORD fArticleJnumber:1; // szArticleは全角番号付きか?
WORD fReserved:14;
SIGNED_WORD nArticle; // 先頭番号(0なら番号指定なし)
SIGNED_WORD ichNum; // szArticleの番号のオフセット
// -1なら番号なし
SIGNED_WORD lchNum; // szArticleの番号の長さ
BYTE articleEnd;
//WCE 970817 custmize
SIGNED_WORD lcxSpace; // szArticleと本文の間の余白
// PARAATR custmize
BYTE width; // 折り返し幅
WORD modeAlign:3; // 文字揃え
// align(3bit)
#define ALIGN_NONE 0 // なし
#define ALIGN_LEFT 1 // 左揃え
#define ALIGN_CENTER 2 // 中央寄せ
#define ALIGN_RIGHT 3 // 右揃え
WORD fApfScenarioSerifu:2; //PWZ2BETA0.5 980617 せりふ段落かどうか?
// 改行付きに変換中の場合は2になる
} PARAFORM_ARTICLE;
// size = 4bytes fixed
// 記号のうち、"、'、“”、‘’は変換しない
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; // 全角ひらがな->半角カナ
WORD reserved:1;
WORD fAc:1; // オートコレクト
WORD fJbraceToBrace:1; // 「」を[]へ変換
WORD fZenHanKanaAll:1; // (独立フラグ)全角ひらがな・カタカナ<->半角カナですべて変換 //WZ3.90N 981130
// これと一緒にfJkataToKanaなども指定してください。
WORD reserved2:13;
} CHARCONVERT;
// for CHARCONVERT ui
typedef struct {
BOOL fAutoCollect;
BOOL fJbraceToBrace;
int modeKata;
int modeHira;
int modeAlphabet;
int modeNumber;
int modeSpace;
int modeKigou;
} CCCONTEXT;
// 段落体裁解析用
typedef struct {
BYTE align;
BYTE headline;
SIGNED_BYTE indent;
BYTE nClm; //WZ3.90I 981106 0:標準
DWORD anchor; //WZ3.90L 981117 アンカー(0:なし)
mchar szTag[CCHTXFTAG];
} CONTEXT_PARAPROPERTY;
#define LCX_CLMGAP 5 //WCE0.95 970923
// 文字装飾解析用
typedef struct {
BBOOL fBold;
BBOOL fUnderline;
BBOOL fItalic;
BBOOL fIndex;
BBOOL fSup;
BBOOL fSub;
BBOOL fDots; //WZ3.90I 981030
int cxRate;
DWORD anchor; //WZ3.90L 981117 ジャンプ先のアンカー番号(0:なし)
mchar szAnchor[CCHWORD]; //WZ3.90L 981117 ジャンプ先のアンカー
FONTSET fontset;
mchar szTag[CCHTXFTAG];
} CONTEXT_CHARPROPERTY;
typedef struct {
LPBYTE pBuff; // バッファ
// BYTE:cchName , mchar*:szName , WORD cchContent , LPVOID content
// 末尾はcchName = 0
int sizeBuff; // pBuffの現在のサイズ
int sizeExpand; // pBuffを拡大するとき、少なくともこの分のサイズで拡大
} VAR;
void varDelete(VAR* var);
VAR* varNew(int sizeInit,int sizeExpand);
BOOL varSetString(VAR* var,mchar* szName,mchar* szContent);
mchar* varReadString(VAR* var,mchar* szName,mchar* szDefault);
typedef struct tagTXCTEXTVAR {
mchar szModule[CCHWORD];
FILETIME filetime; // for バージョンチェック
LPBYTE pTextvar;
struct tagTXCTEXTVAR* prev;
struct tagTXCTEXTVAR* next;
} TXCTEXTVAR;
//##TEXT(テキストコンテキスト)
struct tagtx {
// 以下、[変更可]まで、変更してはいけません。
// テキストが破壊されるおそれがあります。
WORD sizeStruct;
// textbuff
TEXTCHAR* buff; // テキストバッファ
wchar wszfilename[CCHPATHNAME];
// ファイル名(UNICODE)
// 新規のときは、wszfilename[0] == 0
mchar szfilename[CCHPATHNAME];
//PWZ2BETA0.4 980604 new
// ファイル名(SJIS)
// 新規のときは、szfilename[0] == 0
// szfilenameはマクロ用。
// wszfilenameがマスターである。
IBUFF sizebuff; // テキストバッファの現在のサイズ
// new textbuff pointer
IFILE curgap; // gapの先頭
IBUFF curpara; // カレント段落の先頭 & gapの末尾+1
// 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 ibuff; //WZ3.90J 981110 任意使用可
// view mode
FBOOL fEditViewMode; // 現在、view mode ?
// fSemiViewModeも見てください。
// あるいはtxGetViewmodeで調べるのが良いです。
FBOOL fSemiViewMode; // セミViewMode
// textfile
HANDLE hf; // ファイルハンドル
IFILE sizefileReal; // ファイルサイズ(txatrを含む実際のサイズ)
IFILE sizefile; // ファイルサイズ(テキストデータの分のみ)
IFILE sizeload; // ファイルから読み込んだバイト数
BBOOL fOpen; // Openされている?
BBOOL fQuit; //PWZ2BETA0.3 980510 txQuit中?
BBOOL fReadAll; // ファイルを読み終えた
BBOOL fAddEof; // textbuffにEOFを追加した?
// ファイル末尾がEOFの場合はFALSE。
// ファイル末尾がEOFでなければTRUE。
FILETIME timeFile; // ファイルの日付
FILETIME 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'から変更
#define RETURNCODE_UNKNOWN 98 //WZ4.00Bl 990913 不明(internal)
#define RETURNCODE_THROUGH 99 //XZ0.1 990614 そのまま(internal)
BYTE crSave; // 保存するときの改行コード
BYTE kcOpen; //1.95 オープン時のファイルの文字コード
#define KC_SJIS 0
#define KC_JIS 1
#define KC_EUC 2
#define KC_UNICODE 3
#define KC_UNICODEBETA 4 // ヘッダなしのUNICODEファイル
#if TB_EUC
#define KC_DEFAULT KC_EUC //XZ0.1 990530 new
#else
#define KC_DEFAULT KC_SJIS //XZ0.1 990530 new
#endif
// 内部コード
#define KC_INTERNAL_TOP 100
#define KC_EUC_SJIS 100 // EUC or SJIS
#define KC_ASCII 101 // no kanji
#define kcIsUnicode(kc) (kc == KC_UNICODEBETA || kc == KC_UNICODE)
BYTE kcSave; //1.95 保存するときの文字コード
// textbox capture
HWND ehHwnd; // キャプチャ中の他プロセスの"EDIT"クラスウィンドウハンドル
HWND ehHwndBase; // ehHwndのベースウィンドウ(タイトルバー付きウィンドウ等)
WORD fEhHwndUndisp:2; // ehHwndをUndisp中?
BYTE ehTarget; // キャプチャ対象のアプリケーション
#define EHTARGET_VC4 10 // VC++ 4.2/VC++ 5.0(テキストの取得の対応。書出しはできない)
#define EHTARGET_MSMAIL4 11 // Outlook Express 4.71(IE4.0付属)
// WZ MAIL EDITOR
struct tagMAILEDIT* mailedit; //WCE1.01 980327 WZ MAIL EDITOR ?
// 真なら、RFC822のヘッダも付いていることになる。
// 行編集の取消
TEXTCHAR* buffUndopara; // 行バッファ
IBUFF sizebuffUndopara; // バッファサイズ
IBUFF lchUndopara; // バッファ内の文字数
BBOOL fUndoparaEffect; //WCE1.01 980124 バッファに有効なデータがある?
CBOOL fUndoparaing; // Undopara中。再入防止フラグ
CBOOL fNoUndoparaPrepare;//2.98 970307 txUndoparaPrepareしない?
// instance information
HANDLE hInstance; // インスタンスハンドル
HANDLE hInstanceParent; //2.90 親モジュールのインスタンスハンドル
wchar* wszCmdLine; // コマンドライン(malloced)
// window
HWND hwndbase; // ベースウィンドウ(with menubar)のハンドル
// text->fFrameのtextのみセットされる。
// WZ Controlや裏テキストではNULL
HWND hwndtext; // テキストウィンドウのハンドル
// 裏テキストではNULL
HWND hwndCB; // コマンドバー
HWND hwndCBCB; // コマンドバーコンボボックス
HWND hwndStatusbar; // ステータスバー
// MYSTATUSBARでコモンコントロール/独自になる。
HWND hwndRuler; // ルーラー
#if !WINDOWSCE
TOOLBARCONTEXT* toolbar;//WZ3.90E 980806 ツールバー(コモンコントロール)
RECT rectWindowClosed; // DestroyWindow(text->hwndbase)したときの位置
HWND hwndFunctionbar; //WZ3.90I 981107 ファンクションキー
#endif
STATUSBAR_PANE* tStatusbarPane;
int cxClient; // hwndTextのサイズ(ピクセル単位)
// 印刷時は右マージンの分を除く紙のサイズ(lpx)
int cyClient; // hwndTextのサイズ(ピクセル単位)
// 印刷時は下マージンの分を除く紙のサイズ(lpx)
int cxBase; // テキスト表示開始位置
int cxCaretNow; // 現在画面に表示しているキャレットの幅
int cyCaretNow; // 現在画面に表示しているキャレットの高さ
int nOpenDC;
int xCaret; //WCE1.01 980409
// display/printer
int cxWidth; //1.00F テキストの横幅(ディスプレイドット座標)
int cxWidthWhole; //2.96 970206 テキストの横幅(ディスプレイ座標)
// 1段組の場合はcxWidthと同じ。
// n段組の場合は、1段目の左端からn段目の右端までの幅
int lx; // カーソルX座標 (文字座標)
// lfProp時は、近似値(text->x / text->cxChar)
int lx0; // 縦移動時に使用
int x; // カーソルX座標 (ドット座標)
int x0; // 縦移動時に使用
int xAlign; //WCE1.01 971116 センタリング、右寄せ
int cxCursor; //WCE1.01 980223 カーソルの幅
FBOOL fNoAddAlign; //WCE1.01 971117 offsetFromCx,cxFromOffsetでxAlignを加えない?
int xbase; // basex
int cxCharMax; // 1文字の最大幅
int ly; // カーソルy座標
int lyUnder; // アンダーラインy座標(非表示中は-1)
int lyAtMinimized; // 最小化したときのly //WZ3.90M 981128
int hideUnder; // fListboxのフォーカス表示がHideされているか?
int lcySmupper; // 現在のスクロールマージンTopY
int lcySmlower; // 現在のスクロールマージンTailY
FBOOL fAddSmlower; //WCE0.92 970918 最下行に半端行を表示している?
int lcywindow; // 表示行数(syTop,syTailの分も含む)
// 印刷プレビュー、印刷時は動的に変化します
// 0になることはない。必ず1以上になる
// 行の内容が全て表示できる分の値に設定されます。
// 但し、1に設定されている時は必ずしもこの通りではありません
// 必ずLINE_Nより5程度少なくなる
int lcywindowClm; //WCE0.95 970923 1段の表示行数
int xCell; //WCE1.01 971221 for fTxf 表
int xCellSepa; //WCE1.01 971221 for fTxf 表
int lxCell; //WCE1.01 971221 for fTxf 表
int lcxCell; //WCE1.01 971221 for fTxf 表
BYTE CelllineTop; //WCE1.01 971221 for fTxf 表 直前のセルのlineTop
BYTE CelllineBottom; //WCE1.01 971221 for fTxf 表 直前のセルのlineBottom
FBOOL fCellExist; // 「表がある段落は折り返しなし」に使用
BBOOL fCellFlushing; //WCE1.01 971226 表の幅計算中?
// 2:Undisp中?
FBOOL fWestern; //WCE1.01 980224 欧文表示
// 1バイト文字(ASCII+拡張ASCII)
// !TEXTCHAR_UNICODE時のみ有効
//
HDC hdc;
#define HDC_PAINT 999 // WM_PAINTで確保したHDC
HDC hdcMem;
HDC hdcPrinter; // これがNULLでなければ、このhdcに出力する
// キー定義
// KEY* key; // キー定義
mchar *tszfkey; // ファンクションキーの文字列
// size = FKEY_N * FKEY_NKEY * FKEY_SIZE
// ツールバー
// TXTOOLBAR *ttxtoolbar; // ツールバーデータ
int ntoolbar; // ttxtoolbarの数
HBITMAP hbitmapToolbar; // ツールバービットマップ
int cxToolbar;
int cyToolbar;
// for display
HFONT hfont; // フォントハンドル
// fontsetBase->hfontのコピー
HFONT hfont2; // fontsetBase->hfont2のコピー //WZ4.00Bl 990920
BYTE fSelectFont2; // hfont2をSelectObject中? //WZ4.00Bl 990920
HFONT hfontSearch; //WZ3.90K 981112 欧文編集時の検索ダイアログ、検索ボックス用のフォントハンドル
//WCE1.01 980222 マルチフォント、プロポーショナルフォントサポート
FONTSET* fontset; // カレントfontset
FONTSET* fontsetBase; // 本文のfontset
// 常に開きっぱなし
FONTSET* fontsetCache; // fontsetのキャッシュ
//WCE1.01 980225 図の表示・印刷サポート
#ifdef __TXC__
LPVOID txbitmapCache; // IMGキャッシュ
#else
IMGSET* txbitmapCache; // IMGキャッシュ
#endif
//
HBRUSH hbrushBack; // WZのブラシ
HBRUSH hbrushText; // WZのブラシ
HBRUSH hbrushBlock; // 範囲選択時、反転表示用
#if !WINDOWSCE
HBRUSH hbrushImeBack; //WZ3.90O 981202
HBRUSH hbrushImeHiBack; //WZ3.90O 981202
#endif
HPEN hpenUnderline; // アンダーライン
HPEN hpenNline; // WZのペン
HPEN hpenText;
HPEN hpenBack; // WZのペン
HBITMAP hbitmapLf; // LF記号のビットマップ
HBITMAP hbitmapTab; // TAB記号のビットマップ
HBITMAP hbitmapEof; // EOF記号のビットマップ
HBITMAP hbitmapSpace; // 全角空白のビットマップ
HBITMAP hbitmapBeta; // ベタのビットマップ
HBITMAP hbitmapFf; //WCE1.01 980225 フォームフィードのビットマップ
LPVOID pbitmapLf; // LF記号のビットマップデータ
LPVOID pbitmapTab; // TAB記号のビットマップデータ
LPVOID pbitmapEof; // EOF記号のビットマップデータ
LPVOID pbitmapSpace; // 全角空白のビットマップデータ
LPVOID pbitmapBeta; // ベタのビットマップデータ
LPVOID pbitmapFf; //WCE1.01 980225 フォームフィードのビットマップデータ
#if WINDOWSCE
HBRUSH hbrushPendot; // WINDOWSCEにはPS_DOTがないのでBRUSHで作る
LPVOID pbrushPendot; // PS_DOTのメモリデータ
#else
HPEN hpenPendot;
#endif
SIGNED_BYTE color; // 現在設定中の色コード
COLORREF rgb; // 現在表示中の色RGB
WORD fColorReverse:1; // 反転表示中?
WORD fColorIme:1; //WZ3.90O 981202 IME変換文字描画中?
// GetLineSize/DispLineコンテキスト
//WCE1.01 980216 GetLineSizeの処理結果
BYTE gls_iHeadline; // 見出しコード
WORD gls_cyChar; // 行の高さ(行間を除く)
WORD gls_cyAscent; // 行のベースラインより上の部分の高さ
WORD gls_cyDescent; // 行のベースラインより下の部分の高さ
WORD gls_cyLine; // 行の高さ(行間を含む)
BYTE gls_nClm; //WCE1.01 980301 この段落の段組数
// 通常はtext->nClmだが、<CLM>タグで段組数が指定されている場合に対応
WORD gls_yFootnote; //WCE1.01 980302 ページ内脚注表示位置(cyClientベース)
WORD gls_cxCursor; // LSOP_OFFSET_TO_X,LSOP_X_TO_OFFSET時のx位置の文字幅
//##TEXT - 現在の内部情報
mchar* szexedir; //WZ3.90I 981027 WZEDITOR.EXEの存在するパスが入っています。
// "a:\wz\"や"b:\"のように入っています。
// マクロからは、次の様にして、WZ.EXEと同じディレクトリにあるファイルの
// フルパスを得ることができます
// text->szexedir + "myfile"
FBOOL fTXWS_TEXT; // TXWS_TEXTのtext?
FBOOL fFrame; // 表テキスト?
// 裏テキスト、WZコントロールのtextの場合はFALSE
FBOOL fReadOnly; // 修正はできるがセーブできない。
FBOOL fCurWestern; // 現在のカーソル行が欧文フォントかどうか示す。
// txDispCursorでフラッシュされるので、いつも必ずしも
// 正しいとは限らない。
WORD fReopenInternaling:1;// txReopenInternal中?
WORD fShared:1; // WZプロセス間で共有されているtext?
// WINDOWSCE
WORD fNoFlushBaseDisp:2;// txFlushBaseでtxDispAllしない
WORD fFlushBaseDisped:1;// fNoFlushBaseDisp中にtxDispAllがあった
WORD fEnableUndo:1;
WORD fNewFile:2; // 新規ファイル?(1か2なら真なので注意)
WORD fOpenLockedFile:1; // 排他制御がかかっているファイルを開いた
WORD fDispEofed:1; // 最後に表示を行ったときにEOFを表示した?
WORD fHaveFocusLine:1; // フォーカスラインを持っている?
WORD fNoCaret:1; // キャレットを表示しない
WORD fOriginalCaret:1; //WCE1.01 980409 独自のキャレットを表示
// 普通のキャレットは主スレッドしか対応しないが、
// これはマルチスレッド対応。
WORD fMouseJumpx:2; // txJumpXで文字の中心を基準とする
WORD nlineByPage:1; // dummy
WORD lpy:1; // dummy
WORD fNoFlushSelectNow:1;//txFlushSelectNowしない
WORD fDestorying:1; // textを破棄中?
WORD fStatprintfing:1; // statprintfが表示されている状態?
WORD fUndispLinenum:2; // 行番号を表示しない
DWORD FlushCuryResult; // 内部ワーク
BBOOL fNomoveBase; // 画面の横スクロールをしない(text->basexを動かさない)
WORD ftxuiSaveNamed:1; // txuiSaveで名前を付けたときにONになり、txuiSaveを抜けるとOFFになる
WORD fSaveCanceled:1; // (text->lasterror == TXERROR_SAVECANCELED)
WORD fInsideIsClose:1; // ehHwndでIsClose()中
WORD fClipMouseStart:1; // マウスによる範囲選択開始時?
WORD fCursorSeted:1; // WINDOWSCE カーソルが変更されている
WORD fNoFileShareControl:1; //PWZ2BETA0.4 980604 排他制御をかけない?
WORD fReplaceCanceled:1;// 直前のReplaceがキャンセルされた?
WORD fGetDownAble:2; //WZ3.90H 980923 現在txGetDownAble中?
WORD fPageChanged:1; //WZ3.90H 980923 txBuffNextLineN/txBuffPrevLineNでページを越えた
WORD fError:1; //WZ3.90H 980925 エラー状態
WORD fNoInitScrollBar:2;//WZ3.90I 981030 _InitScrollBarしない。
WORD fPageScrollBarV:2; //WZ3.90I 981030 印刷プレビュー時に縦スクロールバーをページ内のプロポーショナルスクロールバーにする?
WORD fGetXAlign:2; //WZ3.90I 981106
WORD fAutoScrolling:1; //WZ3.90J 981110 自動スクロール中?
WORD fAutoScrollPause:1;//WZ3.90J 981110 自動スクロール一時停止中?
WORD fAutoScrollPrev:1; //WZ3.90L 981125 自動スクロール前方向中?
WORD fApfuBeamtabFlush:1;//WZ3.90L 981115 タブ桁揃えフラッシュ中?
WORD fLpFlushPreviewing:1;//WZ3.90L 981117
WORD fIdmExecing:3; //WZ4.00Aa 990107 //WZ4.00Ac 990207 ネストする場合があるので1bitでは足りなかった
WORD fUserInserting:2; //WZ4.00Bn 991007
WORD fNoPushDeleteString:2; //WZ4.00Aa 990107 削除バッファに入れない?
WORD fPushDeleteString:2; //WZ4.00Bj 990825 txDeleteParaで削除した分も削除バッファに入れる?
WORD fSaving:2; //WZ4.00Ab 990202 保存中?
WORD fSaveAsDoing:1; //WZ4.00Ab 990202 txuiSaveAs中?
WORD fEndSessioning:1; //WZ4.00Ac 990205 WM_QUERYENDSESSION中?
WORD fHistAddAtSave:1; //WZ4.00Ac 990206 txSave時にhistAddし、このフラグをクリア?
WORD fWindowClosedMax:1;//WZ4.00Ad 990211 DestroyWindow(text->hwndbase)したとき最大化されていたかどうか?
WORD fByMouse:1; //WZ4.00Bl 990909 マウスによるコマンド実行時かどうか?
WORD fNetnewsList:1; //WZ4.00Bl 990916 for SPEAK
WORD fQueryBigEdited:1; //WZ4.00Bl 990918
WORD fResultXtoOffset:1;//WZ4.00Bl 990918
WORD fOnDeletePrev:2; //WZ4.00Bp 991014
CBOOL fBusy; //WCE1.01 980203
//WCE1.01 980205 変更行の表示
FBOOL fDispLineEdit; // 変更行の表示を行う?
PARAATR_CONTEXT paraatr;//WZ4.00Bl 990920 paraatrtextcontextから名称変更。
// binary
FBOOL fBinedit; // バイナリ編集(16進表示バイナリエディタ)モード?
// ファイルをバイナリとして読み込む
// ファイル末尾のEOFをEOFコードとしてはみなさなず、text->buffロード時に必ずEOFを加える
// fBinaryもTRUEにセットすること。
// fBinedit時は、curparaはcuryと同じになり段落先頭を示さなくなる。
// また、nparaはnlineと同等になる。
CBOOL fBinary; // 全角文字を半角2文字として扱う
// !fBineditなら、ファイルはテキストファイルとして読み込む
// fBineditの場合は、fBinaryもTRUE。
CBOOL fNoJumpChartop; //WZ3.90P 981206 txJumpAddress,txJumpAddressNearで、アドレスが文字の先頭でない場合、文字の先頭ではなく、指定されたアドレスにジャンプ。
#if WZFUNC_MEMOEDIT //WZ3.90L 981124 メモモード
WORD fMemoedit:1; // メモ編集モード?
struct tagMEMOEDIT* memoedit; // メモ編集コンテキスト
#endif
// undo
TX* ttextUndo; // undoバッファ textUndo[0],textUndo[1]が有効
UNDOPACK_CONTEXT undopack[2];
mchar* szGeneComment; //WCE1.01 980201 世代管理:次の世代のコメント
FBOOL fTextUndoInited; // textUndo inited?
FBOOL fUndoing; // アンドゥとリドゥの区別
FBOOL fUndoView; // undoバッファのビューモード
FBOOL fUndoExec; // undo()中かどうか
FBOOL fUndoResetTexttop;//PWZ2BETA0.3 980511 undo中にtexttopを0にしたか?
HWND hwndUndo; //
BBOOL fGene; // 世代管理テキスト?
FBOOL fGeneWalking; // 世代管理テキストを作成中? //WZ4.00Bl 990921
BYTE fNoUndoAdd; // 0以外ならundoAddされない
BYTE adrTextUndoTop; // undoバッファのヘッダ長
BYTE uc; // UC
FBOOL fUndoFindCellFlush;//WCE1.01 971226
SIGNED_WORD igene; //WCE1.01 980201 現在の世代
FBOOL fNoGeneDelete; //WCE1.01 980206
BBOOL fUndoOverflowed; //WZ4.00Bj 990825
// autosave
int nAutoSaveCmdNow; // 前回のオートセーブから現在までに実行された編集コマンド数
BBOOL fAutoSaving; // autosave中?
BBOOL fAutoSaveValidTimer; // 自動保存実行タイマセット中?
//
CMDLINECONTEXT* pcc; // fFrameのみコマンドラインコンテキスト
// このオブジェクトはdeleteしてはいけないが、
// pcc=NULLにしてもいい
DWORD nEdit; // 編集が行われた回数をカウントしています
IFILE adrLastEdit; //WZ4.00Bj 990824 最後に編集した位置
BYTE fNoCountNedit; // nEditをカウントアップしない?
BYTE fNoReduceGap; // テキストバッファの縮小を一時的にしない
// キー入力
mchar key2; // 2ストロークキー入力用.1ストローク目のキーコード
IDM f2Stroke; // ストロークキー入力用.1ストローク目のidm
FBOOL fTranslated; //WCE1.00.1 970926 WM_KEYDOWN/SYSKEYDOWNの後にWM_CHAR/SYSCHARが来る?
// FBOOL fKeyD; // 次のWM_CHAR/WM_SYSCHARを無視?
UINT idmLast; //WZ3.90I 981102 最後にキーから実行したIDMコマンド
struct tag_EMACSWZ_CONTEXT* emacswz; //WZ3.90I 981102 EMACSライクキー割り当て用コンテキスト
BYTE lastfocus; //WZ4.00A 981229 最後にSETFOCUSされた部位
#define FOCUS_OUTLINE 1
#define FOCUS_MAILTO 100 //WZ4.00Bj 990812
#define FOCUS_MAILCC 101 //WZ4.00Bj 990812
#define FOCUS_MAILSUBJECT 102 //WZ4.00Bj 990812
#define FOCUS_ISMAILEDIT(l) (100<=l) //WZ4.00Bj 990812
// 本文フォントの情報
int cxChar; // 文字幅
int cxLetter; // 字間をふくむ文字幅
int cyChar; // 文字高さ
int cyLine; // 行高さ
FBOOL lfEditProp; // プロポーショナルか?
//
BBOOL fUndispSelect; // 範囲選択を表示しない
SEARCHMODE searchmode; // 現在の検索オプション
int nCmdShow; // 現在のtext->hwndbaseのShowWindowモード
int fHigh; // Highspeed flag
// カーソル位置(cury,curysize)の計算をしない。
// nparaは計算します。for 編集した行の強調表示
// nlineは計算しないのでズレます。
// <使用要注意>
// txSetHighで開始してください。
// 直接このフラグを操作しないでください。
// TXHIGHのAPIのみ使えます。
// それ以外のAPIは使えません。
// 使った場合の動作は保証しません。
// できるだけチェックをして回避していますが、
// テキストを破壊する恐れもあります。
// <使用後>
// txResetHighかtxResetHighFlagを使ってください。
int lyHigh; // txSetHigh()時、ly保存
UINT nEditHigh; // txSetHigh()時、nEdit保存。for paraatr
UNDISPCONTEXT tUndispContext[UNDISPCONTEXT_N];
int fUndisp; // 非表示フラグ
int fUndraw; //2.00B 非描画フラグ
// fUndispだと描画しないだけでなく各種
// 計算なども行わないが、このフラグは単に
// 描画を行わない
HCURSOR hcursor; // マウス砂時計表示時、元の形状
BBOOL fUndispCursor; // txDispCursor/txDispLocateの処理をしない
// txDeletePara etc のちらつきをなくすため、
BBOOL fNoCursor; // マウス形状を変更しない
FBOOL fCursorBold; // カーソル位置強調?
NPARA fUndispNpara; // 0以外にすると、その段落のみ描画を行わない
NPARA fUndispExceptNpara;// (内部用)0以外にすると、その段落以外の描画を行わない
// scroll by scrollbar
BBOOL fScrollSB; // スクロールバーでスクロール中
BBOOL fInvalidLySB; // lySBは無効? //WZ4.00Bl 990921
// lySB=-1の時に無効の仕様だったが、スクロールすると増減されてしまい、問題があった。
int lySB; // カーソル位置(fInvalidLySBなら無効)
// scrollbarによるスクロール開始時の情報
NLINE nlineSB; // npara/nline
NLINE nparaSB; // npara //WZ3.90L 981123
IFILE adrSB; // カーソル位置
int lxSB; // lx
int cxCaretSB; // カーソルの幅
int fClipSB; // fClip
// 途中でtxSelectXXXが実行されたときはリセットする
// そうしないと、以前はtxFlushSelectNowで、
// fScrollSBならスクロール開始時の情報を範囲選択エリアとして
// 返していたが、選択モードを変更したときに、
// そのモードの情報が返されず、テキスト<->高速モード変換で
// テキストが破壊されることがあった。
// txSelectAllしてコピーし、テキストを全削除してペースト
// すると元に戻らなかった
SIGNED_WORD xSB; // SB開始時x
TXCHAR chSB; // カーソル位置の文字 //WZ4.00Bl 990913
IFILE mark[MAXMARK]; // マーク
IFILE tAdrRefer[MAXREFERPOS]; //WCE0.91 970910 最近参照した位置
BYTE iAdrRefer; // tAdrRefer参照ポインタ
BBOOL fEdit; // 編集された?
BBOOL fEdit0; // for txDoCaption
BBOOL fEditable; // 修正できる?
// txOpenTextでデフォルト値設定
// fEditViewModeならFALSE、そうでなければTRUE
BBOOL fOverWrite; // 上書きモード?
DWORD sizefileMax; // 0のときはファイルをすべて読み込む
// 1以上のときは、そのサイズまでしかファイルを読み込まない
// for preview
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のカウントをする
// カウントがされないときもあります。
BYTE lyScreenEndResult; //2.98 970307 Disp(DISP_GETCURSCREENEND)のly結果
NLINE nlineAll; //WZ3.90I 981004 これが0以外でfLineDならばプロポーショナルスクロールバーを表示する
WORD cxVH; //WZ3.90I 981015 !=0なら縦中横の表示中
//WCE1.01 980216 ページ数 印刷時・プレビュー時のみ使用
NPAGE npage; // カーソル行のページ番号(1origin)
PAGEATR* tPageatr; // ページ情報
// tPageatr[text->npage]までが有効。
// ifilePagetopだけはtPageatr[text->npage+1]まで有効。
LINEATR* tLineatr; // 表示行情報
LINESIZE_ENTRY_ROOT* ttLsc[2];//WZ3.90H 980919
NPARA nparaLsc; //WZ3.90H 980921 対象のnpara
// 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
#define CLIP_MOUSE 43
// 内部用
#define CLIP_PARA1 90 // 1論理行
#define CLIP_DELSTRPREV 91 // BSによる文字列削除
#define CLIP_DELSTRNEXT 92 // DELによる文字列削除
// txClipCopyEx用
#define CLIP_COPYPARA1 100 // カーソル論理行をコピー
//2.95 970125 ビットフィールド化
FBOOL fClipMouse; // マウスによる範囲選択?(fClipが0のときはFALSEであること)
WORD fClipVz:1; // VZ clip?
WORD fClipWz:1; // WZ clip?
// 最初に横に動かせば文字単位
// 下に動かせば論理行単位
WORD fClipCur:1; // (WZ内部用)
// CLIP_PARA/CLIP_LINE時にカーソル位置も範囲に含めるか?
WORD fClipSearch:1; // 検索による範囲選択?
WORD fClipPasteJump:1; // 最後のtxPasteで、ペーストした分カーソルを移動した?
WORD fDispUnderClip:1; // 選択開始時fDispUnder
WORD fKeyVkShift:2; // for キーボードマクロ時ms shiftキー範囲選択
// 0:実際のVK_SHIFTの押し下げ状態に従う
// 1:SHIFTは押されていないとみなす
// 2:SHIFTは押されているとみなす
WORD fClipReserved:8;
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; // 範囲選択開始時の次の論理行頭のアドレス
// 必ずしも正確な値ではない
// Insert/Deleteでズレるが問題ない
IBUFF clipend; // ClipParaワーク
BYTE modeFreeCursorClip;// 選択開始時modeFreeCursor
IFILE cliptoptail; // 範囲選択開始時の次の単語/文/行の先頭アドレス
IFILE cliptopnow; // 正確な選択開始アドレス(cliptopがベース)
IFILE clipendnow; // 正確な選択Tailアドレス(txGetAddressがベース)
int xClip; // 範囲選択開始時x
WORD fNoScrollLinenum:2;// 行番号をスクロールしない
IFILE clippastetop; // 最後にペーストした時のペースト開始アドレス
IFILE clippasteend; // ペースト終了アドレス
int xClipMouse; //WZ3.90I 981105 マウスでの箱型選択、D&D用。選択終了時のx座標。
//WZ3.90I 981104 D&D
WORD fClipDrag:1; // drag&drop-cut&paste
// 途中でtxSelectXXXが実行されたときはリセットする
WORD fClipDragCaret:1; //WZ3.90I 981107 ドロップターゲットカーソルモード中?
WORD fOriginalCaret0:2; // 保存用
WORD fDispUnder0:2; // 保存用
WORD reservedCD:11;
IFILE ifileDrop; //WZ3.90I 981104 ドロップされた位置
int lyDrop; //WZ3.90I 981104
// ime
//WZ3.90H 980928 IME描画を全面変更
WORD sizeImeCompstr; // 挿入した変換中文字列のバイト数
int xCompstrEnd; // 変換中文字列の表示の最終行の右端の座標
// (cxBase,xbase含む)
int xImecurCompstr; // IMEのカーソル位置 x(cxBase,xbaseは除く)
int yImecurCursor; // IMEのカーソル位置 y(yBaseは除く)
#if !UNIX
HRGN hrgnCompstrDraw; // 変換中文字列を描画したhrgn
#endif
WORD fCompstrDrawing:2; //WZ3.90H 980928 描画中?
WORD fImeCursorIme:1; // カーソル位置(IMEの描画)で変換中? //WZ4.00Aa 990110
WORD fImeOnInactive:1; //WZ4.00Bl 990913 WA_INACTIVE時にIMEがONだった? //WZ4.00Bl 990913
FBOOL fImeCompstr; // カーソル位置(WZの描画)で変換中?(インライン変換は除く)
FBOOL fImeWasOn; // 2ストロークキー入力開始時にIMEがONだった?
#if !WINDOWSCE
//WZ3.90H 980913 一時ウィンドウ
#if 0 //WZ3.90H 980915 多重化がうまく実装できたので、少々難のあった一時ウィンドウは廃止
TXMULTI_CONTEXT* multi; // 一時ウィンドウあり?
#endif
TXMULTI_CONTEXT_TEMP* multi0; // 前回の多重化/一時ウィンドウのコンテキスト
//WZ3.90H 980915 多重化
MT* mt; // 多重化
WORD idMt; // 表ウィンドウのID
WORD idMtMax; // 今までの最大値のID
WORD fMtRedraw:2; //
WORD fMtOpening:1; // 起動中
#endif
// 最近入力した文字列
mchar szInserted[30]; // 現在入力中の文字列
BYTE lchInserted; // szInserted内の文字数
// 自動整形
FBOOL fApfing; // 自動整形中?
FBOOL fApf; // 自動整形を行う?
WORD fApfUndisp:2; // Undisp nest
BYTE modeApfIndentSpace;// lcxIndentのmodeSpace
WORD fApfSpaceJspace:1; // lchSpaceは全角空白か?
WORD fApfNakaguroAsArticleForce:1;// 一時的に"・"を"■"と同様に扱う
WORD fApfValidAutoFormat:1; // 一時的に行頭の"・","1."を調べる
NPARA nparaApf; // 自動整形中のnpara
PARAFORM_ARTICLE apf;
IFILE adrApfCurscreen;
int lx0Apf;
int x0Apf;
NLINE nline0Apf; //WCE0.95 970923
// 見出し文字列
HEADLINE* tHeadline; // on demand alloc //WZ4.00Bj 990823
//WZ4.00Bj 990823 tpHeadline,tlchHeadline,head,lchHeadlineContent,offsetHeadlineContent廃止。
//WZ3.90K 981113 tszHeadline廃止
// アウトライン
HWND hwndOutline;
#if !WINDOWSCE
HWND hwndOutlinePartition; //WZ4.00Bj 990824
BYTE rateOutline; //WZ4.00Bj 990824
WORD cxHwndbase0; //WZ4.00Bj 990824 for fOutlineSplitExtend
#endif
FBOOL fOutlineHide;
FBOOL fOutlineSplited; //WCE1.01 980204
CBOOL fOutlineNoJump; //WCE1.01 980204
// caret
FBOOL fHaveCaret; // キャレットを持っている?
CBOOL fUndispCaret; //WCE 970902 HideCaretしてもカーソルが消えないことがあるので、
// 位置を動かして強制的にカーソルを画面から除くために使用
POINT pointCaret; //WCE 970902
// keyword
struct tagKeywordContext* keyword; //WZ4.00Aa 990108 new。txKeyword,fKeywordNoSenseCaseは廃止。
// 変数
WORD fTxfVarConfig:1; //PWZ2BETA0.3 980519 設定中なので、内容が空なら代わりに指示文字列を表示
VAR* var; //PWZ2BETA0.3 980519
// TX-C
TXCTEXTVAR* textvarRoot;//PWZ2BETA0.4 980602 for TEXTVAR
// link
LINKHIST* linkhist; //WZ3.90L 981117 リンク移動ヒストリ
// テキストの変換
struct tagContextConverttext* converttext; //WZ4.00Ac 990206 テキストの変換の設定を覚えるようにした
WORD ctDst:4;
//##TEXT - 現在の内部設定
FBOOL fSilent; //WCE0.94 970922 1行が長すぎるなどの警告を出さない
FBOOL fKcAuto; //WCE0.93 970919 漢字コード自動変換する?
// text->fFrameは設定によりセットされます。
// それ以外のtextはFALSEになってます。
// TRUEにするには、txOpenTextの前に明示的にセットします。
FBOOL fCrAuto; //WZ3.90J 981109 改行コード自動判別する?
// text->fFrameは設定によりセットされます。
// それ以外のtextはFALSEになってます。
// TRUEにするには、txOpenTextの前に明示的にセットします。
BBOOL fDispControlSpace;// 制御コードを半角空白で表示(折り返しも対応)
// 改行なども半角空白で表示
int width; // 折り返し幅
BYTE nClm; //WCE1.01 980216 段数
WORD cySpace; //WCE1.01 980307 行間
BYTE fNoMarkCur; // txMarkCurしない? (++,--)を使う
// txMarkNow/txJumpMarkNow 専用
IFILE mark0; //WCE1.01 971222 txMarkNow時にオリジナルのmark[0]の値を保存
FBOOL fDebug;
FBOOL fReadMode; // 閲覧モード
WORD fNoConfig:1; // txSetFileNameで設定データをロードしない
//参考:txInitTextで、"標準"の設定がロードされます
WORD fNoProfile:1; // txOpenTextでプロファイルを参照しない
WORD fPreview:1; // プレビュー用
// 表示中にキー入力を監視し、キー入力があれば
// 表示処理を中断して応答性を上げる
WORD fTxAllocText:1; // txAllocTextでアロケートされたtext
WORD fUndispWmpaint:1; // WM_PAINTで描画しない?
WORD fFilelist:1; //WZ4.00Ac 990207 FILELISTウィンドウ?
WORD fFilepreview:1; //WZ4.00Ac 990207 ファイルプレビューウィンドウ?
WORD fMemo:1; // メモテキストウィンドウ?
WORD fGrep:1; // Grep結果一覧ウィンドウ?
WORD fHelp:1; // ヘルプテキストウィンドウ?
WORD fContexthelp:1; // コンテキストヘルプテキスト? //WZ4.00Bo 991011 new
WORD fMailPreview:1; //PWZ2BETA0.3 980509 メールプレビューアー
WORD fMailTemplate:1; //PWZ2BETA0.3 980520 メールテンプレート
WORD fTML:1; //PWZ2BETA0.3 980511 TMLヘッダあり、すなわちTMLファイル?
// これがONならRFC822形式のヘッダがあるということになる。
#if 1//WZ3.90G 980903 デフォルトではAlt+M etc を処理しないように変更 for WZテキストボックスを使いやすく。
WORD fUseDefaultAltKey:1;//WZ3.90G 980903 Alt+M etc を処理する
#else
WORD fNoSyskeydown:1; //PWZ2BETA0.3 980519 Alt+M etc を処理しない
#endif
WORD fTags:1; //PWZ2BETA0.4 980612 タグファイル?
WORD fNoFlushWindow:1; //WZ3.90J 981109 txFlushWindowをしない?
WORD fClickActive:1; //WZ3.90I 981103
WORD fOnCheckJumpX:2; //WZ3.90I 981104
BBOOL modeFileShare:2; //WZ3.90H 980925
// 0のときはsh->modeFileShareに従う。
// FILESHARE_DENY_WRITE,FILESHARE_EXCLUSIVEのときは、
// sh->modeFileShareに関わらず、排他制御を行う。裏テキストも行う。
// 直接変更せず、txSetFileShareを使うこと。
WORD fNoBuffReduceAuto:2;//WZ3.90O 981204 自動のtxBuffReduceをしない
WORD fHeadlineOutline:1;//WZ4.00Bj 990810 見出しのみのテキスト(見出し番号は段落先頭の1文字)
WORD fDispMail:1; //WZ4.00Bl 990913 MAIL PREVIEW/MAIL EDITOR用の色分け?
WORD fDispRuby:1; //WZ4.00Bl 990919 通常編集時にルビを表示する?
BBOOL fConfigtext; //WCE1.01 980301 テキスト埋め込みの設定あり?
WORD dlgcode; // TXWS_TEXTのWM_GETDLGCODE処理コード
// default:DLGC_WANTALLKEYS
BBOOL fNoImeControl; // IMEの制御をしない
// BBOOLに拡大
KEY* key; // 現在のキー配列
// text->fFrame/fTXWS_TEXTのみセットされる
// 裏テキストではNULL
#if 0//WZ3.90H 980927 SHAREに移動した
BYTE pagingmode; // ページングモード('S','C','P',' ')
#endif
WORD nSpaceTop; // 上端を空けるドット数
//WCE1.01 980305 BYTE->WORD 印刷時は上マージン
BBOOL fListbox; // リストボックスモード?
#define TXLB_SIZEATR 2 // 行アトリビュートバイト数(1.00C)
// リストボックスモード時の行アトリビュート1バイト目
#define TXLB_NORMAL ' ' // ノーマル
#define TXLB_SELECT '*' // 選択されたファイル
// リストボックスモード時の行アトリビュート2バイト目(1.00C)
// 色コードを指定する
// '1'-'5'を指定するとrgbComment-rgbPreprocessor色で表示
// それ以外はテキスト色で表示
int nListboxSelect; //WCE0.94 970921 選択中の数
WORD fListboxSelCur:1; // カーソル行を選択表示する?
WORD fDispEofFull:1; // EOF行はlcxmaskを無視して表示?
WORD fScrolled:1; // 最後のtxDispFlushでスクロールした?
WORD fCustdataAutoFree:1; // txCloseでcustdataをfreeしNULLにセットする?
LPVOID custdata; // マクロユーザデータ
int lcxmask; // 左からlcxmask文字は表示しない
// lcxmaskに満たない行は、マスクしない
BYTE iLastJumpMark; // uiMarkで最後にジャンプしたマーク番号
DWORD abAdjustGauIncrease; //WCE0.91 970915 AdjustGapでテキストバッファサイズを拡大するときに
// このサイズずつ拡大する。0を指定するとデフォルトで拡大する
// txMsghdr
UINT fTextcfg:1; //WZ3.90I 981027 テキスト設定ファイル?
UINT fTextcfgOnConfigRead:1;//WZ3.90I 981106 fTextcfgでconfigRead時?
UINT fMsghdrLiteral:2; //WZ3.90I 981027 txMsghdrXXXでszHeaderの末尾の':'を省略する。
UINT fMsghdrSetAdd:2; //WZ3.90N 981202 txMsghdrSetで常に追加する。
IBUFF ibuffMsghdrCache; //WZ3.90I 981027 txMsghdrGet高速化用キャッシュ
// wndprocのフック
TXWNDHOOK* rootWndtextHook; //WZ3.90I 981026
TXWNDHOOK* rootWndbaseHook; //WZ3.90I 981026
LRESULT resultWndtextHook; //WZ3.90I 981024 標準値は0
LRESULT resultWndbaseHook; //WZ3.90I 981024 標準値は0
#if 0 //WZ3.90I 981026 廃止。
WORD fWndtextHookTxpcode:1; //PWZ2BETA0.4 980607
WORD fWndbaseHookTxpcode:1; //PWZ2BETA0.4 980607
WNDTEXTHOOKPROC lpWndtextHook;
// このtextのwndprocTextをフック
// fWndtextHookTxpcodeならマクロでフック
WNDTEXTHOOKPROC lpWndbaseHook;
// このtextのwndprocBaseをフック
// fWndbaseHookTxpcodeならマクロでフック
#endif
// walk
IFILE curwalkstart;
int lywalkstart;
FBOOL fwalkselectjump;
FBOOL fAutoSaveForce; // !fFrameでもオートセーブを行う?
FBOOL fWalking; //WZ4.00A 981229
HWND hwndAutoSaveProxy; // 裏テキストの自動保存のためのもの
// 代理WM_TIMER_TXAUTOSAVE受け取りhwnd
// NULLならhwndtextを使用
// apfu
CBOOL fApfuShiftEnter; // 自動段落体裁 Shift+Enter中?
CBOOL fParaIchCountTabOne; //WCE1.01 980115 txGetParaIch/txJumpParaIchで連続するTABを一文字として数える?
CBOOL fParaIchCountTxfNone; //WCE1.01 980308 txGetParaIch/txJumpParaIchで文字でないCHAR_TXFを数えない
// txf
TAGNEST* tagnest; // root
TAGNEST* tagnestNext; // 文字挿入時に付加するタグ
FBOOL fTagnestNextClear; //WCE1.01 980308 次の文字挿入時に
// 文字装飾をクリアして文字を挿入する。
IFILE adrInsertPre; //WCE1.01 980308
CBOOL fTxfDirect; // txRight etcでCHAR_TXFを直接一文字として扱うか?
// 普段は0にしておくこと
FBOOL fGetCharBytes; // txGetCharBytesモード?
IFILE texttop; //WCE1.01 980228 テキストの先頭IFILE
IFILE ifileTmlBody; //WZ3.90H 980923 TMLの本文先頭IFILE
// 通常はtexttopと等しい
// 範囲内印刷時はtexttopを範囲の先頭にセットするので、
// この場合に、ifileTmlBody <= texttopにセットされる。
// 罫線
FBOOL fTableKeisen; // 内部用 罫線表mode?
FBOOL fTableProperty; // 表のプロパティダイアログ表示中
// disp
FBOOL fDispParse; // 構文解析による字句の色分け表示を行う?
FBOOL fDispColoring; // 構文解析以外の色分け表示を行う? //WZ4.00Ab 990202 new
// 箱型選択
DWORD wtmBoxDisped;
FBOOL fBoxDispNeed;
// 印刷
LPRINT* lp; // 印刷情報コンテキスト
mchar szlpstyle[CCHLPSTYLE];// 印刷スタイル名
int pvRate; // 印刷プレビューの表示レート(1-2000)
//WZ3.90H 980928 %だと1きざみが大きすぎるので‰に変更
int pvRate0; //WZ3.90H 980921 for 元に戻す
IFILE adrFlushDispDetail; //WZ3.90I 981106
WORD flpPreview:1; // 印刷プレビュー中?
WORD fDispDetail:1; //WZ3.90I 981106 詳細表示?これがTRUEなら、flpPreviewもTRUEであること。
WORD fFlushDispDetail:1; //WZ3.90I 981106
// html
BBOOL fHtmlDispReduceTag; //WZ3.90I 981027 HTMLのタグの縮小表示
BBOOL fHtmlDispReduceAmp; //WZ3.90I 981027 HTMLの文字参照の縮小表示
BBOOL fHtmlTableTml; //WZ3.90I 981027 表を解釈中?
CBOOL fHtmlTmlConverting; //WZ3.90O 981203 TML<->HTML変換中?
HTMLATR* htmlatr; //WZ3.90I 981029
//##TEXT - TMLファイルの埋め込み設定専用
//通常ファイルでは使用頻度が低いし、それにしては設定サイズが大きいため。
//PWZ2BETA0.3 980514 「名前を付けて保存」の初期値
mchar szFilenameSaveAs[CCHWORD]; // 拡張子まで指定した場合はその名前で保存
// "*.拡張子"の場合はファイル名はそのままで
BYTE modeSaveAs;
#define MODE_SAVEAS_THROUGH 0 // そのまま
#define MODE_SAVEAS_PLAINTEXT 1 // プレーンテキストに変換して保存
#define MODE_SAVEAS_LFTEXT 2 // 改行付きテキストに変換して保存
#define MODE_SAVEAS_WORD 3 //PWZ2BETA0.5 980614 ワープロ用テキストに変換して保存
#define MODE_SAVEAS_LFTEXT_TEMPLATE 99 // for WZ MAIL TEMPLATE
//##TEXT - 現在のユーザ設定(ファイルに保存されない)
mchar szcfg[CCHSTYLENAME]; //WZ3.90I 981028 現在使用している設定の名前
//WZ3.90I 981028 同じ拡張子で異なる設定を利用可能にした。
// 空なら、拡張子の設定を使用
BBOOL fAppendEof; // EOFコードを付加するかどうか?
//WZ3.90J 981110 WZ3.0とは意味が異なる。
// 0:そのまま
// 1:付加する
// 2:EOFを取り除く
BYTE nlineHeader; // ページ数計算に入れないヘッダ行数
BBOOL fDispFull; //WZ3.90J 981109 全画面表示?
//##TEXT - 拡張子毎の設定(設定ファイルに保存される)
int configExtGap; // これ以前のtextメンバの変更でWORD,DWORDメンバの
// アライメントが変わることがあるのを防止
BYTE configExtTop; // 0:未初期化,1:初期化済み
WORD configWidth; // (TML埋込)折り返し幅
int height; // (TML埋込)1ページの行数
SIGNED_WORD tabsize; // (TML埋込)タブカラム数
BBOOL fSetWidthByWindow; // (TML埋込)ウィンドウの幅に合わせて、表示カラム数を自動設定する
int cyConfigSpace; // (TML埋込)行間
//WCE1.01 980307 cySpace -> cyConfigSpace
BBOOL fDispUnder; // アンダーライン表示
BBOOL fDispTab; // TABの表示
BBOOL fDispJspace; // 全角スペースの表示
BBOOL fDispLf; // CR の表示
BBOOL fDispEof; // EOFの表示
BBOOL fDispLine; // 行番号表示
BBOOL fLineD; // 表示行モード(1)/論理行モード(0)
// 通し番号表示行(2) //WZ4.00Bl 990913
SIGNED_WORD modeImeAtOpen; // オープン時のIME制御
#define ISF_NONE 0
#define ISF_OFF 1
#define ISF_ON 2
#define ISF_ONKANA 3
BBOOL modeFreeCursor; // フリーカーソル OFF(0),ON(1),VZ(2)
BBOOL fTabToSpace; // [TAB]でスペースコードを入力
BBOOL modeAutoIndent; // オートインデント
#define AUTOINDENT_NONE 0 // しない
#define AUTOINDENT_EXEC 1 // する
#define AUTOINDENT_JSPACE 2 // 全角スペースもする
BBOOL fJkinsoku; // (TML埋込)禁則
//2.93 禁則を改良
#define KINSOKU_OUT_HANG 1 // 追い出し、句読点ぶら下げ
#define KINSOKU_OUT 2 // 追い出し、句読点追い出し
#define KINSOKU_IN_HANG 3 // 追い込み、句読点も追い込み
SIGNED_BYTE lfHeight; // (TML埋込)フォントサイズ
BBOOL fScrollBarV; // 縦スクロールバー
BYTE widthApf; // 自動整形標準折り返し幅
BYTE fConfigApf; // 自動整形ON?
BYTE indentApf; // 自動整形インデント単位
CHARCONVERT charconvert; // オートコレクト
BBOOL fAfn; // ファイル名の自動決定
mchar szAfn[CCHSWORD]; // 自動決定の方法
BYTE nConfigClm; // (TML埋込)段数
//WCE1.01 980216 nClm->nConfigClm
mchar cszHeadline[CCHWORD]; // (TML埋込)見出し文字列
// TAB区切りカラム文字列
BBOOL modeApfu; // 体裁認識 (PWZ1.0の段落体裁の自動認識と同じ)
#define APFU_ON 1
#define APFU_ARTICLESUB 2
BBOOL fWordlap; //WCE0.91 970911 (TML埋込)英字禁則
BBOOL fDispStatusbar; //WCE0.91 970911 ステータスバー
BYTE fDispHeadlineBold; //WCE0.91 970912 見出しを太字で表示
//WCE1.01 980119
// Bold mask:0x01(COLORING_BOLD)
// Under mask:0x02(COLORING_UNDER)
// Color mask:0x04(COLORING_COLOR)
#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
#define COLORING_ITALIC 8 //WZ4.00Bo 991012 new (LPRINTのみ)
mchar lfFaceName[LF_FACESIZE];//WCE0.91 970912 (TML埋込)フォント名の指定
BBOOL fMyFont; //WCE0.91 970912 自分専用のフォントを使用?
BBOOL lfBold; //WCE0.91 970912 太字で表示
BBOOL fDispRuler; //WCE0.91 970912 ルーラー表示
BYTE nGageRuler; //WCE0.91 970912 ルーラーゲージ単位(10 か 8)
BBOOL fDispControl; //WCE0.91 970913 制御コードを表示?(折り返しも対応)
BBOOL fSubtitleApf; //WCE0.91 970914 自動整形小見出有効
BBOOL modeAcfu; //WCE0.92 970918 自動文字体裁 認識
BBOOL fOpenReadmode; //WCE0.94 970921 閲覧モードで開く
BBOOL fOutlineSplitWindow; //WCE1.01 980312 アウトライン浮動しない?
BYTE lcxOutlineWindow; //WCE1.01 980312 アウトラインウィンドウの幅
FBOOL fTxf; //WCE1.01 971106 TRUE:タグを非表示、FALSE:タグを表示
FBOOL fTxfEnable; //WCE1.01 980113 CHAR_TXFを特別に扱う?
BYTE modeKeisen; //WCE1.01 980116 罫線モード
//WCE1.01 980119 headline
COLORREF rgbHeadline; // 見出しの色
//WCE1.01 980119 keyword
BYTE fDispKeyword; // COLORING_xxx
wchar wszfilenameKeyword[CCHNAME]; // キーワードファイル名
mchar szKeyword[30]; // 即席キーワード指定
COLORREF rgbKeyword; // キーワードの色
//WCE1.01 980119 検索文字列の色分け
BYTE fDispFind; // 検索後に検索文字列を色分け?
COLORREF rgbFind; // その色
//WCE1.01 980126
BBOOL fWidthInfinity; // 折り返しなし?
////WCE1.01 980126 nlineのカウントなど、もっと最適化できる。
BBOOL fApfu2; // 「タブ体裁」?
//WCE1.01 980201 世代管理
BBOOL fUnlimitUndoBuff; // アンドゥバッファサイズを制限しない?
WORD kbGeneBuffMax; // 世代管理保持の最大サイズ(KB)
BBOOL fGeneEnable; // 世代管理を行う?
//WCE1.01 980202 色分け
BBOOL fDispComment; // コメントを色分け?
COLORREF rgbComment; // コメントの色
BBOOL fDispString; // 文字列を色分け?
COLORREF rgbString; // 文字列の色
BBOOL fDispConst; // 定数を色分け?
COLORREF rgbConst; // 定数
BBOOL fDispPreprocessor; // プリプロセッサを色分け?
// 2なら、#if/else/endifも条件で色分け //WZ4.00Bl 990921
COLORREF rgbPreprocessor; // プリプロセッサ
BBOOL fDispTag; // タグを色分け?
COLORREF rgbTag; // タグ
COLORREF rgbHottext; // リンク
BYTE filekind; // ファイルの種類
#define TEXT_PLAIN 0 // プレーンテキスト
#define TEXT_APFU 1 // 体裁認識テキスト
#define TEXT_DOCUMENT 2 // タブ体裁テキスト
#define TEXT_WZ 3 // TML文書
#define TEXT_HTML 4 // HTML文書
#define TEXT_XML 5 // XML文書
#define TEXT_TEXT 6 // 任意のテキスト
#define TEXT_PROGRAM 7 // プログラムファイル(ワーク)
//
#define TEXT_C 100 // Cプログラム
#define TEXT_PASCAL 101 // pascalプログラム
#define TEXT_FORTRAN 102 // fortranプログラム
#define TEXT_SCRIPT 103 // スクリプトプログラム
#define TEXT_ASM 104 // アセンブラプログラム
#define TEXT_BASIC 105 // BASICプログラム
BBOOL fDispURL; // URLの色分け?
BBOOL fApfArticleSpace; //WCE1.01 980206 自動整形で、箇条書きの後に余白を空ける?
// TXF、体裁認識の箇条書きの体裁と合わせるために付けた
mchar szEditor[CCHNAME]; //WCE1.01 980209 エディタ名
BBOOL fNoDispHeadlineString;//WCE1.01 980212 見出しを表示しない?
BBOOL fApfuTab; //WCE1.01 980217 段落先頭のタブを字下げとみなす?
BBOOL fHeadlineStringStd; //PWZ2BETA0.3 980509 標準の見出し文字列を使用?
BBOOL fDispQuote; //PWZ2BETA0.3A 980526 引用を色分け?
COLORREF rgbQuote; //PWZ2BETA0.3A 980526 引用の色
BBOOL fApfJspaceIndentTop; //PWZ2BETA0.3A 980526 自動整形で、全角空白は行頭の字下げとみなす?
BBOOL fApfScenario; //PWZ2BETA0.5 980617 シナリオ整形を行う?
BYTE lcxScenarioSerifuIndent;//PWZ2BETA0.5 980618 せりふの2行目のインデント数
// 0を指定すると標準値(2)になります。
//WZ3.90E 980804
BYTE modeWs; // ウィンドウサイズモード
#define WS_PAGE 0 // ページサイズで指定
#define WS_MAX 1 // 最大化
#define WS_DESTEXT 2 // 中身を指定
WORD lcxWindowDefault; // ウィンドウの幅
WORD lcyWindowDefault; // 高さ
FBOOL fVertical; //WZ3.90I 981013 (TML埋込)縦書き?
BBOOL fVH; //WZ3.90I 981015 縦中横?
BBOOL fPageTurn; //WZ3.90I 981015 ページめくりモード?
BBOOL fDispToolbar; // ツールバー表示 実効値はtxGetDispToolbar()
BBOOL fDispFunctionKey; //WZ3.90I 981107 ファンクションキーの表示
BBOOL fDispTitlebar; //WZ3.90J 981109 タイトルバーを表示?
BBOOL fDispMenubar; //WZ3.90J 981109 メニューバーを表示?
#if !POCKETWZ
// 外部ヘルプ
#define HELP_N 2
mchar tszhelp[HELP_N][CCHWORD];
#endif
BYTE modeConvertSpaceAtSave; //WZ3.90J 981109 保存時にタブをスペースに変換
// 0:変換しない
// 1:tab->spc
// 2:spc->tab
BYTE modeConvertKanaAtSave; //WZ3.90J 981109 保存時のカタカナの変換
// 0:変換しない
// 1:半角->全角
// 2:全角->半角
BBOOL fDeleteTailSpaceAtSave; //WZ3.90J 981109 保存時に行末の空白を除去
BBOOL fConfigBinedit; //WZ3.90J 981109 バイナリ編集を開始
BBOOL fAutoFormat; //WZ3.90J 981109 オートフォーマット
BYTE cxSpace; //WZ3.90J 981109 字間
BBOOL fDispRightMargin; //WZ3.90J 981109 右マージンの表示
BBOOL fApfuBeamtab; //WZ3.90K 981114 段落先頭以外のタブを桁揃えする?
BBOOL fScrollBarH; // 横スクロールバー
//WZ4.00A 981227 横スクロールバーの設定が保存されてなかった。txcマクロの再コンパイル必要。
#define SCROLLBAR_OFF 0
#define SCROLLBAR_ON 1
#define SCROLLBAR_AUTO 2 //2.99D 970329 2:自動を追加
BBOOL fOutlineDispHeadstr; //WZ4.00Bj 990824
#if !WINDOWSCE
mchar szlpstyleStd[CCHLPSTYLE]; //WZ4.00Bj 990830 標準の印刷スタイル名
mchar szToolbar[CCHNAME]; //WZ4.00Bl 990909 ツールバーの名前
mchar szMenu[CCHNAME]; //WZ4.00Bl 990909 メニューバー
mchar szMenuMouseR[CCHNAME]; //WZ4.00Bl 990909 マウス右クリックメニュー
mchar szMenuMouseRClip[CCHNAME];//WZ4.00Bl 990909 選択時のマウス右クリックメニュー
#endif
SEARCHMODE searchmodeInit; //WZ4.00Bl 990908 検索モード
BYTE lcxLinenum; //WZ4.00Bl 990916 行番号の表示桁数(0=標準)
#if WINDOWSCE
mchar cszCondition[CCHSWORD]; //WZ4.00Bl 990922 #if色分け条件 ,で区切って複数指定可
#else
mchar cszCondition[CCHWORD]; //WZ4.00Bl 990922 #if色分け条件 ,で区切って複数指定可
#endif
BBOOL fApfuBeamtabInfinity; //WZ4.00Bl 990923 桁揃えタブの行は折り返ししない?
BYTE configExtEnd;
//##TEXT - 共通設定(設定ファイルに保存される)
int configShareGap; // これ以前のtextメンバの変更でWORD,DWORDメンバの
// アライメントが変わることがあるのを防止
BYTE configShareTop; // 0:未初期化,1:初期化済み
BBOOL fUndoContinue; // 連続アンドゥ
// カーソルを移動しないで行った
// 挿入・削除・BSを一回の操作で一括アンドゥ
BBOOL fJumpCursorCenter; // ジャンプ後カーソルを画面の中央へ
BYTE modeDispSearch; // WINDOWSCE
#define DISPSEARCH_STANDARD 0 // 標準(modeEditorによって異なる)
#define DISPSEARCH_NORMAL 1 // 通常表示
#define DISPSEARCH_REVERSE 2 // 反転表示
#define DISPSEARCH_SELECT 3 // 選択
BBOOL fSpaceLeft; // 左端を空ける
BYTE modeEditor; // キー配列
#define ME_WIN 0
#define ME_VZ 1
#define ME_MI 2
#define ME_EMACS 3 //PWZ2BETA0.5 980617 new
SIGNED_WORD nCursorFaceInsert; // カーソル形状 (挿入)
SIGNED_WORD nCursorFaceWrite; // カーソル形状 (上書)
#define CURSORFACE_STANDARD 0 // 標準(modeEditorによって異なる)
// WINDOWSCE
#define CURSORFACE_WINDOWS 1 // Windows標準
#define CURSORFACE_FULL 2 // フル
#define CURSORFACE_HALF 3 // 縦半分
#define CURSORFACE_HALFHALF 4 // 縦1/4
#define CURSORFACE_UNDERBAR 5 // アンダーバー
BBOOL fJumpTxPasteEnd; // VZ - ブロックペースト後カーソル位置更新
BBOOL fSearchTitle; // VZ - タイトルサーチモード有効
WORD kbUndoBuffMax; // アンドゥバッファの最大サイズ(KB)
BYTE modeImeComposition; // 変換中文字列の表示方法
#define IMECOMP_WINDOW 0 // 変換ウィンドウで表示
#define IMECOMP_CURSOR 1 // カーソル位置に表示
#define IMECOMP_CURSORIME 2 // IMEの描画でカーソル位置に表示 //WZ4.00Aa 990110 new
#define IMECOMP_INLINE 3 // インラインに表示(未完成) //WZ4.00Aa 990110 2->3
COLORREF rgbText; // 通常のテキスト
COLORREF rgbBack; // 背景
COLORREF rgbBlockText; // ブロック内の文字色
COLORREF rgbBlock; // ブロック
COLORREF rgbNline; // 行番号
COLORREF rgbUnderline; // アンダーライン
COLORREF rgbControl; // 制御文字の色
COLORREF rgbURL; // URLの色
BBOOL fUseMenuKey; // @<英字キー>,@[特殊キー] 入力可
BYTE modeTagJump; // タグジャンプオプション
#define TAGJUMP_STD 0 // 標準
#define TAGJUMP_VZ 1 // VZのタグジャンプも認識
// 自動保存
BBOOL fAutoSave; // オートセーブを行う?
BYTE autosaveMode; //WCE 970902 WZ3.0とは実際値が違う
#define AUTOSAVE_BACKUP 0
#define AUTOSAVE_OVERWRITE 1
BYTE autosaveAtQuit;
#define AUTOSAVE_QUIT_NONE 0
#define AUTOSAVE_QUIT_DELETE 1
#define AUTOSAVE_QUIT_BACKUP 2
BYTE autosaveAtOpen; //WCE 970902 WZ3.0とは実際値が違う
#define AUTOSAVE_OPEN_NONE 0
#define AUTOSAVE_OPEN_MESSAGE 1
#define AUTOSAVE_OPEN_UIATTENTION 2
#define AUTOSAVE_OPEN_UIBACKUP 3
#define AUTOSAVE_OPEN_UIREPLACE 4
#define AUTOSAVE_OPEN_REPLACE 5
#define AUTOSAVE_OPEN_UIBACKUPFORCE 6 //WZ3.90J 981108 new
WORD nAutoSaveCmd; // 編集コマンド数
WORD secAutoSaveWait; // 待ち時間
//
BBOOL fCursorMoveBySB; //WCE0.92 970918 スクロールバーでカーソル移動?
BYTE modeKeyClip; // SHIFT+矢印での選択モード
#define MC_CUA 0 // Windows準拠
#define MC_WZ 1 // 開始方向感応
#define MC_VZ 2 // 方向感応(VZライク)
BYTE modeMouseClip; // マウスでの選択モード
BBOOL modeUseTextstack; //WCE0.93 970920 テキストスタックを使うか?
#define TEXTSTACK_OFF 0
#define TEXTSTACK_ON 1
#define TEXTSTACK_ON_AT_VZ 2
SIGNED_BYTE nDispFileHist; //WCE1.01 980203 メニューヒストリ表示数(0..70)
BBOOL fNoClmMove; //WCE1.01 980312 ←→で段の移動をしない
BYTE modeRe; //WZ3.90H 980908 正規表現の動作モード
#define MODERE_WZ 0
#define MODERE_VWXW 1
#define MODERE_VWXWEX 2
BBOOL fDispPathFull; //WZ3.90I 981103 ファイル名をフルパスで表示?
BBOOL fClipboardNoSelect; //WZ3.90I 981103 選択されてないときもコピー、カットする?
BBOOL fHalfPage; //WZ3.90I 981103 PAGEUP/PAGEDOWN半画面?
BBOOL fSetLocateByMouseFocus; //WZ3.90I 981103 アクティブ時に、クリック位置に移動する
BBOOL fOutlineSplitLeft; //WZ3.90I 981103 アウトラインを左側に表示?
BBOOL fDispCharcode; //WZ3.90J 981107 文字コードの表示?
#if !WINDOWSCE
//WZ3.90J 981108 バックアップ
BBOOL fBackup; // バックアップファイルの作成
mchar szBackup[CCHWORD]; // バックアップ作成フォルダ
#endif
BBOOL fCursorNoLf; //WZ3.90J 981109 カーソル横移動で行をまたがらない
BBOOL fTxkeyVertical; //WZ3.90J 981109 縦書き時にtxkeyUp,Down,Left,Rightの縦横を入れ替え
BBOOL modeMouseHide; //WZ3.90J 981109 マウスカーソルを消すかどうか?
#define MOUSEHIDE_CHAR 0 // 文字入力で消す
#define MOUSEHIDE_NONE 1 // 消さない
#define MOUSEHIDE_KEY 2 // キー入力で消す
BBOOL modeMouseFace; //WZ3.90J 981109 マウスカーソルの形状 1:arrow,0:Ibeam
BYTE nSpaceTopH; //WZ3.90J 981109 横書き時、上端を空けるドット数
BYTE nSpaceTopV; //WZ3.90J 981109 縦書き時、右端と左端を空けるドット数
BBOOL fConfirmNewFile; //WZ3.90J 981109 新規ファイルの確認
//WZ3.90J 981110 スクロールの加速
BYTE nKeyScrollAccStart; // 加速開始行数
BYTE nKeyScrollAcc; // 加速中の一度にスクロールする行数
BYTE nCursorScrollH; // 左右のスクロールを何文字毎に行うか
//WZ3.90J 981110 設定ファイルに保存するようにした
//WZ3.90J 981110 自動スクロール
BYTE iScrollSpeed; // スムーススクロール速度 (0..9)
BBOOL fVzEs; // txJumpScreenTop,txJumpScreenEnd 2回でスムーススクロール
WORD mbCheckFilesize; //WZ3.90K 981112 これ以上のファイルを開くときは確認ダイアログを出す
#if !WINDOWSCE
//WZ3.90O 981202 IME変換文字の色を指定できるようにした。テキストと背景色が同じなら規定の色を使う。
COLORREF rgbImeText; // IME変換文字のテキスト
COLORREF rgbImeBack; // IME変換文字の背景。
COLORREF rgbImeHiText; // 注目中のIME変換文字のテキスト
COLORREF rgbImeHiBack; // 注目中のIME変換文字の背景
#endif
BBOOL fClipboardNoDD; //WZ3.90O 981204 D&Dでカットアンドペーストしない?
#if !WINDOWSCE
BBOOL fNoSaveWindowPos; // ウィンドウ位置をセーブしない //WZ4.00Ab 990203 new
BBOOL fNoSaveEditContext; // カーソル位置をセーブしない //WZ4.00Ab 990203 new
BBOOL fOutlineSplitExtend; //WZ4.00Bj 990824 分割アウトラインを表示しても本文ウィンドウサイズが変化しない設定を追加
#endif
BBOOL fOutlineNoButton; //WZ4.00Bj 990824 アウトラインにボタンを表示するかどうか設定できるようにした。
BBOOL fNoDispSmlower; //WZ4.00Bl 990913
BBOOL fNoAutoSaveFD; //WZ4.00Bl 990914
BBOOL fOutlineJumpLyTop; //WZ4.00Bj 990824 アウトラインにボタンを表示するかどうか設定できるようにした。
BBOOL fScrollBarProp; //WZ4.00Bl 990920 プロポーショナルスクロールバー?
BBOOL fOutlineTextfont; //WZ4.00Bl 990924 テキストのフォントで表示?
BYTE configShareEnd;
};
#define SIZE_TXCONFIGEXT (&text1->configExtEnd - &text1->configExtTop)
#define SIZE_TXCONFIGSHARE (&text1->configShareEnd - &text1->configShareTop)
#define SIZE_CONFIGSHARE (&sh->configEnd - &sh->configTop)
#define SIZE_PERMANENT (&sh->permanentEnd - &sh->permanentTop)
IBUFF _ibuffparaPreColoring; //WZ4.00Bl 990921
//##macro functions
#define LoadCurAtr(text)
#define txGetApfu(text) (text->modeApfu || text->fApfu2 || text->fApfuBeamtab || text->fApfuTab) //WZ3.90L 981115 fApfuBeamtabとfApfuTabを追加
#define txGetUseTextstack(text) ((text->modeUseTextstack == TEXTSTACK_ON) || (text->modeUseTextstack == TEXTSTACK_ON_AT_VZ && text->modeEditor == ME_VZ))
#define txGetLcySmlower(text) (text->lcySmlower + text->fAddSmlower)
//#define txGetDispSearch(text) (text->modeDispSearch != DISPSEARCH_NORMAL)
#define txGetDispSearch(text) (!(text->modeDispSearch == DISPSEARCH_NORMAL || (text->modeDispSearch == 0 && text->modeEditor == ME_VZ))) //WZ3.90P 981204 VZの見つけた文字の表示は「通常表示」に変更した。
#define txGetNoReplaceSelSearch(text) (text->modeDispSearch == DISPSEARCH_REVERSE || (text->modeDispSearch == 0 && text->modeEditor != ME_WIN))
#define hwndtextIsTxwsText(hwnd) (GetWindowLong(hwnd,GWL_STYLE) & TXWS_TEXT)
#define txGetMultiClmTextmode(text) (text->nClm >= 2) // テキストモード専用
#define txGetViewmode(text) (text->fSemiViewMode || text->fEditViewMode)
#define txGetEditable(text) (text->fEditable && !text->fReadMode) //WCE1.01 980426
#define txGetLineD(text) (text->fLineD || text->fBinedit)
#define txGetDispLineNo(text) (IsAtPrint(text) ? text->lp->fDispLineNo : text->fDispLine)
#define txGetPageTurnLp(text) (text->hdcPrinter) // 印刷/印刷プレビュー時で、ページめくりモード?
#define txGetPageTurn(text) (text->fPageTurn && text->height && !text->hdcPrinter) // 通常時で、ページめくりモード?
#define xToClient(text,x) (text->cxBase + text->xbase + x)
#define xToClientEx(text,x,cxBase) (cxBase + text->xbase + x)
#define txGetCySpace(text) (text->cySpace)
#define txLpGetCxLinenoBinedit(text) (text->cxLetter*9) //WZ4.00Bj 990831
#if WZFUNC_PRINT
#define IsAtPrint(text) (text->hdcPrinter) // 印刷プレビューまたは印刷時
#define txGetPrinting(text) (text->hdcPrinter && !text->flpPreview) // 印刷中?
#else
#define IsAtPrint(text) (FALSE)
#define txGetPrinting(text) (FALSE)
#endif
#define txGetProp(text) (text->lfEditProp || text->hdcPrinter) // プロポーショナルフォントの可能性。
#define txGetTexttopEnable(text) (text->fTxf || text->mailedit) //WCE1.01 980329
#if 1//WZ4.00Bl 990925
#define txGetConfigtextValid(text) (text->fConfigtext) //WZ4.00Bl 990925 新規作成ウィザードで作成したTML文書の埋め込み設定を修正。
#else
#define txGetConfigtextValid(text) (text->fConfigtext && text->szcfg[0] == 0) //WZ3.90I 981028 埋め込み設定が有効かどうか返す
#endif
#define txGetOriginalCaret(text) (text->fOriginalCaret)
#define txGetCurNpara(text) (text->fScrollSB ? text->nparaSB : text->npara) //WZ3.90L 981123 WZ FILERでスクロールバースクロールすると矩形枠と選択表示が分離した
#define CheckOverWrite(text,old) TRUE
#define structClear(bodystruct) (memset(&(bodystruct),0,sizeof(bodystruct)))
#define __WZ2__ 0
#define __ERR__
#define __FLAT__
#define TEXT_BUFF1 0 // buffaddress = offset
#define TEXT_BUFF2 1 // buffaddress = offset - (text->cur - text->cur0)
#define TEXT_BUFF0 2 // (offset < text->cury) ? TEXT_BUFF1 : TEXT_BUFF2
#define CXCONTROLCHAR 8
// WINDOWSCE cxCharがCXCONTROLCHARより小さいことがある
#define txGetCxControlChar(text) (CXCONTROLCHAR <= text->cxChar ? CXCONTROLCHAR : text->cxChar)
//##STRBLK/ヒストリ
// 標準ヒストリ
typedef int HHIST;
#define HIST_NULL 0 // 内部ワーク用
// WINDOWSCE:使用不可
#define HIST_FILE ((HHIST)1) // ファイル名
#define HIST_SEARCH ((HHIST)2) // 検索文字列
#define HIST_PATH ((HHIST)3) // パス文字列
#define HIST_STR ((HHIST)4) // 最近入力した文字列
#define HIST_COPY ((HHIST)5) // コピーした文字列
#define HIST_IME ((HHIST)6) // IMEに入力した文字列
#define HIST_DELSTR ((HHIST)7) // 削除した文字列
#define HIST_JUMP ((HHIST)8) // カーソル位置 //WZ3.90H 980928 new
#define MAXHIST 9 // ハンドルの個数
#define DEFAULT_SIZEHIST 512 // デフォルト ヒストリサイズ
#if WINDOWSCE
#define SIZEHIST_JUMP 1024
#define SIZEHIST_UNDELETE 1024 //XZ0.20 990825
#else
#define SIZEHIST_JUMP 4096
#define SIZEHIST_UNDELETE 8192 //XZ0.20 990825
#endif
// share構造体に置くためだけに、データ構造を公開する。
// ユーザーは、メンバを参照してはいけない。
typedef struct tagSTRBLK {
LPBYTE buff;
LPBYTE ptail;
WORD sizebuff; // buffのサイズ
WORD nstr; // 文字列数
WORD unit; // 拡大単位
FBOOL fShared;
FBOOL fCustData;
// WORD bit field
WORD fSenseCase:1;
WORD fstatic:1; // for internal
WORD fAlloc:1; //2.90 buff is allced by strblk
WORD fAllocEx:1;
WORD fReverse:1; // hist用にiを反転させる
WORD reserved:11;
// WORD bit field end
LPBYTE pfound;
} STRBLK,*HSTRBLK;
HSTRBLK TXAPI_(409) sbNewStatic(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
HSTRBLK TXAPI_(410) sbNewStaticShare(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
HSTRBLK TXAPI_(411) sbNew(LPBYTE buff,WORD sizebuff);
HSTRBLK TXAPI_(412) sbNewAlloc(WORD sizebuff);
HSTRBLK TXAPI_(413) sbNewAllocEx(WORD sizebuff);
void TXAPI_(414) sbSetBuff(HSTRBLK sb,LPBYTE buff,WORD sizebuff);
LPVOID TXAPI_(415) sbGetBuff(HSTRBLK sb);
BOOL TXAPI_(416) sbReverse(HSTRBLK sb);
void TXAPI_(417) sbSetSenseCase(HSTRBLK sb,BOOL fSet);
BOOL TXAPI_(418) sbGetSenseCase(HSTRBLK sb);
void TXAPI_(419) sbSetCustData(HSTRBLK sb,BOOL fSet);
BOOL TXAPI_(420) sbGetCustData(HSTRBLK sb);
void TXAPI_(421) sbSetReverse(HSTRBLK sb,BOOL fSet);
void TXAPI_(422) sbDelAll(HSTRBLK sb);
BOOL TXAPI_(423) sbObjectLoadMem(HSTRBLK sb,LPVOID p,int len);
int TXAPI_(424) sbObjectGetSize(HSTRBLK sb);
BOOL TXAPI_(425) sbObjectSave(HSTRBLK sb,HANDLE hf);
BOOL TXAPI_(426) sbObjectSaveMem(HSTRBLK sb,LPVOID p);
mchar* TXAPI_(427) sbAdd(HSTRBLK sb,mchar *szstr);
mchar* TXAPI_(248) sbAddW(HSTRBLK sb,wchar* szstr);
int TXAPI_(428) sbiPreSearch(HSTRBLK sb,mchar *szstr);
int TXAPI_(429) sbiSearch(HSTRBLK sb,mchar *szstr);
BOOL TXAPI_(430) sbSearch(HSTRBLK sb,mchar *szstr);
int TXAPI sbiSearchLen(HSTRBLK sb,mchar* szstr,int lch);
BOOL TXAPI_(431) sbDel(HSTRBLK sb,mchar *szstr);
mchar* TXAPI_(432) sbAddHist(HSTRBLK sb,mchar *szstr);
mchar* TXAPI_(433) sbInsert(HSTRBLK sb,int i,mchar* szstr);
mchar* TXAPI_(434) sbAddHistW(HSTRBLK sb,wchar* szstr);
mchar* TXAPI_(435) histAdd(HHIST hist,mchar* szstr);
mchar* TXAPI_(436) histAddW(HHIST hist,wchar* szstr);
int TXAPI_(437) sbGetCount(HSTRBLK sb);
int TXAPI_(438) sbReverseI(HSTRBLK sb,int i);
mchar* TXAPI_(439) sbRead(HSTRBLK sb,int istr);
#define sbReadHist(sb,i) sbRead(sb,sbGetCount(sb) - (i) - 1)
mchar* TXAPI sbReadLast(HSTRBLK sb);
DWORD TXAPI_(440) sbReadCustdata(HSTRBLK sb,int istr);
BOOL TXAPI_(441) sbWriteCustdata(HSTRBLK sb,int istr,DWORD CustData);
BOOL TXAPI_(442) sbDelI(HSTRBLK sb,int i);
mchar* TXAPI_(443) sbRead2(HSTRBLK sb,int istr,WORD* lchstr);
int TXAPI_(444) sbiSearchPrev(HSTRBLK sb,mchar *szstr,int istr);
int TXAPI_(445) sbiSearchNext(HSTRBLK sb,mchar *szstr,int istr);
BOOL TXAPI_(446) sbDelete(HSTRBLK sb);
HHIST TXAPI_(447) sbToHist(HSTRBLK sb);
HSTRBLK TXAPI_(448) sbFromHist(HHIST hist);
HSTRBLK TXAPI_(449) sbSetup(HSTRBLK sb,mchar** tszItem,DWORD* tIdItem);
HSTRBLK TXAPI_(450) sbSetupInteger(HSTRBLK sb,int* tItem,int nItem);
int TXAPI_(519) ComboBox_SetStrblk(HWND hctrl,HSTRBLK sb);
int TXAPI_(520) ComboBox_SetStrblkHist(HWND hctrl,HSTRBLK sb);
int TXAPI_(521) ComboBox_SetHist(HWND hctrl,HHIST hist);
int TXAPI_(522) ComboBox_SetHistSearch(HWND hctrl);
int TXAPI_(523) ListBox_SetStrblk(HWND hctrl,HSTRBLK sb);
int TXAPI_(524) ListBox_SetStrblkFirstclm(HWND hctrl,HSTRBLK sb);
int TXAPI_(525) ListBox_SetStrblkHist(HWND hctrl,HSTRBLK sb);
int TXAPI_(526) ListBox_SetStrblkHistFirstclm(HWND hctrl,HSTRBLK sb);
void TXAPI sbReduce(HSTRBLK sb);
void stdlibInit(void);
HSTRBLK sbSetupDrive(void);
HSTRBLK sbSetupInttable(HSTRBLK sb,int* table);
HSTRBLK sbSetupLfHeight(HSTRBLK sb);
HSTRBLK sbSetupWeight(HSTRBLK sb);
//ユーザヒストリ
HSTRBLK TXAPI_(278) historyOpen(mchar* szName,int cbHistBuff);
void TXAPI_(279) historyClose(mchar* szName,HSTRBLK sb);
void historyDelete(HSTRBLK sb);
//##SHARE
// このメンバにはポインタは配置できない。
// ポインタの指すメモリがプロセス毎に異なるため。
#define MAXOPEN 100 // 最大プロセス数
#define MAXOPENAP 20 // 最大(Filer,Grep,...)数
typedef struct {
HWND hwnd; // hwndbase
WORD fCloseEvery:1; // CloseEvery実行済み? //PWZ2BETA0.3 980508 FBOOL->bitfield
WORD fMailEditor:1; //PWZ2BETA0.3 980508 WZ MAIL EDITOR?
WORD fSearched:1; //WZ4.00Bl 990916 SEARCH_ALLTEXT済?
} WZPROCESS;
#if WINDOWSCE
#define MAXPROFILE 20
#else
// Win95では、速度より便利さを求める。沢山覚えてくれていたほうが便利。
#define MAXPROFILE 100
#endif
typedef struct {
WORD lchFilename; // パス名の長さ
// 0なら無効レコード
wchar wszfilename[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 fMaximized:1; //WZ4.00Ad 990211 最大化で閉じられた
WORD freserved:10;
IFILE mark[MAXMARK]; // マーク位置
IFILE tAdrRefer[MAXREFERPOS]; //WCE0.92 970918 最近参照した位置
BYTE iAdrRefer; // tAdrRefer参照ポインタ
mchar szlpstyle[CCHLPSTYLE]; //WCE1.01 980211 印刷スタイル名
RECT rectTempWindow; //WZ3.90H 980915 一時ウィンドウの位置
WORD pvRate; //WZ3.90H 980921 印刷プレビューの倍率
mchar szcfg[CCHSTYLENAME]; //WZ3.90I 981028 設定名
BYTE rateOutline; //WZ4.00Bj 990824 アウトラインの画面比率
IFILE adrLastEdit; //WZ4.00Bj 990824 最後に編集した位置
} PROFILE;
#define MAX_KEYMACRO 5
#define SIZE_KEYMACROBUFF 1024
typedef struct {
mchar szname[CCHNAME]; // 名前
WORD len; // buff内のデータの長さ
BYTE buff[SIZE_KEYMACROBUFF]; // buff
} KEYMACRO;
#define DIRECTORYATR_N 3
typedef struct {
mchar cvszDirectory[CCHPATHNAME]; // パス列
BYTE kc; // 漢字コード
BYTE cr; // 改行コード
} DIRECTORYATR;
#if WINDOWSCE
#define wszShareId L"PWZ20_Mem" // __VERSION__
#else
#define wszShareId L"WZ40_Mem" // __VERSION__
#endif
typedef struct tagSHARE {
int nOpen; // 起動中の表PWZ Editorウィンドウ数
// PWZアプリケーション(Filer,Grep,etc)は除く
WZPROCESS tWzprocess[MAXOPEN]; //1.99C 起動中の表PWZ Editorウィンドウのモード
// 起動された順序で入っている
// 有効な要素は、[0]から[nOpen-1]まで
// WZアプリケーション(Filer,Grep,etc)は除く
int nOpenAp; // 起動中のWZアプリケーション(Filer,Grep,etc)
// の数
HWND tOpenAp[MAXOPENAP]; // //WZ4.00Bl 990912 起動中のWZアプリケーションのhwnd
// 有効な要素は、[0]から[nOpenAp-1]まで
TX textConfig; // 設定データを保持するtext
// shared text
BYTE reservedSC[4]; // 4バイトは確保しておくこと!
WORD sizehist[MAXHIST]; // ヒストリバッファのサイズを指定(デフォルト:512)
STRBLK hist[MAXHIST]; // ヒストリ
// 複数のインスタンスで共有するので、
// ヒストリ用のHSTRBLKの実体は、shareで定義する。
// shareで定義しないと、ヒストリ用のHSTRBLKは
// インスタンス毎に持たれてしまい、異常動作する
BYTE buffhist[9216+SIZEHIST_JUMP+SIZEHIST_UNDELETE];// データバッファ
PROFILE tProfile[MAXPROFILE]; // プロファイル
// 最近アクセスされたデータ順
int nProfile; // 現在のプロファイル数
KEYMACRO tKeymacro[MAX_KEYMACRO];// キーボードマクロ
//##SHARE - 現在の状態
FBOOL fMemoAdding; // メモに追加中?
HWND hwndMemo; // メモのhwndbase
mchar szMemoAddCaption[CCHWORD];// 次にメモに追加するキャプション
// NULLならデフォルト("クリップボード")
HWND hwndFiler; // forkPwzFilerSingle用
HWND hwndGrep; // forkPwzGrepSingle用
HWND hwndMailer; // forkPwzMailSingle用
HWND hwndTerm; // forkPwzTermSingle用
HWND hwndIcon; // WZ Iconオープン中?
HWND hwndHelp; // WZ Helpオープン中?
FBOOL fMacroRec; // KEYMACRO記録中
FBOOL fMacroPlay; // 再生中
LPBYTE pMacroCur; // 記録/再生ポインタ
LPBYTE pMacroEnd; // 記録/再生終了位置
LPBYTE pMacroStr; // 前回のコマンドがIDM_OVERWRITESTR,IDM_INSERTSTR
// なら、その位置
int fClip; // WZがクリップボードにペーストしたテキストデータ
// の範囲選択モードを保持
FBOOL fClipTxfEnable; //WZ3.90I 981105 クリップボードにコピーしたデータにTXFタグが入っている可能性がある?
FBOOL fStatprintfToMailer; //PWZ2BETA0.3 980525 statprintfをhwndMailerに出力?
#if !WINDOWSCE
BYTE modeSplit; //WZ3.90H 980913 現在のウィンドウ分割
// 画面分割モード('U'/'C'/'V'/'H'),初期値0
#endif
BYTE pagingmode; // ページングモード('S','C','P',' ')
//WZ3.90H 980927 ページングモードは以前textにあったが、全テキストで共有するため(VZではこうなっている)にSHAREに移した
UINT idmRegisterShare; //WZ3.90I 981102 for idmRegisterShareで登録したIDMは全WZで共通。
FBOOL fDragDroping; //WZ3.90I 981104 D&D中?
int nDirAtr; //WZ3.90J 981110 DIRECTORYATRの数
DIRECTORYATR tDirAtr[DIRECTORYATR_N]; //WZ3.90J 981110 フォルダ毎の漢字コード、改行コード指定。"folder.cfg"からロードするが、書き込みはしない。
WORD fSpeak:1; //WZ3.90L 981117 音声化?
WORD fEndSessioned:1; //WZ4.00Ac 990205 new
SEARCH_PACKET search; //WZ4.00Aa 990108 現在の検索・置換文字列。高速オープン以外でも検索文字列を共有できるようにした。
// 現在のネットワークの状態
BYTE env_network; // ネットワーク?
UINT fSpecUserName:1; // ユーザ名が指定された?
UINT fReservedNet:15; //
mchar szUserName[30]; // 現在のユーザ名
// szUserName[0] != 0なら、ユーザ毎に設定保存されます。
// 次のファイルがユーザ毎に、wzディレクトリの
// ユーザ名サブディレクトリの下に作られます
// wz.key,wz.mnu,wz.bar
// wzcfg.cfg,wzprint.cfg
// 以上のファイルがユーザ名サブディレクトリに存在しない時は
// ルートのファイルがコピーされて使用されます。
// ユーザ設定
BYTE configTextShare[256]; // text->configShareの内容
// ([0] == TRUEなら初期化済み)
#if WZFUNC_TEXTCFGBIN
BBOOL fConfigChanged; //WZ3.90N 981201 設定が変更され、まだテキスト設定ファイルには保存されていない。WZFUNC_TEXTCFGBIN用
// mchar szConfigChanged[CCHWORD]; //WZ3.90N 981202 fConfigChangedかつszConfigChangedがセットされている場合はszConfigChangedだけをテキスト設定ファイルに更新
#endif
//##SHARE - 共通設定(設定ファイルに保存される)
// save to cfg file
int configGap; // これ以前のメンバの変更でWORD,DWORDメンバの
// アライメントが変わることがあるのを防止
BYTE configTop; // 0:未初期化,1:初期化済み
mchar szKinsokuTop[300]; // 行頭禁則文字(行の先頭にきてはいけない文字)
mchar szKinsokuEnd[200]; // 行末禁則文字(行の末尾にきてはいけない文字)
mchar szKinsokuKuten[200]; // 句読点
BBOOL fSearchGetText; // カーソル位置の文字列を取り込んで、検索ダイアログを開く
BYTE modeFileOpen; // ファイルオープンモード
#define FILEOPEN_OPEN 0 // プロセス起動オープン
#define FILEOPEN_OPENHIGH 1 // 高速オープン
#define FILEOPEN_CLOSEOPEN 2 // 閉じてオープン
#define FILEOPEN_CLOSEOPENFORCE 99 // 閉じてオープンで保存しますか?を表示しない。//WZ3.90L 981125
BBOOL fEnglishMenubar; // 英語メニューバー
SIGNED_WORD wtmEhWait; // キャプチャ開始時のウェイト数
mchar szQuote[CCHNAME]; // 引用符
BBOOL fFilelistCurSelect; // ファイルリストのカーソル位置を選択表示
mchar cszExtBinary[128]; // バイナリファイルの拡張子。';'で区切って複数指定可。
BBOOL modeUseMyKey; // キー定義を"My Key"にする
#define MYKEY_ADD 1 // "My Key"を追加
#define MYKEY_SET 2 // "My Key"に置き換え
BBOOL fWzStay; // WZを常駐?
BBOOL modeFileShare; // 排他制御
#define FILESHARE_DENY_WRITE 1 // 書き込み禁止
#define FILESHARE_EXCLUSIVE 2 // 読み書き禁止
// 裏テキストは排他制御しない。
mchar cszPathText[300]; // 文書パス
// ';'で区切って複数指定できる
SIGNED_BYTE lfHeight; // (共通)フォントサイズ
mchar lfFaceName[LF_FACESIZE]; // (共通)フォント名の指定
BBOOL lfBold; // (共通)太字で表示
BBOOL fComboboxEx; //WCE0.91 970912 コンボボックスを拡張する
// ↑、↓の絞り込み機能を追加する
mchar szFolderDefault[100]; // 標準フォルダ
BBOOL fKcAuto; //WCE0.93 970919 漢字コードの自動判別?
BYTE iMouseScrollSpeed; //WCE1.01 980209 マウスドラッグスクロール速度 (0..9)
BBOOL fNoCursorBlink; //WZ3.90H 980913 カーソルを点滅しない? !WINDOWSCEのみ
BBOOL fWsWideAtSplit; //WZ3.90I 981103 上下分割時に、ツールバーを消す? !WINDOWSCEのみ
BBOOL fNoUpDownAtClipMouse; //WZ3.90I 981103 方向キーでWindows範囲選択を抜けるときに範囲の先頭/末尾に移動しない。
mchar cszExtText[200]; //WZ3.90I 981103 標準の拡張子。';'で区切って複数指定可。
BBOOL fCheckFiletimeOnSave; //WZ3.90J 981109 保存時にファイルの日付を調べる
BBOOL fCheckFiletimeOnActive; //WZ3.90J 981109 アクティブ時にファイルの日付を調べる
BBOOL fCrAuto; //WZ3.90J 981109 改行コードの自動判別?
BYTE modeOfn; //WZ3.90J 981111 オープンダイアログの形状
#define OFN_STD 0
#define OFN_WIN3 1
#define OFN_WZ 2
#define OFN_STDSIMPLE 3 // Win標準 //WZ4.00Ab 990203 new
#define OFN_VZ 4
mchar cszOfnFilter[CCHPATHNAME];//WZ3.90J 981112 GetOpenFileName szFilter
// 例:"*.c;*.h,*.txt テキストファイル:*.txt"
BBOOL fNoIntelliMouse; //WZ3.90P 981205 WZのインテリマウス機能を使わない
#if UNIX
BYTE modeImShiftSpace; //WZ4.00Bg 990718 XZのShift+Spaceの処理を選択できるようにした。
BBOOL fImSwitchByAltZenhan; //WZ4.00Bg 990719 Alt+半角/全角にIMのon/offを割り当てるか設定できるようにした。
BBOOL fMouseMoveXz; //WZ4.00Bg 990718 XZがマウスカーソルを移動するかどうかを設定できるようにした。
#endif
BBOOL fFileopenFocusList; //WZ4.00Bj 990826 PWZファイルオープンダイアログで初期フォーカスを一覧に設定?
BBOOL fVzKey98; //WZ4.00Bl 990904 VZ(98)準拠キー定義を内部で持つようにした。
BYTE nFunctionKey; //WZ4.00Bl 990909 ファンクションキーの個数
mchar szArticle[100]; //WZ4.00Bl 990911 箇条書き文字。空なら標準のものを使用。
BBOOL fProfileNewtext; //WZ4.00Bl 990912 新規ウィンドウの位置を保存?
#if !WINDOWSCE
BBOOL fToolbarFlat; //WZ4.00Bl 990913
#endif
USERFONTSET tUserfontset[USERFONTSET_N]; //WZ4.00Bl 990920 ユーザフォントセット定義
BYTE nFunctionKeySet; //WZ4.00Bn 991004 ファンクションキーをn個ずつ表示
BBOOL fNoSaveConfigAsText; //WZ4.00Bn 991006 終了時に設定をテキストで出力するのをやめる?
BYTE configEnd;
//##SHARE - permanent 変数
// save to hist/profile file
int permanentGap; // これ以前のメンバの変更でWORD,DWORDメンバの
// アライメントが変わることがあるのを防止
BYTE permanentTop;
BBOOL fFilePreview; // ファイルプレビュー?
CHARCONVERT charconvert; // 最後に実行した文字の変換内容を記憶
NPARA nparaTemplateTarget; // 慣用句の挿入:前回挿入した位置を記憶
BBOOL reserved_1; //PWZ2BETA0.4 980610 廃止 memo_modeDispDate
NPARA reserved_2; //PWZ2BETA0.4 980610 廃止 memo_nparaTarget
// grep
BBOOL grep_fSearchSubFolder;
BBOOL grep_fNoSearchWindows;
BBOOL grep_fNoSearchBinaryFiletype;
SEARCHMODE grep_searchmode;
BYTE grep_modeDispFind;
BBOOL grep_fPreview;
// filer
BBOOL filer_fDoubleWindow;
BBOOL filer_fPreview;
mchar filer_szPath1[CCHPATHNAME];
mchar filer_szPath2[CCHPATHNAME];
// edit
BYTE edit_iInsertBrace; // 前回挿入した括弧番号
//
BBOOL filer_fDispDatesize;
BYTE reserved_3; //PWZ2BETA0.4 980610 廃止 memo_lcxMemolist
BYTE reserved_4; //PWZ2BETA0.4 980610 廃止 memo_lcxMemolistNarrow
BYTE filelist_modeSort; //
BBOOL filer_fEscClose; // {Esc}で直ぐ閉じる
BBOOL filer_fOpenWin; // {Enter}で関連アプリで起動
BYTE edit_iInsertDate; //WCE0.91 970911 前回挿入した日付記号
SIGNED_BYTE filer_lfHeight; // フォントサイズ
mchar filer_lfFaceName[LF_FACESIZE];// フォント名の指定
BBOOL filer_lfBold; // 太字で表示
//WZ3.90G 980905 ウィンドウ位置の保存
RECT filer_rect;
RECT grep_rect;
RECT memo_rect;
RECT help_rect;
BBOOL help_fContent;
BYTE filelist_lfHeight; //WZ3.90J 981111
BBOOL filelist_fSetWidthByWindow; //WZ3.90J 981111
BYTE reserved_5;
BYTE help_lfHeight; //WZ3.90J 981112
BYTE filer_ratePreview; //WZ3.90L 981123
BYTE grep_ratePreview; //WZ3.90L 981123
WORD filelist_cyPreviewWindow; //WZ3.90J 981111 BYTE->WORD
BBOOL lp_fNoConfirmProperty; //WZ3.90P 981206
BBOOL config_SelDispAll; //XZ0.20 990704
BYTE help_rateOutline; //WZ4.00Bj 990824
BYTE reservedPermanent[907];
BYTE permanentEnd;
} SHARE;
//##グローバル変数
#ifdef __TXC__
extern HINSTANCE _hinstance;
//WZ4.00Aa 990108 TX-CからSHARE(sh)にアクセスできるようにした。
SHARE* TXAPI_(898) _shGet(void);
#define sh (_shGet())
#else
extern SHARE* sh;
extern HINSTANCE _hinstance;
extern TX* text1; // text1はいつも必ず存在します。
// ただしtxOpenTextされている状態とは限りません。
// hwndbase,hwndtextが存在するとも限りません。
// text1への参照はやむを得ない場合を除いてしないでください。
// textfは廃止されました。
extern wchar _wszfilenameExe[CCHPATHNAME]; // WZEDITOR.EXEのフルパス名
extern mchar _szexedir[CCHPATHNAME]; //WZ3.90I 981027 text->szexedirの実体
extern mchar _szuiwz[]; //WZ3.90J 981110 UI定義ファイルの名前
#if !UNIX
extern MSG _msg; // WINDOWSCE
#endif
extern BYTE _nOpenAp; // このプロセスで起動中のPWZアプリケーション
extern struct tagDIALOG * _topModeless; // モードレスダイアログリスト
extern BBOOL _fTimeLimit;
extern mchar _szSearchHeadline[];
extern BYTE _cyCommandBar;
extern mchar _cszHeadlineStd[];
extern mchar szMsGossic[];
extern mchar szMsPGossic[];
extern mchar szMsMintyo[];
extern mchar _szPasswordHead[];
extern mchar _szComputerName[30]; // このコンピュータ名。無効なときは{0} //WZ4.00Bp 991014 new
extern BBOOL _foverwriting;
extern BBOOL _modeProcess; // このプロセスのモード(0:通常) //WZ4.00Bo 991011 new
#define PROCESS_MAIL 1
#endif // __TXC__
//{###text API
//##基本編集
IBUFF TXAPI_(1) TXHIGH txInsert(TX* text,mchar *str);
int TXAPI_(179) txInsertChar(tx *text,TXCHAR code);
void txInsertNchar(TX* text,int ch,int n);
int TXAPI_(180) txCurInsertChar(TX* text,TXCHAR code);
int TXAPI_(181) txInsertReturn(TX* text);
BOOL TXAPI_(182) TXAPIBASE txCurInsertReturn(TX* text);
BOOL TXAPI_(911) TXHIGH txCurInsertTextArea(TX* text,TX* textInsert,IFILE adrTop,IFILE adrEnd);
BOOL TXAPI TXHIGH txInsertTextArea(TX* text,TX* textInsert,IFILE adrTop,IFILE adrEnd);
int txInsertWithReturn(TX* text,mchar* sz);
int txInsertWithSpace(TX* text,mchar* sz);
int TXAPI_(767) TXAPIBASE txInsertf(TX* text,mchar* _format,...);
int TXAPI_(206) TXHIGH txInsertW(TX* text,wchar* sz);
void TXAPI_(207) txInsertNspace(TX* text,int nspace,int modeSpace);
#define SPACE_SPACE 0 // 半角スペースを使う
#define SPACE_JSPACE 1 // できるだけ全角空白で挿入、残りは半角スペースで挿入
#define SPACE_TAB 2 // できるだけTabで挿入、残りは半角スペースで挿入
BOOL TXAPI_(250) txInsertText(TX* text,TX* textInsert);
BOOL TXHIGH txCurInsertText(TX* text,TX* textInsert);
BOOL TXHIGH txInsertTextCur(TX* text,TX* textInsert);
BOOL TXAPI_(251) txInsertTextSelect(TX* text,TX* textInsert);
BOOL txCurInsertTextSelect(TX* text,TX* textInsert);
IBUFF TXAPI_(166) TXHIGH txCurInsertBuff(TX* text,mchar *str,IBUFF len);
#define txCurInsert(text,sz) txCurInsertBuff(text,sz,strlen(sz))
BOOL TXAPI_(167) TXHIGH txCurInsertMemorySpace(TX* text,IMEM len);
IBUFF TXAPI_(168) TXHIGH txInsertBuff(TX* text,mchar *str,IBUFF len);
BOOL txInsertHfile(TX* text,HANDLE hfSrc,IFILE size);
BOOL txCurInsertHfile(TX* text,HANDLE hfSrc,IFILE size);
//
IBUFF TXAPI_(172) TXHIGH txDeleteBytes(TX* text,IBUFF len);
IBUFF TXAPI_(8) txDeleteChar(TX* text);
IBUFF TXAPI_(9) txDeletePrev(TX* text);
int TXAPI_(223) txDeletePrevWord(TX* text);
int TXAPI_(201) txDeleteWord(TX* text);
int TXAPI_(202) txDeleteWordMi(TX* text);
void TXAPI_(236) txDeleteText(tx *text);
int TXAPI TXHIGH txDeleteParaPrim(TX* text);
IBUFF DeleteTailReturn(mchar* buff,IBUFF len);
//
typedef struct {
BOOL f;
BOOL fSemiViewMode;
BOOL fReadMode;
BOOL fEditable;
} EDITABLE_CONTEXT; //WZ4.00Bj 990825 new
BOOL txEnterEditable(TX* text,EDITABLE_CONTEXT* context); //WZ4.00Bj 990825 new
void txExitEditable(TX* text,EDITABLE_CONTEXT* context); //WZ4.00Bj 990825 new
//
BOOL txBuffExpand(TX* text,IBUFF size);
IBUFF TXHIGH InsertBytes(TX* text,mchar* str,IBUFF len,int nLf,BOOL fMove);
void FlushAddressAtInsert(TX *text,IFILE len);
//##一般編集
int TXAPI_(203) TXHIGH txDeletePara(TX* text);
int TXAPI_(204) txDeleteParaEnd(TX* text);
int TXAPI_(205) txDeleteParaTop(TX* text);
int TXAPI_(817) txDeleteParaline(TX* text);
int TXAPI_(818) txDeleteParalineEnd(TX* text);
int TXAPI_(819) txDeleteParalineTop(TX* text);
BOOL TXAPI_(899) txDeleteLine(TX* text); //WZ4.00Aa 990109
//
BOOL txuiInsertHistSearch(TX* text);
BOOL txuiInsertHistCopy(TX* text);
BOOL txuiInsertHistStr(TX* text);
BOOL txuiInsertDelete(TX* text);
BOOL txuiInsertDate(TX* text);
BOOL txuiTextInfo(TX* text);
//
int TXAPI_(219) txInsertPara(tx *text);
int TXAPI_(225) txInsertCharModal(tx *text,TXCHAR code);
int TXAPI txInsertAutoIndent(TX* text,int modeAutoIndent);
BOOL TXAPI_(273) txInsertFileW(TX* text,wchar* wszfilename);
BOOL TXAPI_(804) txInsertFile(TX* text,mchar* szfilename);
int TXAPI_(291) TXHIGH_THROUGH txInsertSpaceFreeCursor(TX* text);
int TXAPI_(224) txWriteChar(tx *text,TXCHAR code);
int TXAPI_(287) txWriteReturn(TX* text);
int TXAPI_(288) txWriteTab(TX* text);
int TXAPI_(226) txOverWrite(TX* text,mchar *szstr);
int TXAPI_(227) txOverWriteChar(TX* text,WORD code);
int TXAPI_(228) txOverWriteBuff(TX* text,mchar *szstr,IBUFF lch);
BOOL TXAPI_(229) txDeleteOverWriteChar(tx *text,TXCHAR code);
void TXAPI_(230) txSwitchInsert(tx *text);
BOOL TXAPI_(272) txuiInsertFile(TX* text);
//##移動/基本ジャンプ
IBUFF TXAPI_(133) TXHIGH txRightBytes(TX* text,IBUFF lenMove);
int TXAPI_(151) TXHIGH txRight(TX* text);
int TXAPI_(197) txRightWordMi(TX* text);
int TXAPI_(198) txRightWord(TX* text);
IBUFF TXAPI_(132) TXHIGH txLeftBytes(TX* text,IBUFF lenMove);
int TXAPI_(152) TXHIGH txLeft(TX* text);
int TXAPI_(187) txLeftWord(TX* text);
int TXAPI_(188) txLeftWordMi(TX* text);
//
int TXAPI_(143) txDown(TX* text);
int TXAPI_(144) txDownN(TX* text,int n);
int TXAPI_(145) txNextRoll(TX* text);
int TXAPI_(146) txNextRollN(TX* text,int n);
int TXAPI_(147) txUp(TX* text);
int TXAPI_(148) txUpN(TX* text,int n);
int TXAPI_(149) txPrevRoll(TX* text);
int TXAPI_(150) txPrevRollN(TX* text,int n);
//
BOOL TXAPI_(134) TXHIGH txJumpAddress(TX* text,IFILE address);
BOOL TXAPI_(135) TXHIGH txJumpAddressBinary(TX* text,IFILE address);
BOOL txJumpAddressNear(TX* text,IFILE address);
BOOL txJumpCharTop(TX* text);
void TXAPI_(136) txJumpAddressAddLy(TX* text,IFILE address);
BOOL TXAPI_(173) TXHIGH txJumpFileTop(TX* text);
BOOL TXAPI_(183) TXHIGH txJumpFileEnd(TX* text);
BOOL TXAPI_(174) txJumpFileTopLine(TX* text);
BOOL TXAPI_(184) txJumpFileEndLine(TX* text);
//
int TXAPI_(2) txJumpLineTop(TX* text);
int TXAPI_(3) txJumpLineEnd(TX* text);
int TXAPI_(178) txJumpLineTail(TX* text);
int TXAPI_(193) TXHIGH txJumpParaTop(TX* text);
BOOL TXAPI_(194) TXHIGH txJumpParaEnd(TX* text);
int TXAPI_(189) txJumpWordTop(TX* text);
int TXAPI_(190) txJumpWordEnd(TX* text);
int TXAPI_(191) txJumpWordTopMi(TX* text);
int TXAPI_(192) txJumpWordEndMi(TX* text);
int TXAPI_(375) txPrevLineN(TX* text,int n);
int TXAPI_(376) txNextLineN(TX* text,int n);
//
int TXAPI_(235) TXAPIBASE txJumpNpara(TX* text,NPARA npara);
NPARA txPrevParaN(TX* text,NPARA y);
NPARA txNextParaN(TX* text,NPARA y);
BOOL TXAPI_(195) TXHIGH txNextPara(TX* text);
BOOL TXAPI_(196) TXHIGH txPrevPara(TX* text);
//
int TXAPI_(215) txPrevPage(tx *text);
int TXAPI txPrevPage1(tx *text);
int TXAPI_(216) txPrevHalfPage(tx *text);
int TXAPI_(217) txNextPage(tx *text);
int TXAPI txNextPage1(tx *text);
int TXAPI_(218) txNextHalfPage(tx *text);
//
int TXAPI_(394) txJumpLx(TX* text,int lx);
BOOL TXHIGH_THROUGH txJumpXPrim(TX* text,int x);
int JumpLineEnd(TX* text);
BOOL TXAPI_(399) txDownBuff(TX* text);
BOOL TXAPI_(400) txUpBuff(TX* text);
//##検索/ジャンプ
int TXAPI_(169) TXHIGH txSearchEx(TX* text,mchar* szfind,DWORD searchmode);
int TXAPI_(824) txReplaceEx(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
BOOL TXAPI_(395) txSearchContinue(TX* text);
BOOL TXAPI_(396) txSearchContinuePrev(TX* text);
BOOL TXAPI_(397) txSearchContinueModal(TX* text);
int TXAPI_(633) txSearchCmd(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
void TXAPI_(596) txSetSearchContinue(TX* text,mchar* szFind,SEARCHMODE searchmode);
int TXAPI_(249) txSearchNextPrim(TX* text,mchar *sFind,DWORD searchmode,int lchFind);
#if !__TXC__
BOOL txSearchTabbeam(TX* text,SEARCHMODE searchmode);
void txSearchAlltextInit(TX* text,SEARCHMODE searchmode);
BOOL txSearchAlltextGetFirst(TX* text);
void txSearchAlltextNext(TX* text,DWORD searchmode,BOOL fReplace);
BOOL txuiSearchGet(TX* text,SEARCH_PACKET* search);
BOOL txuiSearchList(TX* text,SEARCH_PACKET* search);
BOOL txuiSearch(TX* text);
BOOL txuiSearchSet(TX* text);
BOOL txuiSearchFunction(TX* text);
BOOL txuiSearchlist(TX* text,SEARCH_PACKET* search);
int _SearchNext(TX* text,mchar *szFind,DWORD searchmode,int lchFind);
//
void searchoptFromSearchmode(SEARCHOPT* opt,SEARCHMODE searchmode);
void searchoptSetupMode(SEARCHOPT* opt);
SEARCHMODE searchoptToSearchmode(SEARCHOPT* opt);
void wndSetEnableSearchOption(HWND hwnd);
mchar* GetFind(void);
void SetFind(mchar* szfind);
void txInitSearchContinueCB(TX* text);
#endif // !__TXC__
//jump
int TXAPI_(289) txJumpPara(tx *text,NLINE line);
int TXAPI_(290) txJumpLine(TX* text,NLINE line);
int TXAPI_(292) txJumpX(TX* text,int x);
BOOL TXAPI_(294) txJumpLy(TX* text,int y);
IFILE TXAPI_(295) TXHIGH txGetParaIch(TX* text);
BOOL TXAPI_(296) TXHIGH txJumpParaIch(tx* text,IFILE lch);
BOOL TXAPI TXHIGH txJumpParaIchEx(TX* text,IFILE ich);
BOOL TXAPI_(341) txJumpPrevEditPara(TX* text);
BOOL TXAPI_(342) txJumpNextEditPara(TX* text);
BOOL TXAPI_(318) txMarkN(TX* text,int n);
BOOL txMarkEx(TX* text,int n,IFILE adr);
BOOL TXAPI_(319) txJumpMarkN(TX* text,int n);
int TXAPI_(324) txJumpBrace(TX* text);
BOOL TXAPI_(326) TXCMDBASE txuiMark(TX* text);
BOOL TXAPI_(327) TXCMDBASE txJumpTagEx(TX* text);
BOOL TXAPI_(402) TXCMDBASE txuiRefer(TX* text);
void TXAPI_(366) txMarkCur(TX* text);
void TXAPI_(367) txJumpMarkCur(tx *text);
void TXAPI_(368) txMarkNow(TX* text);
void TXAPI_(369) txMarkNowAddress(TX* text,IFILE adr);
void TXAPI_(370) txJumpMarkNow(TX* text);
IFILE TXAPI_(371) txEndMarkNow(TX* text);
#if !__TXC__
BOOL txuiJump(TX* text);
BOOL txJumpPrev(TX* text);
BOOL txJumpNext(TX* text);
void jumphistAdd(TX* text);
BOOL txLinkhistJumpPrevGetAble(TX* text);
BOOL txLinkhistJumpNextGetAble(TX* text);
BOOL txLinkhistJumpPrev(TX* text);
BOOL txLinkhistJumpNext(TX* text);
BOOL txuiJumpHist(TX* text);
BOOL txJumpTagPrim(TX* text,int mode);
#endif // !__TXC__
// re
LPVOID TXAPI_(820) reSearchMem(LPVOID pMem,DWORD len,mchar* szFind,SEARCHMODE searchmode,SEARCHRE searchre,DWORD* pLenMatch);
mchar* TXAPI_(821) re(mchar* sztext,mchar* szfind);
mchar* TXAPI_(822) reSearch(mchar* sztext,mchar* szfind,SEARCHMODE searchmode);
mchar* TXAPI_(823) reSearchEx(mchar* sztext,mchar* szfind,SEARCHMODE searchmode,UINT* pLenMatch); //WZ4.00Bj 990830 プロトタイプを修正
mchar* TXAPI_(878) regular(TXSTR sztext,mchar* szfind,mchar* szreplace,SEARCHMODE searchmode);
mchar* TXAPI_(879) regularStr(mchar* sztext,UINT cch,mchar* szfind,mchar* szreplace,SEARCHMODE searchmode);
#define ITAG_TAIL 0x00010001 // 最後のタグ
#if !__TXC__
mchar* TXAPI retagGetP(int iTag);
BOOL TXAPI retagGetEx(int iTag,mchar* szbuff,int cch);
int TXAPI retagGetLch(int iTag);
mchar* TXAPI retagGetTop(int iTag);
void reFreeContext(struct tagRE_CONTEXT* context);
struct tagRE_CONTEXT* reAllocContext(mchar* szFind,SEARCHMODE searchmode,SEARCHRE searchre);
void reSetContext(struct tagRE_CONTEXT* context);
IBUFF memGetCharSize(mchar* p,mchar* pEnd,SEARCHRE searchre);
mchar* memGetPrevChar(mchar* p,mchar* pTop,mchar* pEnd,SEARCHRE searchre);
#endif // !__TXC__
//
//##情報取得
#ifdef __TXC__
int TXAPI_(782) txGetWord(TX* text,TXSTR dst);
int TXAPI_(826) txGetWordWhole(TX* text,TXSTR dst);
int TXAPI_(827) txGetWordAfter(TX* text,TXSTR dst);
int TXAPI_(783) txGetPara(TX* text,TXSTR dst);
int TXAPI_(784) txGetParaRear(TX* text,TXSTR dst);
int TXAPI_(895) txGetLine(TX* text,TXSTR dst); //WZ4.00A 981229
int TXAPI_(896) txGetLineRear(TX* text,TXSTR dst); //WZ4.00A 981229
#endif
//
IFILE TXAPI_(156) txGetParaTop(tx *text);
IFILE TXAPI_(362) TXHIGH txGetParaEnd(tx *text);
IFILE TXAPI_(902) TXHIGH txGetParaContentEnd(TX* text);
IFILE TXAPI_(155) TXHIGH txGetParaTail(TX* text);
int TXAPI_(237) TXHIGH txGetParaLen(TX* text);
int TXAPI_(779) TXHIGH txGetParaContentLen(TX* text);
int TXAPI_(238) TXHIGH txGetParaEx(tx *text,mchar *buff,IBUFF sizebuff);
int TXAPI_(239) TXHIGH txGetParaRearEx(TX* text,mchar *buff,IBUFF sizebuff);
mchar* TXHIGH txGetParaAlloc(TX* text);
BOOL TXAPI_(828) txGetBuff(TX* text,mchar* buff,IFILE adrtop,IFILE adrend);
//
IFILE TXAPI_(354) txGetLineTop(TX* text);
IFILE TXAPI_(355) txGetLineTail(TX* text);
int TXAPI_(780) txGetLineContentLen(TX* text);
//
IFILE TXAPI_(158) txGetWordTop(TX* text);
IFILE TXAPI_(157) txGetWordTail(TX* text);
IFILE TXAPI_(159) txGetSentenceTop(TX* text);
IFILE TXAPI_(160) txGetSentenceTail(TX* text);
IBUFF TXAPI_(280) txGetWordEx(TX* text,mchar* buff,IBUFF sizebuff);
IBUFF TXAPI txGetWordWholeEx(TX* text,mchar* buff,IBUFF sizebuff);
IBUFF TXAPI txGetWordAfterEx(TX* text,mchar* buff,IBUFF sizebuff);
//
IFILE TXAPI_(161) txGetTextSize(TX* text);
IFILE TXAPI_(162) txGetTextSizeSemi(TX* text);
wchar* TXAPI_(349) txGetFileExtW(TX* text);
IFILE TXAPI_(350) txGetAddress(TX* text);
IFILE TXAPI_(351) txGetAddressSelectTop(tx *text);
IFILE TXAPI_(352) txGetAddressSelectEnd(tx *text);
IFILE TXAPI_(308) txGetAddressCurscreen(TX* text);
IFILE TXAPI_(353) txGetSelectLen(TX* text);
int TXAPI_(407) txGetLxLineEnd(TX* text);
int TXAPI_(408) txGetLxLineTail(TX* text);
BOOL TXAPI_(906) txGetDownAble(TX* text,int n);
BOOL TXAPI_(907) txGetUpAble(TX* text,int n);
// pが示す文字のタイプ(CT_SPACE,CT_XXX,etc)を返す
int TXAPI_(163) GetCharType(TX* text,mchar *p);
int chGetType(TXCHAR c,TX* text);
#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
//
TXCHAR TXAPI_(305) TXHIGH txGetChar(TX* text);
TXCHAR TXAPI_(306) TXHIGH txGetPrevChar(TX* text);
TXCHAR TXAPI_(867) txReadChar(TX* text);
IBUFF TXAPI_(377) TXHIGH txGetCharSize(TX* text,IBUFF off);
int txCharGetWidth(TX* text,TEXTCHAR ch);
int txCharGetWidthKanji(TX* text,TEXTCHAR* p);
int txGetCaretCx(TX* text);
int txGetCurCx(TX* text);
//
BOOL TXAPI_(281) txGetFreeCursor(TX* text);
int TXAPI_(282) txRightFree(TX* text);
int TXAPI_(283) txLeftFree(TX* text);
BOOL TXAPI_(364) TXAPIBASE TXHIGH_THROUGH txIsCurFree(tx *text);
//
BOOL TXAPI_(284) TXHIGH txIsCurReturn(TX* text);
BOOL TXAPI_(314) TXAPIBASE txIsCurParaTop(TX* text);
BOOL TXAPI_(286) TXAPIBASE txIsCurLineTop(TX* text);
BOOL TXAPI_(285) TXHIGH txIsCurLineEnd(TX* text);
BOOL TXAPI TXHIGH txIsCurLineReturn(TX* text);
BOOL TXHIGH_COND txIsCurMsgsepa(TX* text);
BOOL TXAPI TXHIGH txIsCurTof(TX* text);
BOOL TXAPI_(329) TXHIGH txIsCurEof(TX* text);
BOOL txIsCurscreenDispEof(TX* text);
//
BOOL TXAPI_(310) txIsLineReturn(TX* text);
BOOL TXAPI_(311) txIsLineEnd(TX* text);
BOOL TXAPI_(312) TXAPIBASE txIsLineParaTop(TX* text);
//比較
int TXAPI_(838) TXHIGH txCmpCur(TX* text,mchar* szstr);
int TXAPI_(839) TXHIGH txCmpCurI(TX* text,mchar* szstr);
int TXAPI_(840) TXHIGH txCmpCurLen(TX* text,mchar* szstr,int lch);
int TXAPI_(841) TXHIGH txCmpCurLenI(TX* text,mchar* szstr,int lch);
int TXAPI_(842) TXHIGH txCmpCurPrev(TX* text,mchar* szstr);
int txCmpParaOffset(TX* text,mchar* szstr,IBUFF offset);
int txCmpIParatop(TX* text,mchar* szstr);
int txCmpIParatopLen(TX* text,mchar* szstr,int lch);
//
wchar* TXAPI_(379) txGetTitleFilenameW(TX* text);
wchar* TXAPI_(380) txGetTitleFilenameFullW(TX* text);
BOOL TXAPI_(270) txGetEdit(TX* text);
mchar* TXAPI_(908) txSprintLocate(TX* text,mchar buff[CCHWORD],UINT mode);
#if !__TXC__
//clm
int clmGetLy(TX* text,int iClm);
BOOL txGetMultiClm(TX* text);
int txGetNclm(TX* text);
int lyToYClm(TX* text,int ly);
int clmFromLy(TX* text,int ly);
int clmGetX(TX* text,int iClm);
int clmGetY(TX* text,int iClm);
//
int txGetLcxLinenum(TX* text);
BOOL txGetScrollBarPreviewH(TX* text);
int txCharGetWidthStr(TX* text,TEXTCHAR* str,int lch);
UINT txFormChar(TX* text,mchar* str,UINT offset);
int txGetXAlign(TX* text,IBUFF off,IBUFF linesize,int align,int cxWidth);
int txchWidth(TX* text,TXCHAR ch);
mchar* txGetStringReturn(TX* text);
int txGetCursorFaceInsert(TX* text);
int txGetCursorFaceWrite(TX* text);
int GetWidthCx(TX* text,IBUFF offset,NPARA npara,int nClm);
int GetPosLeft(TX* text,IBUFF offset,NPARA npara,BOOL fPrinter);
#endif // !__TXC__
//##範囲選択/カットアンドペースト
//
BOOL TXAPI_(214) txSelectEx(tx *text,int fClip);
BOOL TXAPI_(175) txSelect(TX* text);
BOOL TXAPI_(176) txSelectWord(tx *text);
BOOL TXAPI_(177) txSelectLine(tx *text);
BOOL txSelectLineCur(TX* text);
BOOL TXAPI txSelectPara(TX* text);
BOOL TXAPI txSelectParaCur(TX* text);
BOOL TXAPI_(220) txSelectBox(TX* text);
BOOL TXAPI_(221) txSelectAll(tx *text);
BOOL TXAPI_(222) txSelectVz(tx *text);
//
void TXAPI_(812) txJumpSelectTop(TX* text);
void TXAPI_(813) txJumpSelectEnd(TX* text);
BOOL TXAPI_(170) txSelectJump(tx *text);
BOOL TXAPI_(171) txSelectToChar(tx* text);
BOOL TXAPI_(186) TXHIGH txSelectCopy(tx *text);
int TXAPI_(790) txSelectGetMode(TX* text);
BOOL TXAPI_(912) txSelectGetPrev(TX* text);
BOOL TXAPI_(185) txPaste(tx *text);
BOOL TXAPI_(199) txFlushSelectNow(TX* text);
BOOL TXAPI_(360) TXAPIBASE txIsClipInPara(tx *text);
BOOL txSelectToMemo(TX* text);
BOOL txSelectToMemoEx(TX* text,mchar* szCaption);
//
BOOL TXAPI_(300) TXAPIBASE txWalkStart(TX* text);
BOOL TXAPI_(301) TXAPIBASE txIsWalking(TX* text);
BOOL TXAPI_(302) TXAPIBASE txWalkEnd(TX* text);
BOOL TXAPI_(303) TXAPIBASE txWalkStartPrev(TX* text);
BOOL TXAPI_(304) TXAPIBASE txIsWalkingPrev(TX* text);
//
void TXAPI_(200) txSelectCopyQuit(tx *text);
BOOL TXAPI_(212) TXHIGH txSelectDelete(tx *text);
void TXAPI_(213) txSelectCopyDelete(tx *text);
BOOL TXAPI_(373) txSelectQuit(tx *text);
BOOL TXAPI_(385) TXCMDBASE txClipboardAddCopy(TX* text);
BOOL TXAPI_(386) TXCMDBASE txClipboardAddCut(TX* text);
BOOL SelectQuit(TX* text);
//
BOOL TXAPI_(231) TXHIGH txClipPaste(tx *text,HCLIP hclip,BOOL fJump,int _fClip);
BOOL TXAPI_(232) TXHIGH txClipCopyEx(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int fClip,NPARA nparaTop,NPARA nparaEnd);
BOOL TXAPI_(315) TXHIGH txClipPasteEx(TX* text,HCLIP hclip,int istack,DWORD cbPasteMax,BOOL fJump,int _fClip);
BOOL TXAPI_(363) TXHIGH txClipCopy(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind);
BOOL TXAPI_(875) TXHIGH memClipCopy(LPVOID pmem,DWORD cbsize,HCLIP hclip,int fClip);
DWORD TXAPI_(876) TXHIGH memClipPaste(LPVOID pmem,HCLIP hclip);
//
BOOL TXAPI_(343) TXAPIBASE txPrivatePop(TX* text);
BOOL TXAPI_(344) TXAPIBASE txPrivatePopJump(TX* text);
BOOL TXAPI_(345) TXAPIBASE txPrivateDeleteTop(TX* text);
BOOL TXAPI_(346) TXAPIBASE txPrivatePaste(TX* text);
void TXAPI_(347) TXAPIBASE txPrivateClear(TX* text);
BOOL TXAPI_(348) TXAPIBASE TXHIGH txPrivatePush(TX* text);
//
int TXAPI_(316) clipIsWz(void);
BOOL TXAPI_(317) clipGetExistText(void);
BOOL TXAPI_(401) clipClear(HCLIP hclip);
//
#if !__TXC__
void DispFlushClipBox(TX* text);
void DispFlushClipBoxExec(TX* text);
void txGetBoxOffset(TX* text,IBUFF cury,IBUFF curysize,int x,int* pOff1,int* pOff2);
BOOL ClipCopyBox(TX* text,IFILE cliptop,IFILE clipend,HCLIP hclip);
BOOL ClipPasteBox(TX* text,mchar* pstr,IBUFF cbClip);
BOOL SelectDeleteBox(TX* text);
IFILE ClipCopyBoxToHglobal(TX* text,IFILE cliptop,IFILE clipend,HGLOBAL hGlobal);
//
BOOL txSelectOverwrite(TX* text);
BOOL txSelectGetOverwrite(TX* text);
IFILE txGetWordTailForSelect(TX* text);
IFILE txGetWordTopForSelect(TX* text);
BOOL clipPush(HCLIP hclip,mchar* lpData,DWORD cbData);
BOOL clipboardToMemo(void);
BOOL oleclipCopy(CLIPITEM* clipitem);
void wzoleTerm(void);
//textstack
typedef struct {
HANDLE hf;
IFILE sizefile;
} TSHANDLE;
BOOL tsOpen(TSHANDLE* ts);
void tsClose(TSHANDLE* ts);
void tsClearTop(TSHANDLE* ts);
void tsClearAll(void);
BOOL tsGetExist(void);
#endif // !__TXC__
//##表示
void TXAPI_(358) txSetUndisp(tx *text);
BOOL TXAPI_(359) txSetDisp(tx *text);
BOOL TXAPI_(844) txSetDispExJump(TX* text,BOOL fJump);
#define txSetUndispSilent(text) txSetUndisp(text)
#define txSetDispSilent(text) txSetDisp(text)
void TXAPI_(321) TXAPIBASE txSetUndispEx(TX* text);
BOOL TXAPI_(322) TXAPIBASE txSetDispEx(TX* text);
#define txSetUndispExSilent(text) txSetUndispEx(text)
#define txSetDispExSilent(text) txSetDispEx(text)
void TXAPI_(405) txSetUndispEdit(TX* text);
BOOL TXAPI_(406) txSetDispEdit(TX* text);
void TXAPI_(336) txSetBusy(TX* text);
void TXAPI_(337) txSetUnbusy(TX* text);
//
void TXAPI_(365) txDispAll(tx *text);
void TXAPI_(141) txDispTextAll(TX* text);
void TXAPI_(142) txDispTextAllCursor(TX* text);
void TXAPI_(153) txDispText(TX* text,int yTop,int yEnd);
void TXAPI_(154) txDispNpara(TX* text,NPARA npara);
void TXAPI_(356) txDispCursor(TX* text);
void TXAPI_(357) txDispLocate(TX *text);
void TXAPI_(361) txSetLy(tx *text,int ly);
void TXAPI_(374) txSetLyCenter(tx *text);
BOOL TXAPI_(309) txSetLyCurscreen(TX* text,IFILE adrCurscreen);
void TXHIGH_THROUGH txSetLyUndisp(TX* text,int ly);
//
BOOL TXAPI_(209) txSetHigh(tx *text);
BOOL TXAPI_(233) txResetHigh(tx *text);
BOOL TXAPI_(234) txResetHighFlag(tx *text);
#define txSetHighSilent(text) txSetHigh(text)
#define txResetHighSilent(text) txResetHigh(text)
//Flush
void TXAPI_(307) txFlush(TX* text);
void TXAPI_(843) txFlushUI(TX* text);
void TXAPI_(372) TXHIGH_THROUGH txFlushLx(TX* text);
void TXAPI_(378) txFlushCxBase(TX* text);
void TXAPI_(320) txFlushColor(TX* text);
void TXAPI_(208) TXHIGH_THROUGH txFlushCury(TX* text);
void TXAPI txFlushCurysize(TX* text);
#if !__TXC__
//
IBUFF Disp(TX* text,int yTop,int yEnd,int mode);
#define DISP_FLUSHLINENO 1
#define DISP_TYFLUSH 2
#define DISP_GETCURSCREENEND 3
#define DISP_SPACEEND 4
#define DISP_FLUSHALIGN 5 // yTopからyEndのtcxAlignをフラッシュ
#define DISP_LPRINT 6 //WCE1.01 980216 1ページ分を表示し、lcywindow,tLineatrをセットする
void DispLine(TX* text,int ly,IBUFF off,IBUFF linesize,NPARA npara);
void DispLineNo(TX* text,int ly,NLINE nLine,NPARA npara,NPAGE npage,IBUFF off);
void DispNull(TX* text,int ly);
void txDispFlushClip(tx* text,IFILE cliptopnow,IFILE clipendnow);
void tyFlush(TX* text);
void ScrollY(TX* text,int lyTop,int lyEnd,int dy);
void DispFlushClipBox(TX* text);
void FlushDispLines(tx *text,int lines0,int lines,int nLf);
void TXHIGH_THROUGH FlushClipVz(TX* text,UINT fClip);
int txSetupDispLine(TX* text,IBUFF cury,NPARA npara);
void DispLineNull(TX* text);
int GetCurLines(TX* text,IBUFF off,int nLf);
void txSetupCyLine(TX* text,IBUFF cury,IBUFF curysize);
void ScrollPreviewY(TX* text,int yViewportOrgNew);
void txSetColorReverse(TX* text,BOOL fReverse);
void txSetColorTextForce(TX* text);
//
void InitDC(TX* text);
void TermDC(TX* text);
void OpenDC(TX* text);
void CloseDC(TX* text);
void MapDC(TX* text,HDC hdc);
HWND txGetHwndtext(TX* text);
BOOL lfSet(TX* text,LOGFONT* lf);
void FreeFont(TX* text);
void txFontsetcacheTerm(TX* text);
void logfontSetup(LOGFONT* lf,mchar* lfFaceName,int lfHeight,HDC hdc);
//
void caretFlush(TX* text);
void txOnCaretGet(TX* text,BOOL fGet);
int TXHIGH txOffsetToX(TX* text,IBUFF cury,IBUFF offset);
int TXHIGH txXToOffset(TX* text,IBUFF cury,int *pX,IBUFF curysize);
void underlineDraw(tx *text,int ly);
void DispUnderline(tx *text,int lynew,int lyold);
void focuslineHide(tx *text);
void focuslineShow(tx *text);
void focuslineXor(tx *text);
void focuslineInit(TX* text);
void txRulerFlushDisp(TX* text);
void txRulerOnCursorMove(TX* text,int x,int cx);
//
int checkLy(TX* text,int ly);
void TXHIGH_THROUGH txSetLyUndispEx(tx *text,int ly);
int txGetLyCenter(TX* text);
//
int hvGetCxClient(TX* text);
int hvGetCyClient(TX* text);
int VX(TX* text,int y);
int VXP(TX* text,int y);
#if WZFUNC_VERTICAL
int hvDrawText(TX* text,HDC hdc,LPCTSTR lpszStr,int cchStr,RECT* r,UINT op);
void hvMoveTo(TX* text,HDC hdc,int x,int y);
void hvLineTo(TX* text,HDC hdc,int x,int y);
#else
#define hvTextOut(text,hdc,x,y,str,len) TextOut(hdc,x,y,str,len)
#define hvExtTextOut(text,hdc,x,y,op,r,lpszString,cbCount,lpDx) ExtTextOut(hdc,x,y,op,r,lpszString,cbCount,lpDx)
#define hvMoveTo(text,hdc,x,y) MoveTo(hdc,x,y)
#define hvLineTo(text,hdc,x,y) LineTo(hdc,x,y)
#define hvDrawText(text,hdc,lpszStr,cchStr,r,op) DrawText(hdc,lpszStr,cchStr,r,op)
#endif
void hvRect(TX* text,RECT* r);
void hvRectBack(TX* text,RECT* r);
//色分け
void txFreeKeyword(TX* text);
TX* txGetKeywordText(TX* text);
void txFlushKeyword(TX* text);
IFILE txGetUrlTopEnd(TX* text,BOOL fTop);
//Flush
BOOL txFlushBase(TX* text);
void txFlushFont(TX* text);
void txFlushWidth(TX* text);
void txFlushCxCyClient(TX* text);
void txFlushLcywindow(TX* text);
void txFreeBitmap(TX* text);
void txFlushBitmap(TX* text);
void txCheckWidthTab(TX* text);
void txFlushTable(TX* text);
void TXHIGH_THROUGH _txFlushCury(TX* text,BOOL fTail);
void txFlushToolbar(TX* text);
void _txFlushMenu(TX* text,BOOL fShow);
void txFlushMenu(TX* text);
void txFlushMenuFilewindowlist(TX* text,HMENU hmenu);
void txFlushPreviewW(TX* text,wchar* wszfilename);
void txFlushPreview(TX* text,mchar* szfilename);
void txFlushWindow(TX* text);
IBUFF txFlushCurscreen(TX* text);
void txFlushCurscreenForce(TX* text);
BOOL TXHIGH_THROUGH txFlushFree(TX* text);
void txFlushScrollBar(TX* text);
void txFlushMenuCheck(TX* text,UINT mask);
#define FMC_ALL 0x0001
#define FMC_UNDO 0x0002
#define FMC_CLIP 0x0004
#define FMC_CONFIG 0x0008
#define FMC_ATOPEN 0x0010
#define FMC_FORM 0x0020
void txFlushScrollBarPos(TX* text);
//
void txDoCaption(TX* text);
void txDoCaptionEx(TX* text,HWND hwndbase,int idMt);
void txCloseToolbar(TX* text);
void txReflectCc(TX* text,CMDLINECONTEXT* pcc,BOOL fProfile);
void ehHwndSetDisp(TX* text,RECT* rWork,BOOL fDisp);
#endif // !__TXC__
//##ツール
BOOL TXAPI_(323) TXCMDBASE txuiConvertCharZenhan(TX* text);
int TXAPI_(293) txCharConvert(TX* text,CHARCONVERT* cc);
BOOL TXAPI_(334) txCmpFirst(TX* text);
BOOL TXAPI_(335) txCmp(TX* text);
void TXAPI_(338) txIndentInc(TX* text);
void TXAPI_(339) txIndentDec(TX* text);
void TXAPI_(340) txHelpOpenW(TX* text,wchar* _wszfilename);
void TXAPI_(854) txHelpOpen(TX* text,mchar* szfilename);
void TXAPI_(331) txSwitchIme(TX* text);
BOOL TXAPI_(330) txuiImeConvert(TX* text);
BOOL TXAPI_(381) TXCMDBASE txuiConvertChar(TX* text);
BOOL TXAPI_(384) TXCMD TXUI txuiQuote(TX* text);
BOOL TXAPI txQuoteEx(TX* text,mchar* szQuote,int mode);
#define TXQUOTE_SELECT 0x01 // 範囲選択されてなかった時でも選択状態にする
//
void TXAPI_(325) txInsertBrace(TX* text);
void TXAPI_(313) txJankToAnk(TX* text);
void TXAPI_(785) txJkanaToKana(TX* text);
void TXAPI_(786) txJkataToKana(TX* text);
void TXAPI_(787) txKanaToJhira(TX* text);
void TXAPI_(788) txKanaToJkata(TX* text);
void TXAPI_(789) txAnkToJank(TX* text);
// ソート
// WZ4.0/PWZ2.0C EOF行を含むソートもできるようになりました。
typedef struct {
UINT sizeStruct; // sizeof(SORTARG) for version check
NPARA lineTop; // ソート開始論理行(origin:1)
NPARA lineEnd; // ソート終了論理行(origin:1)
//WZ3.90I 981029 lineTop,lineEndがテキストの範囲を超えている場合は、
// テキストに収まる範囲をソートします。
// lineEndが0ならlineTopからテキストの終わりまでをソートします。
IBUFF lchItem; // 比較項目の最大長
// fCsvまたはchItemが0以外なら指定は無視されます。
// 0なら行末までを比較します。
// 行末までに \0 文字があれば、そこまでを比較します。
IBUFF iItem; // 比較項目位置:行先頭からのオフセット
// fCsvがONの場合は、行先頭項目を0とした、比較項目NOを指定します。
BYTE chItem; // 0を指定すると何もしません。
// 0以外を指定すると、iItem以降の最後のchItemの文字から
// 行末までを比較します。
// 行末までに \0 文字があれば、そこまでを比較します。
FBOOL fCsv; // 1にすると、タブで区切られたiItem番目の内容で比較します。
//WZ3.90I 981029 機能実装。
FBOOL fBack; // 逆順にソート?
FBOOL fNoSenseCase; // 半角英大小文字を区別しない
// result
NPARA nparaCur; //WZ3.90I 981029 0以外に指定すると、その段落がソート後にどこの段落に移動したかを返します。
// 以下は使われなくなりました。指定は無視されます。//WZ3.90I 981029
IBUFF lchLine;
LPVOID pfuncCmpKey;
LPARAM lCust;
// 以上は使われなくなりました。
// 拡張用予備
BYTE reserved[16];
} SORTARG;
BOOL TXAPI_(846) TXHIGH txSort(TX* text,SORTARG* arg);
//
#if !__TXC__
void TXAPI txTabToSpace(TX* text);
void TXAPI txSpaceToTab(TX* text);
void TXAPI txDeleteTailSpace(TX* text);
//
BOOL txuiRegisterWord(TX* text,HWND hwndParent);
BOOL uiCustToolbar(mchar* szApp,mchar* szName);
BOOL txuiCustKey(TX* text);
void txKeylist(TX* text);
BOOL TXCMDBASE uiComplete(TX* text);
BOOL txCaseWord(TX* text,BOOL fToLower);
BOOL txuiConvertText(TX* text);
BOOL txuiSort(TX* text);
BOOL txuiProof(TX* text);
BOOL txuiReWording(TX* text);
BOOL txuiSpellCheck(TX* text);
BOOL txuiSpellCheckCur(TX* text);
BOOL txfUiFootnoteInsert(TX* text);
BOOL txfUiFootnoteOp(TX* text);
BOOL txuiRegFiletypeConnection(TX* text);
void SetExtRegTml(BOOL fSet);
void SetExtRegTxt(BOOL fSet);
void SetExtRegUnknown(BOOL fSet);
void SetExtRegTextsPwz(void);
//
BOOL txInsertFileWztext(TX* textInsert,wchar* wszfilename,int mode);
BOOL wordicGetExist(void);
BOOL txDicWord(TX* text);
BOOL txCompletePrev(TX* text);
BOOL txCompleteNext(TX* text);
void txAddRefer(TX* text,IFILE adr);
void uiHelp(int idStartHeadline);
BOOL txJumpThp(TX* text,mchar* szHeadline);
BOOL txuiInsertTemplate(TX* text);
BOOL TXCMDBASE uiInsertControl(TX* text);
BOOL txGrepTagJump(TX* text);
BOOL CALLBACK dlgprocConvertChar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
void ccToCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
void ccFromCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
BOOL uiOpenHistFile(void);
#endif // !__TXC__
//##キー/IDMコマンド実行
BOOL TXAPI_(766) txKeySetWzcmd(TX* text,mchar* szKey,WZCMD wzcmd);
void TXAPI_(901) txKeySet2Stroke(TX* text,IDM idm);
BOOL TXAPI_(619) txKeyLoad(TX* text);
BOOL TXAPI_(620) txKeyLoadFrame(TX* text);
BOOL TXAPI_(621) txKeyInit(TX* text);
BOOL TXAPI_(622) txIdmToSzkey(TX* text,WZCMD wzcmd,mchar szstr[CCHWORD]); //WZ3.90I 981103 txKeyWzcmdToSzstrから名称変更
BOOL TXAPI_(623) keymacroPlayStep(void);
BOOL TXAPI_(624) keymacroPlay(void);
BOOL TXAPI_(625) keymacroPlayN(int number);
BOOL TXAPI_(626) keymacroRecord(void);
BOOL TXAPI_(627) keymacroAddIdm(int idm);
BOOL TXAPI_(628) keymacroAddStr(mchar* szStr,BOOL fOverWrite);
BOOL TXAPI_(629) keymacroAddSearch(mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
BOOL keymacroBusy(void);
BOOL TXAPI_(630) txuiKeymacro(TX* text);
void TXAPI_(631) txInsertPreprocess(TX* text);
void TXAPI_(632) txInsertPostprocess(TX* text);
BOOL TXAPI_(634) wpathIsAutosave(wchar* wszfilename);
BOOL TXAPI_(635) txAutosaveGetFileNameW(TX* text,wchar wszfilename[CCHPATHNAME]);
void TXAPI_(636) txAutosaveExec(TX* text);
BOOL TXAPI_(637) txAutosaveAtQuit(TX* text);
BOOL TXAPI_(638) txAutosaveAtOpen(TX* text);
void TXAPI_(639) txAutosaveAtCmd(TX* text);
BOOL TXAPI_(640) txAutosaveDelete(TX* text);
BOOL TXAPI_(641) txAutosaveGetDelete(TX* text,wchar* wszfilename);
mchar* TXAPI_(403) txWzkeyToSzkey(TX* text,WZKEY wzkey,mchar szkey[CCHKEY]);
mchar* TXAPI_(404) szkeyToStr(mchar szkey[CCHKEY],mchar szstr[CCHWORD]);
void keylistCreate(void);
BOOL hwndControlProcWmKey(HWND hwnd);
BOOL txKeyProcMessage(TX* text,UINT message,WPARAM wParam,LPARAM lParam); //WZ3.90I 981102 引数(BOOL fKeyD)廃止。TXAPI化中止。
BOOL txKeyProcMessageByMouse(TX* text,UINT message,WPARAM wParam,LPARAM lParam);
BOOL txPeekWM_CHAR(TX* text);
BOOL txPeekWM_SYSCHAR(TX* text);
mchar* idmToString(mchar szCmd[CCHWORD],int idm);
mchar* idmToSzEmacsFunction(int idm);
void txKeylistOutputEmacs2Stroke(TX* textDst);
#if !WINDOWSCE
BOOL txGetEmacsIsearching(TX* text);
#else
#define txGetEmacsIsearching(text) FALSE
#endif
int TXAPI_(164) txIdmExec(TX* text,int idm);
int txIdmExecEx(TX* text,int idm,int nRepeat,UINT mode);
#define TXIDM_KEYMACRO_ADD 0x01
#define TXIDM_PRIM 0x02
BOOL txIdmExecFilehist(TX* text,int idm);
int TXAPI_(903) txIdmExecPrim(TX* text,int idm,UINT mode); //WZ4.00Ac 990207 new
int TXAPI_(825) idmRegister(void); //WZ3.90I 981027 new
//WZ3.90I 981027 txIdmExecDirect廃止
BOOL txuiIdmSelect(TX* text);
//##ウィンドウ
#define WNDTX_MOVING 0x0001 // 内部移動中
#define OFFSET_WNDTX_LEFT 4
#define OFFSET_WNDTX_TOP 6
#define OFFSET_WNDTX_CX 8
#define OFFSET_WNDTX_CY 10
#define OFFSET_WNDTX_FLAG 12
#define OFFSET_WNDTX_END 14
BOOL TXAPI_(261) TXCMD uiWindowlist(TX* text);
int TXAPI_(252) textSearch(HWND hwnd);
HWND TXAPI_(253) textRead(int i);
void TXAPI_(262) wndtxSetActive(HWND hwndbase);
HWND TXAPI_(527) wndtxGetActive(HWND hwndbase);
BOOL TXAPI_(848) wndtxIsEditor(HWND hwndbase);
HWND TXAPI_(263) SearchTextW(wchar* szfilename);
HWND TXAPI_(865) SearchText(mchar* szfilename);
BOOL TXAPI_(328) txSwitchWindow(TX* text);
//
#if !__TXC__
WORD wndtxGetFlag(HWND hwnd);
HWND TXAPI wndGetTopPopupWindow(HWND hwndbase);
void TXAPI wndtxGetOriginalRect(HWND hwnd,RECT* r);
void TXAPI wndtxSetOriginalRect(HWND hwnd,RECT* r);
void wndtxSetPosSizeWork(HWND hwnd,int x,int y,int cx,int cy);
void wndtxSetMoving(HWND hwnd,BOOL fSet);
TX* hwndbaseIsMailer(void);
TX* hwndbaseIsTerm(void);
TX* hwndbaseIsHelp(void);
TX* hwndMailerGetText(HWND hwnd);
//
HWND textGetLast(void);
HWND textGetPrev(HWND cur);
HWND textGetNext(HWND cur);
void txPrevWindow(TX* text);
void txNextWindow(TX* text);
BOOL TXCMDBASE windowTileOverlap(void);
BOOL TXCMDBASE windowTile(void);
BOOL TXCMDBASE windowTileV(void);
BOOL TXCMDBASE windowTileH(void);
BOOL TXCMDBASE windowTileUndo(void);
//
#if !WINDOWSCE
MT* txFindMtHwndbase(TX* text,HWND hwnd);
#endif
BOOL txMultiWindow(TX* text,BOOL fSaveAddress);
BOOL on_mt_WM_ACTIVATE(TX* text,HWND hwnd);
BOOL on_mt_WM_PAINT(TX* text,HWND hwnd);
BOOL on_mt_WM_SIZE(TX* text,HWND hwnd);
BOOL on_mt_txQuit(TX* text);
#endif // !__TXC__
//##マクロ
BOOL TXAPI_(868) macroExec(mchar* szMacro,TX* text);
#if !__TXC__
LRESULT CALLBACK dialogCallDlgprocTxpcode(FARPROC proc,HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
void txpcodeNotifyTextClose(TX* text);
void txpcodeSetDlgproc(FARPROC proc,BOOL fRelease);
void txTextvarFreeAll(TX* text);
WZCMD szMacroToWzcmd(mchar* szMacro);
mchar* wzcmdToSzmacro(WZCMD wzcmd);
BOOL uiTxcConfig(void);
BOOL uiMacroExec(TX* text);
BOOL txMacroCompile(TX* text);
BOOL txMacroExec(TX* text);
BOOL txMacroDump(TX* text);
void txMacroLog(TX* text);
BOOL txeExec(mchar* szfilename,wchar* wszCmdLine);
void macroTerm(void);
mchar* txcGetEventMacro(void);
#endif // !__TXC__
//##自動整形
typedef struct {
int lch; // 段落書式の長さ(lchIndent+lchArticle+lchSubtitle)
int lchIndent; // 字下げ文字列の長さ
int lcxIndent; //WZ3.90L 981115 字下げ文字列のLCX
int lchArticle; // 箇条書きの長さ
int lchSubtitle; // 小見出文字列の長さ
int lchSubtitleBody; // 小見出文字列の末尾の空白を除く長さ
int lchSubtitleSymbol; //WCE1.01 980113 小見出しの先頭部分の記号列(一般文字を除く)の長さ
int nBeamtab; //WZ3.90L 981115 桁揃えによる折り返し2行目以降の開始位置
FBOOL fSubtitleChar; //WCE1.01 980113 小見出し文字列は文字列(記号列でない)?
FBOOL fArticleNum; // 番号付き箇条書き段落?
FBOOL fArticleJnumber; // szArticleは全角番号付きか?
SIGNED_WORD nArticle; // 先頭番号
SIGNED_WORD ichNum; // szArticleの番号のオフセット
SIGNED_WORD lchNum; // szArticleの番号の長さ
FBOOL fCurArticleNext; //WCE1.01 971226 カーソル位置が箇条書きの直後にある?
} APFU_ANALYZE;
extern BBOOL _fApfNameSymbol; //WCE1.01 980504 "名前>"を整形するか?
extern mchar _szLineTop[];
int TXAPI_(642) txApfuGetLcxLeft(TX* text,IBUFF offset,APFU_ANALYZE* ana,NPARA npara);
BOOL TXAPI_(643) txApfuIndentInc(TX* text);
BOOL TXAPI_(644) txApfuIndentDec(TX* text);
void TXAPI_(382) txApfInsertHR(TX* text);
BOOL TXAPI_(383) TXCMD txuiApfConfig(TX* text);
//
#if !__TXC__
mchar* mystrread(mchar* sz,TXCHAR* ch);
BOOL txApfExitModal(TX* text);
BOOL txApfExitEx(TX* text,DWORD mode);
#define APF_TO_PLAINTEXT 0x01
#define APF_TO_TML 0x02 //WZ3.90K 981113
BOOL txApfExit(TX* text);
BOOL txApfEnter(TX* text);
BOOL txApfEnterModal(TX* text);
BOOL txApfEnterDeleteParaform(TX* text);
BOOL txApfEnterConnect(TX* text);
BOOL txApfEnterConnectPrev(TX* text);
BOOL txApfIndentInc(TX* text);
BOOL txApfIndentDec(TX* text);
BOOL txApfAtInsertBefore(TX* text);
BOOL txApfAtInsertAfter(TX* text);
void txApfIncrementArticle(TX* text);
void txApfExitFlag(TX* text);
int txApfGetWidth(TX* text);
int txApfGetLcxScenarioSerifuIndent(TX* text);
BOOL txApfCheckEnter(TX* text);
//
void txMailtextToPlaintext(TX* text);
void txPlaintextToMailtext(TX* text);
void txPlaintextToWordtext(TX* text);
#endif // !__TXC__
//##設定
void TXAPI_(607) txConfigGetGroupName(TX* text,mchar szbuff[CCHWORD]);
void TXAPI_(608) txConfigGetNamePrim(TX* text,mchar szbuff[CCHWORD]);
BOOL txConfigGetNamePrimEx(TX* text,mchar szbuff[CCHWORD]);
LPVOID TXAPI_(609) txConfigGetName(TX* text,mchar szbuff[CCHWORD]);
BOOL TXAPI_(610) txConfigGet(TX* text);
BOOL txConfigextGetExist(TX* text,mchar* sz);
BOOL TXAPI_(611) txConfigAdd(TX* text,mchar* szName);
BOOL TXAPI_(612) txConfigConnect(TX* text,mchar* szLoad);
BOOL TXAPI_(613) txConfigSet(TX* text);
BOOL TXAPI_(614) txConfigSetEx(TX* text);
void TXAPI_(914) txConfigRead(TX* text,mchar* szcfg); //WZ4.00Bl 990913 設定切替TXAPI txConfigReadを追加。ユーザ要望。WZ3のように設定を1キーで切替たい。
void txConfigGetPlug(TX* text);
BOOL txConfigReadName(TX* text,mchar* szName);
BOOL txConfigDel(TX* text,mchar* szName);
//
void TXAPI_(615) txProfileAdd(TX *text);
BOOL TXAPI_(616) txProfileLoad(TX* text,PROFILE* pLoad);
BOOL txProfileLoadPrim(TX* text,PROFILE* pLoad);
//
#if !__TXC__
TX* shconfigGetText(void);
void shconfigInit(void);
BOOL shconfigWriteConfigshare(void);
BOOL shconfigWriteTextconfigshare(TX* text);
void shconfigSaveAtEdited(void);
//
void configtxMakeList(LPVOID dst,UINT mode);
BOOL configtxNameIsSystem(mchar* p);
BOOL configtxUpdown(mchar* szName,BOOL fDown,BOOL fTml);
void textcfgWriteAllModal(void);
void textcfgReadAll(void);
void shconfigReadTextconfigshare(TX* text);
//
BOOL histLoad(void);
BOOL histSave(void);
//
BOOL configOpen(CONFIG* config,wchar* wszFilename);
BOOL configSetDataid(CONFIG* config,int dataid,int datalen,BOOL fName);
int configGetCount(CONFIG* config);
int configFind(CONFIG* config,mchar* szName);
BOOL configRead(CONFIG* config,int index,LPVOID pConfig);
BOOL configWrite(CONFIG* config,int index,LPVOID pConfig);
BOOL configDelete(CONFIG* config,int index);
BOOL configRename(CONFIG* config,int index,mchar* szNewName);
int configAdd(CONFIG* config,mchar* szName,LPVOID pConfig);
int configMakeList(CONFIG* config,HWND hctrl);
void configClose(CONFIG* config);
//
void txConfigtextRead(TX* text);
IFILE txConfigtextWrite(TX* text,IFILE adr);
IFILE txConfigtextDelete(TX* text,IFILE adr);
void txConfigtextGetOriginal(TX* text);
//
#define CFGLIST_STRBLK 0x0000 // strblkに出力
#define CFGLIST_LISTBOX 0x0100 // listboxに出力
#define CFGLIST_GETOP(mode) ((mode) & 0xFF)
#define CFGLIST_ALL 0 // 設定名の一覧をすべて出力
#define CFGLIST_NAME 1 // 名前のみを出力。拡張子で始まる名前は出力しない
#define CFGLIST_EXT_NAME 2 // "拡張子" + " (名前)"を出力
#define CFGLIST_NAMESEL 3 // CFGLIST_NAMEと同じだが、CとHTMLを表示しない。 //WZ3.90N 981202
//WZ3.90P 981205 TMLタグを使う設定も表示しない
#define CFGLIST_NAMESELTML 4 // CFGLIST_NAMESELと同じだが、TMLタグを使う設定のみを表示 //WZ3.90P 981205
int _textmsgMakeList(TX* text,LPVOID dst,UINT mode);
int textmsgMakeList(TX* text,HWND hctrl);
void _cfglistAdd(LPVOID dst,UINT mode,mchar* szName);
void _cfglistClear(LPVOID dst,UINT mode);
int cfglistAdd(LPVOID dst,UINT mode,mchar* szItem);
//
BOOL szextIsMail(mchar* szext);
BOOL szextIsNote(mchar* szext);
BOOL szextIsMailPreview(mchar* szext);
#if WZFUNC_TEXTCFGBIN
void shSetConfigChanged(mchar* szName);
#else
#define shSetConfigChanged(szName)
#endif
void txSetGetCommonfont(TX* text,BOOL fSet);
void sbSetupConfigName(HSTRBLK sb);
void txConfigFlushFilekind(TX* text);
void txInsertConfigtextNone(TX* text);
void txSetConfigDefaultDev(TX* text,mchar* szext);
#endif // !__TXC__
//##ファイル
BOOL TXAPI_(259) forkexW(wchar* szfilename,wchar* sw,UINT mode,TXFORKRESULT* pResult);
// szfilenameのファイルをオープンします。
// szfilenameにスイッチ指定を含むことはできません
// 空白を含むファイル名もszfilenameにそのまま指定できます
// szfilenameは""で括ってあっても構いません
// szswに、起動オプションを指定できます。
// オープンできたらTRUE
// 既にオープンされていたらその窓をアクティブにしてFALSE、
// オープンできなかったらFALSEを返します。
// modeにはTXFORK_XXXを指定します。_text.hを参照してください。
#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を起動してオープンする
// TXFORK_REPLACE_NULLが指定されている場合、
// TXFORK_REPLACE_NULLができれば別WZは起動しない
#define TXFORK_SYNC 0x0020 // (未完成です)
// 返り値は、szfilenameの窓のhwndbase。
// オープンできなかったらNULL
// 別WZを起動してオープンした場合は、
// オープン処理が終わるまで待つ。
#define TXFORK_ENABLE_MULTI 0x0080 // szfilenameが既にオープンされていても
// 構わずオープンする。
#define TXFORK_REPLACE_NULL 0x0100 // 現在のtextが無題ファイルで内容が空なら
// 閉じて再利用する
#define TXFORK_REPLACE_TEXT 0x0200 // 現在のtextを強制的に閉じて
// 再利用する
BOOL TXAPI_(260) forkstdW(wchar* szfilename,wchar* sw);
BOOL TXAPI_(781) forkstd(mchar* szfilename,mchar* szsw);
BOOL forkstdPrimW(wchar* wszfilename,wchar* wszsw,int modeFileOpen); //WZ3.90F 980820
//
BOOL TXAPI_(257) TXHIGH txSave(TX* text);
BOOL TXAPI_(258) TXHIGH txSaveToW(TX* text,wchar* wszfilename);
BOOL TXAPI_(805) TXHIGH txSaveTo(TX* text,mchar* szfilename);
BOOL TXAPI_(266) txuiSave(TX* text);
BOOL TXAPI_(267) txuiSaveAs(TX* text);
BOOL TXAPI_(268) txuiSaveAsVz(TX* text);
BOOL TXAPI_(269) txuiSaveTo(TX* text);
BOOL TXAPI_(271) txuiClose(TX *textClose);
BOOL TXAPI_(264) txuiCloseAllEvery(TX* text);
int txuiCloseEvery(TX* text,HWND hwndbase);
void TXAPI_(265) txQuit(TX* text);
BOOL TXAPI_(274) txuiReopenInternal(TX* text);
BOOL TXAPI_(275) txReopenInternalExW(TX* text,wchar* szfilenameNew,BOOL fJumpOld,CMDLINECONTEXT* cc);
#define RIEX_JUMPOLD 0x01
BOOL TXAPI_(276) txuiFileOpen(TX* text);
BOOL TXAPI_(277) txuiFileOpenVz(TX* text);
//
TX* TXAPI_(254) txAllocText(DWORD mode);
#define textalloc() txAllocText(0) //PWZ2BETA0.3 980519
void TXAPI_(255) txFreeText(TX* text);
TX* TXAPIBASE TXAPI_(96) textopenW(wchar* wszfilename);
TX* TXAPIBASE TXAPI_(97) textopen(mchar* szfilename);
#define textnew() textopen(NULL) //PWZ2BETA0.4 980610
TX* TXAPIBASE TXAPI_(916) textopenExW(wchar* wszfilename,UINT mode); //WZ4.00Bm 990928 new
TX* TXAPIBASE TXAPI_(917) textopenEx(mchar* szfilename,UINT mode); //WZ4.00Bm 990928 new
#define TXO_KCAUTO 0x00000001 // 文字コードを自動判別
#define TXO_CRAUTO 0x00000002 // 改行コードを自動判別
#define TXO_KCAUTOMODAL 0x00000004 // 設定に従って文字コードを自動判別
#define TXO_CRAUTOMODAL 0x00000008 // 設定に従って改行コードを自動判別
#define TXO_LINED_0 0x00000010 // fLineDをクリアして開く
#define TXO_TML 0x00000020 // TMLファイルとして開く
TX* TXAPI_(861) textFrameOpenEx(mchar* szfilename,mchar* szsw);
#define textFrameOpen(szfilename) textFrameOpenEx(szfilename,NULL);
void TXAPIBASE TXAPI_(98) textclose(TX* text);
//
BOOL TXAPI_(256) txuiGetOpenFileNameW(TX* text,wchar wszfilename[CCHPATHNAME],wchar* wszCaption,TXOFN_ARG* arg);
BOOL TXAPI_(807) txuiGetOpenFileName(TX* text,mchar szfilename[CCHPATHNAME],mchar* szCaption,TXOFN_ARG* arg);
//
#if !__TXC__
BOOL txuiGetOpenFileNameHtml(TX* text,mchar szfilename[CCHPATHNAME],mchar* szmask);
BOOL txuiFileOpenPrim(TX* text,int modeFileOpen,TXOFN_ARG* arg);
BOOL TXAPI txuiFileOpenReadVz(TX* text);
BOOL txuiProject(TX* text,int mode);
void txProjectOpen(TX* text);
//
BOOL txSaveEh(TX* text);
BOOL txuiSaveMacroFile(TX* text);
void txCheckFiletimeActive(TX* text);
BOOL txConvertForSaveAs(TX* text,int modeSaveAs,wchar* wszfilename,BOOL* pfFileout);
//
BOOL txuiConfirmNewfile(TX* text,CMDLINECONTEXT* pcc,wchar* wszfilename);
BOOL TXAPI txOpenMail(TX* text,mchar* szMailAddress);
BOOL TXAPI txOpenURL(TX* text,mchar* szURL);
void txOpenProcFrameText(TX* text,CMDLINECONTEXT* pcc);
void txOpenNewInstance(TX* text,BOOL fPost);
void txSetImeAtOpen(TX* text);
void txNew(TX* text,BOOL fNewProcess);
BOOL txuiNew(TX* text);
//
BOOL txAutosaveAtOpenEx(TX* text,BYTE autosaveAtOpen);
BOOL txGetBackupFilenameW(TX* text,wchar* wszfilename,wchar dst[CCHPATHNAME]);
BOOL txAutosaveGetOverwrite(TX* text);
#define txAutosaveGetBackup(text) (!txAutosaveGetOverwrite(text)) //PWZ2BETA0.3 980510 new
//
void txSetFileShare(TX* text,int modeFileShare);
void sharefileOpen(TX* text);
BOOL sharefileClose(TX* text);
BOOL sharefileLoadAllClose(TX* text);
void SetReadAll(TX* text);
BOOL TXHIGH txReadAll(TX* text);
//
BOOL IsClose(TX* text);
BOOL fileIsWztext_W(wchar* wszfilename); // for WZ3 wz文書ファイル
#endif // !__TXC__
//##IBUFF操作
IFILE TXAPI_(650) TXHIGH txIfileGetParaTop(TX* text,IFILE ifile);
IFILE TXAPI_(651) TXHIGH txIbuffToIfile(TX* text,IBUFF ibuff);
IBUFF TXAPI_(652) TXHIGH txIfileToIbuff(TX* text,IFILE ifile);
IBUFF TXAPI_(653) TXHIGH txGetGapSize(TX* text);
IBUFF TXHIGH txIbuffGetGapTop(TX* text);
IBUFF TXHIGH txIbuffGetGapEnd(TX* text);
IBUFF TXAPI_(654) TXHIGH txIbuffGetCurParaTop(TX* text);
IBUFF TXAPI_(655) TXHIGH txIbuffGetChartop(TX* text,IBUFF ibuff);
IBUFF TXAPI_(656) TXHIGH txIbuffGetPrevcharIbuff(TX* text,IBUFF ibuff);
IBUFF TXAPI_(657) TXHIGH txfIbuffGetChartop(TX* text,IBUFF ibuff);
IBUFF TXAPI_(658) TXHIGH txfIbuffGetPrevcharIbuff(TX* text,IBUFF ibuff);
IBUFF TXAPI_(659) TXHIGH txfIbuffFlushOffset(TX* text,IBUFF ibuffChartop,IBUFF offset);
IBUFF TXAPI_(660) TXHIGH txIbuffFlushOffset(TX* text,IBUFF ibuffChartop,IBUFF offset); //XZ0.1 990524 (int offset) -> (IBUFF offset)
BOOL TXAPI_(661) txBuffCheckInsert(TX* text,DWORD size);
BOOL TXAPI_(662) txIbuffIsParaTop(TX* text,IBUFF ibuff);
BOOL TXAPI_(663) txIbuffIsCharTop(TX* text,IBUFF ibuff);
IBUFF TXAPI_(664) txIbuffGetCrTop(TX* text,IBUFF ibuff);
IBUFF TXAPI_(665) txIbuffGetParaTop(TX* text,IBUFF ibuff);
BOOL TXAPI_(666) txIbuffIsParaEnd(TX* text,IBUFF ibuff);
BOOL txIbuffIsEof(TX* text,IBUFF ibuff);
IBUFF TXAPI_(667) txIbuffGetParaEnd(TX* text,IBUFF ibuff);
IBUFF txIbuffGetParaEndLimit(TX* text,IBUFF ibuff,IBUFF maxlen);
IBUFF txIbuffGetParaContentEnd(TX* text,IBUFF ibuff);
IBUFF txIbuffGetPrevPara(TX* text,IBUFF ibuff);
IBUFF TXAPI_(668) txIbuffGetNextPara(TX* text,IBUFF ibuff);
#define txIfileGetNextPara(text,ifile) txIbuffToIfile(text,txIbuffGetNextPara(text,txIfileToIbuff(text,ifile)))
// IFILEの文字サイズを取得(CHAR_TXF対応)
#define txIfileGetCharsize(text,ifile) txGetCharSize(text,txIfileToIbuff(text,ifile))
BOOL TXAPI_(670) txIbuffIsTop(TX* text,IBUFF ibuff);
BYTE TXAPI_(671) txIbuffGetPrevByte(TX* text,IBUFF ibuff);
IBUFF txIbuffFromNpara(TX* text,NPARA npara); //WZ4.00Bj 990824 new
IBUFF txIbuffFromNparaEx(TX* text,NPARA npara,IBUFF ibuffStart,NPARA nparaStart);
NPARA txIbuffGetNpara(TX* text,IBUFF ibuff);
IBUFF txIfileGetTop(TX* text);
IBUFF txIbuffFromLy(TX* text,int ly,IBUFF* pCurysize);
BOOL txIbuffIsUrl(TX* text,IBUFF ibuff);
BOOL txIbuffJumpLink(TX* text,IBUFF ibuff);
BOOL txIbuffIsNspace(TX* text,IBUFF ibuff,int n);
TXCHAR TXHIGH txIbuffGetChar(TX* text,IBUFF ibuff);
NPARA GetNparaFromOffset(TX* text,IBUFF offset);
//##アンドゥ/世代管理
BOOL TXAPI_(210) txUndo(TX* text);
BOOL TXAPI_(211) txRedo(TX* text);
BOOL TXAPI_(332) TXHIGH_THROUGH txUndoPara(TX* text);
BOOL TXAPI_(333) txuiGene(TX* text);
#if !__TXC__
BOOL undoGetEditAble(TX* text);
void undoInit(TX* text);
void undoTerm(TX* text);
void undoAddDeleteSelect(TX* text,DWORD address,DWORD size);
void undoAddDelete(TX* text,DWORD sizedelete);
void undoAddInsert(TX* text,IFILE address,LPVOID pinsert,DWORD sizeinsert,BOOL fMove);
void undoAddOpen(TX* text);
void undoAddCellFlush(TX* text,BOOL fStart);
void undoPackStart(TX* text);
BOOL undoPackEnd(TX* text);
BOOL undoSaveW(TX* text,wchar *wszfilename,FILETIME* ft,FILETIME* ft0);
BOOL undoClear(TX* text);
BOOL undoGetAble(TX* text);
BOOL redoGetAble(TX* text);
void undoAddAutoForm(TX* text,BOOL fEnd);
BOOL geneReadText(TX* textTarget,int igene,TX* text);
#endif // !__TXC__
//##メッセージ(RFC822)テキスト処理
#if !__TXC__
int txMsghdrGet(TX* text,mchar* szHeader,mchar** pSz);
int txMsghdrGetInt(TX* text,mchar* szHeader,int intDefault);
BOOL txMsghdrGetString(TX* text,mchar* szHeader,mchar* szDefault,mchar* szbuff,int cchbuff);
BOOL txMsghdrGetStringW(TX* text,mchar* szHeader,wchar* szDefault,wchar* szbuff,int cchbuff);
int txMsghdrGetAlloc(TX* text,mchar* szHeader,mchar** pSz);
BOOL txMsghdrSetInt(TX* text,mchar* szHeader,int data);
BOOL txMsghdrGetExist(TX* text,mchar* szHeader);
BOOL txMsghdrGetsetString(TX* text,mchar* szHeader,mchar* szbuff,int cchbuff,BOOL fSet);
void txMsghdrGetsetStringInit(TX* text,mchar* szHeader,mchar* szInit,mchar* szbuff,int cchbuff,BOOL fSet);
BOOL txMsghdrGetsetInt(TX* text,mchar* szHeader,int* data,BOOL fSet);
void txMsghdrGetsetIntInit(TX* text,mchar* szHeader,int initdata,int* data,BOOL fSet);
BOOL txMsghdrGetsetIntW(TX* text,mchar* szHeader,WORD* data,BOOL fSet);
BOOL txMsghdrGetsetIntB(TX* text,mchar* szHeader,BYTE* data,BOOL fSet);
BOOL txMsghdrJumpHeader(TX* text,mchar* szHeader);
BOOL txMsghdrSetFiletimeWzdate(TX* text,mchar* szHeader,FILETIME* filetime);
BOOL txMsghdrSetChoice(TX* text,mchar* szHeader,int data,mchar** tsz);
int txMsghdrGetChoice(TX* text,mchar* szHeader,int intDefault,mchar** tsz);
DWORD txMsghdrGetBinary(TX* text,mchar* szHeader,LPVOID pData);
BOOL txMsghdrSetW(TX* text,mchar* szHeader,wchar* wszContent);
BOOL txMsghdrSetBinary(TX* text,mchar* szHeader,DWORD sizedata,LPVOID pdata);
void txMsgJumpMsgTop(TX* text);
BOOL txMsghdrSetEx(TX* text,mchar* szHeader,mchar* szContent,int lchContent);
int txMsghdrGetContentMultiline(TX* text,int lchHeader,mchar** pSz);
void txMsghdrGetsetIntInitB(TX* text,mchar* szHeader,int initdata,BYTE* data,BOOL fSet);
void txMsghdrGetsetIntInitW(TX* text,mchar* szHeader,int initdata,WORD* data,BOOL fSet);
BOOL txMsghdrDeleteMultiline(TX* text,mchar* szHeader);
BOOL txMsghdrGetsetStringW(TX* text,mchar* szHeader,wchar* szbuff,int wcchbuff,BOOL fSet);
BOOL txMsghdrSetTextbuff(TX* text,mchar* szHeader);
TEXTCHAR* txMsghdrGetTextbuff(TX* text,mchar* szHeader);
BOOL txMsghdrDelete(TX* text,mchar* szHeader);
BOOL txMsghdrSet(TX* text,mchar* szHeader,mchar* szContent);
BOOL TXHIGH txIbuffIsMsgsepa(TX* text,IBUFF ibuff);
//
TX* textmsgopen(mchar* szfilename,mchar* szName);
BOOL textmsgclose(TX* text);
BOOL textmsgDel(TX* text,mchar* szName);
void textmsgAdd(TX* text,mchar* szName);
BOOL textmsgSetNull(TX* text,mchar* szName);
BOOL textmsgNext(TX* text);
TX* textmsgopenWzapp(mchar* szName);
BOOL textmsgGetRecord(TX* text,mchar* szName);
BOOL textmsgSearch(TX* text,mchar* szName);
BOOL textmsgJumpTop(TX* text);
#endif // !__TXC__
//##初期化/オープン/クローズ
void TXAPI_(137) txInitText(TX* text);
BOOL TXAPI_(138) txSetFileNameW(TX* text,wchar* wszfilename);
BOOL TXAPI_(808) txSetFileName(TX* text,mchar* szfilename);
BOOL txSetFileNamePrimW(TX* text,wchar* wszfilename);
BOOL TXAPI_(139) txOpenText(TX* text);
BOOL TXAPI_(140) txClose(TX* text);
BOOL Init(TX* text,BOOL fTxDeleteText);
void txInitConfig(TX* text);
void txFreeColor(TX* text);
BOOL txCreateWindow(TX* text);
BOOL Exit(void);
//##TXF
BOOL TXAPI_(673) txfTagIsSingle(TEXTCHAR* pTag);
BOOL TXAPI_(674) txfTagIsChar(TEXTCHAR* pTag);
BOOL TXAPI_(675) txfTagIsEnd(TEXTCHAR* pTag);
BOOL TXAPI_(676) txfTagIsPara(TEXTCHAR* pTag);
BOOL TXAPI_(677) txfTagIsParaMulti(TEXTCHAR* pTag);
int TXAPI_(678) txfTagGetLch(TEXTCHAR* pTag);
TEXTCHAR* TXAPI_(679) txfTagGetName(TEXTCHAR* pTag);
BOOL TXAPI_(680) txfTagNameIs(TEXTCHAR* pName,TEXTCHAR* pTagname);
int txfTagNameGetLch(TEXTCHAR* pName);
BOOL TXAPI_(681) txfTagIsBeam(TEXTCHAR* pTag);
BOOL TXAPI_(682) txfTagAnalyze(TAGANA* ana,TEXTCHAR* pTag);
int TXAPI_(683) txfTagInsert(TX* text,TAGANA* ana);
int TXAPI_(684) txfTagInsertEx(TX* text,TAGANA* ana,TEXTCHAR* szAtr);
void TXAPI_(685) txfTagInsertBeam(TX* text,int lx);
void TXAPI_(686) txfTagnestFree(TX* text);
void TXAPI_(687) txfTagnestNextFree(TX* text);
TAGNEST* TXAPI_(688) txfTagnestSearch(TX* text,TAGANA* ana,UINT mode);
TAGNEST* TXAPI_(689) txfTagnest(TX* text,TEXTCHAR* pTag,int mode);
mchar* txfTagSkip(mchar* p);
void TXAPI_(690) txfSplit(TX* text);
void TXAPI_(691) txfFlushTagAtInsert(TX* text,IFILE address,IFILE cbClip);
int TXAPI_(692) txfGetDispString(TEXTCHAR* pTag,TEXTCHAR szbuff[CCHWORD]);
void TXAPI_(693) txfClearCharatr(TX* text);
void TXAPI_(694) txfClearCharatrArea(TX* text,IFILE* pTop,IFILE* pEnd);
void TXAPI_(695) txfCharatrEx(TX* text,TEXTCHAR* szTag,TEXTCHAR* szAtr);
#define TXFCHARATR_CLEAR ((TEXTCHAR*)1)
void TXAPI_(696) txfParaatrEx(TX* text,TEXTCHAR* szTag,TEXTCHAR* szAtr,int chTxftag);
#define TXFPARAATR_CLEAR ((TEXTCHAR*)1)
BOOL TXAPI_(697) txfRightChartop(TX* text);
BOOL TXAPI_(698) txfRightChartopTxf(TX* text);
BOOL TXAPI_(699) txfDeleteChar(TX* text);
BOOL TXAPI_(700) txfDeleteChartag(TX* text);
BOOL TXAPI_(701) txfDeleteChartagPrev(TX* text);
BOOL TXAPI_(702) txfLeftChartail(TX* text);
BOOL TXAPI_(703) txfLeftChartailEx(TX* text,BOOL fStopParaTag);
BOOL TXAPI_(704) txfLeftChartailTxf(TX* text);
BOOL TXAPI_(705) txfLeftChartop(TX* text);
BOOL TXAPI_(706) txfLeftChartopTxf(TX* text);
IBUFF TXAPI_(707) txfDeleteNull(TX* text);
IBUFF TXAPI_(708) txfDeleteNullTxf(TX* text);
void TXAPI_(709) txfUiInsertTable(TX* text);
BOOL TXAPI_(710) txfUiInsertImg(TX* text);
void TXAPI_(711) txfImgAnalyze(TX* text,TEXTCHAR* pTag,IMGATR* atr);
void TXAPI_(712) txfImgAnalyzeFree(TX* text,IMGATR* atr);
void TXAPI_(713) txfImgSet(TX* text,IMGATR* atr);
void imgatrToString(IMGATR* atr,TEXTCHAR szAtr[CCHPATHNAME * 2]);
TEXTCHAR* TXAPI_(714) txfCellGetLeft(TX* text);
void TXAPI_(715) txfCellAnalyze(TX* text,TEXTCHAR* pTag,CELLATR* atr);
void TXAPI_(716) txfCellSet(TX* text,CELLATR* atr);
BOOL TXAPI_(717) txfCellProperty(TX* text);
BOOL TXAPI_(718) txfCellFlush(TX* text);
void TXAPI_(719) txfIndentInc(TX* text);
void TXAPI_(720) txfIndentDec(TX* text);
BOOL TXAPI_(721) txfIsCurParaTop(TX* text);
void TXAPI_(722) txfBeam(TX* text);
int TXAPI_(723) txfGetLcxLeft(TX* text,IBUFF offset);
BOOL TXAPI_(724) txfProperty(TX* text);
BOOL TXAPI_(725) txfCharProperty(TX* text);
BOOL TXAPI_(726) txfParaProperty(TX* text);
BOOL txfParaPropertyEx(TX* text,BOOL fSimple);
void TXAPI_(727) txfParaOp(TX* text,int idm);
void TXAPI_(728) txfCharOp(TX* text,int idm);
void TXAPI_(729) txfGetCharProperty(TX* text,CONTEXT_CHARPROPERTY* context);
void TXAPI_(730) txfBeamFlush(TX* text,BOOL fAtInsertBeam);
BOOL txfConvert(TX* text,int modeSaveAs,HANDLE hf,TX* textQuote);
int txfParaTagsGetLch(mchar* p);
mchar* txfGetSubject(TX* text,mchar* buff,int cch);
int txfGetIndent(TX* text,BOOL fDelete);
TEXTCHAR* TXAPI_(731) atrnext(TEXTCHAR* p);
int TXAPI_(732) atrlen(TEXTCHAR* pAtr);
TEXTCHAR* TXAPI_(733) atrAddInt(TEXTCHAR* dst,TEXTCHAR* szAtr,int data);
TEXTCHAR* TXAPI_(734) atrAddBool(TEXTCHAR* dst,TEXTCHAR* szAtr,BOOL f);
TEXTCHAR* TXAPI_(735) atrAddString(TEXTCHAR* dst,TEXTCHAR* szAtr,TEXTCHAR* szString);
TEXTCHAR* TXAPI_(736) atrAddStringW(TEXTCHAR* dst,TEXTCHAR* szAtr,wchar* wszString);
TEXTCHAR* TXAPI_(737) atrAddAlign(TEXTCHAR* dst,TEXTCHAR* szAtr,int align,int alignDefault);
TEXTCHAR* TXAPI_(738) atrAddLine(TEXTCHAR* dst,TEXTCHAR* szAtr,int line,int lineDefault);
BOOL TXAPI txfAtrAddString(TX* text,TEXTCHAR* szAtr,TEXTCHAR* szString);
int TXAPI_(739) txfAtrGetInt(TEXTCHAR* pName,TEXTCHAR* szAtr,int defaultInt);
BOOL TXAPI_(740) txfAtrGetBool(TEXTCHAR* pName,TEXTCHAR* szAtr);
TEXTCHAR* TXAPI_(741) txfAtrGetString(TEXTCHAR* pName,TEXTCHAR* szAtr,TEXTCHAR* szDefault);
mchar* txfAtrGetStringEx(TEXTCHAR* pName,TEXTCHAR* szAtr,TEXTCHAR* szDefault,mchar* szBuff,int cchBuff);
int TXAPI_(742) txfAtrGetAlign(TEXTCHAR* pName,TEXTCHAR* szAtr,int alignDefault);
int TXAPI_(743) txfAtrGetLine(TEXTCHAR* pName,TEXTCHAR* szAtr,int lineDefault);
void TXAPI_(744) txfAtrGetFont(TEXTCHAR* pName,FONTSET* fontset,TX* text);
void TXAPI_(745) txfAtrSetFont(TEXTCHAR szAtr[256],FONTSET* fontset);
IBUFF TXAPI_(746) TXHIGH txfTagSearchPrev(TX* text,IFILE adr0,TAGANA* anaFind);
void TXAPI_(747) txfFlushXAlign(TX* text);
#define txfTagIsUser(p) (p[0] == 'u' && p[1] == '_')
#define txfTagNameIsEx(pBuff,pTagname,lchTagname) (!textstrncmp(pBuff,pTagname,lchTagname) && !IschTagname(pBuff[lchTagname]))
// TAGID
#define TAG_INDENT 1
#define TAG_H 2
#define TAG_ALIGN 3
#define TAG_B 4
#define TAG_I 5
#define TAG_U 6
#define TAG_CLM 7
int TXAPI_(748) txfTagidInsert(TX* text,int id,int arg1,int arg2);
extern TEXTCHAR* _tszTag[];
#define txfTagidToString(id) (_tszTag[id])
void TXAPI_(749) txfBeamAnalyze(TX* text,TEXTCHAR* pTag,BEAMATR* atr);
UINT TXAPI_(909) txfTagRemove(mchar* pMem,UINT size0);
#if !__TXC__
int txfTagInsertTag(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind);
int txfTagInsertWithAtr(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind,TEXTCHAR* szAtr);
void txfFootnoteInsert(TX* text,int number,TX* text2);
BOOL txfProcDateGetString(TX* text,mchar* pName,mchar szBuff[CCHWORD]);
BOOL txfProcMequoteGetString(TX* text,mchar* pName,mchar szBuff[CCHWORD]);
int txBeamtabGetIndex(TX* text,IBUFF paratop,TEXTCHAR* pSrc);
int txBeamtabGetLx(TX* text,NPARA npara,int iTab,int lxNow);
DWORD txfIbuffIsLink(TX* text,IBUFF ibuff);
BOOL txfAnchorJump(TX* text,DWORD anchor);
BOOL txfCellGetExist(TX* text);
BOOL TXHIGH txfCellJumpClm(TX* text,int clm);
BOOL txfCellGetExistRear(TX* text);
void txInsertCell(TX* text);
void txfRowSetLineBottom(TX* text,int lineBottom);
void txfToHtml(TX* text);
void txfFromHtml(TX* text);
void txBeamtabFlushAll(TX* text);
void cellatrInit(CELLATR* atr);
void cellatrToString(CELLATR* atr,TEXTCHAR szAtr[80]);
void txfCellJumpTableTop(TX* text);
BOOL txfBeamGetExist(TX* text);
int txfFootnoteFlushPara(TX* text,int number);
BOOL txfRowAdd(TX* text);
int txfCellGetRightX(TX* text);
int txfCellGetClm(TX* text);
BOOL txfCellIsCur(TX* text);
void txFlushMenuCheckAll(TX* text);
void txfInsertSf(TX* text,mchar* sf);
void txfCellFlushAll(TX* text);
void txfCharPropertyPrint(TX* text);
void txSetTml(TX* text);
BOOL txSetTmlModal(TX* text);
typedef struct {
IFILE adr;
IFILE texttop;
int ly;
} TEXTTOPEXIT;
void txSetTexttopCur(TX* text);
void txResetTexttopEnter(TX* text,TEXTTOPEXIT* context);
void txResetTexttopExit(TX* text,TEXTTOPEXIT* context);
void txResetTexttop(TX* text);
void TXHIGH txFlushTexttopPrim(TX* text);
void txFlushTexttop(TX* text);
void txfFlushXAlign(TX* text);
BOOL txfAnchorContextHelp(DWORD anchor,RECT* r);
#endif // !__TXC__
//##HTML
#if !__TXC__
BOOL txuiHtmlInsertTable(TX* text);
void txHtmlCharOp(TX* text,int idm);
BOOL txHtmlBrowser(TX* text);
void txHelpOpenExtend(TX* text,int iHelp);
BOOL strhtmlTagIsA(mchar* p);
int strhtmlGetTagLch(mchar* sz);
UINT strhtmlIsCharRefer(mchar* p);
BOOL strhtmlTagIsHR(mchar* p);
HBITMAP strhtmlTagGetReduceHbitmap(TX* text,mchar* p,VALIGN* pValign);
mchar* strhtmlTagIsIMG(mchar* p);
#endif // !__TXC__
//##文字コード
#if !__TXC__
int kcDetectEx(TX* text,BOOL fInternal);
DIRECTORYATR* txFlushDirectoryAtr(TX* text);
BOOL kcFromTB(TX* text,int kc);
BOOL kcToTB(TX* text,int kc);
void kcToTBEx(TX* text,int kc);
int kcDetect(TX* text);
#endif // !__TXC__
//##見出し/アウトライン
//WZ4.00Bj 990823 TX-C:outline周りの実装を全面変更。TX-API outlineRegisterClass,outlineFlushTree,outlineFlushMemo,outlineFlushTargetNpara,outlineSaveEdited,dialogTree廃止。
#define WM_TV_NOTIFY (WM_USER+950) // NotifyCode arg //WZ4.00Bj 990823 new
#define TVN_SETFOCUS 10
#define TVN_RBUTTONUP 11
typedef struct {
int offset; // 段落先頭から特別見出内容までのオフセット
int lch; // 見出内容の長さ(見出し内容に\x00を含む場合、それも含めた長さなので注意)
WORD fHtmlNoTagend:1; // HTMLで</Hn>が無かった?
} HEADLINE_INFO; //WZ4.00Bj 990824 new
BOOL TXAPI_(597) txHeadlineChange(TX* text,int iHeadline);
int TXAPI_(600) txHeadlineMatch(TX* text);
BOOL TXAPI_(598) txHeadlineGetContent(TX* text,TXSTR sz);
BOOL TXAPI_(837) txHeadlineSearchNext(TX* text);
BOOL TXAPI_(836) txHeadlineSearchPrev(TX* text);
int TXAPI_(669) txIbuffGetHeadline(TX* text,IBUFF ibuff,HEADLINE_INFO* res); //WZ4.00Bj 990824 newarg:res
#if !__TXC__
int headline_uistyle(HEADLINE_SET* context);
void txHeadlineFree(TX* text);
BOOL txHeadlineInit(TX* text);
BOOL txIbuffHeadlineGetContentPrim(TX* text,IBUFF ibuff,HEADLINE_INFO* res,mchar* szbuff,int cchbuff); //WZ4.00Bj 990824 arg変更
BOOL txHeadlineGetContentEx(TX* text,mchar* szbuff,int cchbuff);
BOOL txHeadlineGet(TX* text,int iHeadline,mchar sz[CCHHEADLINE]);
int txHeadlineGetLen(TX* text,int iHeadline);
void txHeadlineSetupMiseiri(TX* text);
BOOL txHeadlineJumpSameNestTop(TX* text,int nNest);
BOOL txHeadlineJumpSameNestEnd(TX* text,int nNest);
BOOL txHeadlineJumpSameNestTail(TX* text,int nNest);
BOOL txuiHeadlineChange(TX* text);
BOOL txuiHeadlineMap(TX* text);
BOOL txHeadlineSearchPrevEx(TX* text,int iHeadline);
BOOL txHeadlineSearchNextEx(TX* text,int iHeadline);
BOOL txHeadlineSearch(TX* text,mchar* szHeadline,int iHeadline);
BOOL txIbuffIsFunctionDefine(TX* text,IBUFF ibuff,HEADLINE_INFO* res); //WZ4.00Bj 990824 newarg:res
//アウトライン
void txolOpenEx(TX* text,mchar* szCaption);
void txolOpen(TX* text);
void txolClose(TX* text);
void txolFlush(TX* text);
void txolFlushNpara(TX* text);
BOOL txolSyskeydown(TX* text,int wParam);
void txolAdjustNparaChange(TX* text,long nparaD);
int txolGetCxOutline(TX* text);
int txolGetOriginalCxHwndbase(TX* text);
void txolOnProcFrameText(TX* text);
void txolSetFontText(TX* text);
#endif // !__TXC__
//##印刷/FONTSET
void TXAPI_(750) txLpDispOutsideText(TX* text);
BOOL TXAPI_(751) txLpInit(TX* text);
void TXAPI_(752) txLpTerm(TX* text);
BOOL TXAPI_(753) txuiLpStyle(TX* text);
BOOL TXAPI_(754) txuiLprint(TX* text);
BOOL TXAPI_(756) txLpSwitchPreview(TX* text);
BOOL TXAPI_(757) txLprint(TX* text);
BOOL TXAPI_(759) txLpFlushBaseY(TX* text);
void TXAPI_(760) txLpFlushPage(TX* text);
#if !__TXC__
#if WZFUNC_PRINT
int xLPtoDP(HDC hdc,int x);
int yLPtoDP(HDC hdc,int y);
int xLPadd1(HDC hdc,int x);
int yLPadd1(HDC hdc,int y);
int yLPsub1(HDC hdc,int y);
int xLP(HDC hdc,int x); //WZ3.90H 980917
int yLP(HDC hdc,int y); //WZ3.90H 980917
int lpcxGetFrameLeft(TX* text,int iHeadline);
int lpcxGetFrameRight(TX* text,int iHeadline);
int lpcxGetFrameLeftRight(TX* text,int iHeadline);
void txLpToolbarFlush(TX* text);
BOOL txuiLpStyleDetail(TX* text);
void txLpToolbarNotify(TX* text,int cmd);
int lpdot(TX* text);
#else
#define xLPtoDP(hdc,x) (x)
#define yLPtoDP(hdc,y) (y)
#define xLPadd1(hdc,x) (x)
#define yLPadd1(hdc,y) (y)
#define yLPsub1(hdc,y) (y)
#define xLP(hdc,x) (x)
#define yLP(hdc,y) (y)
#define lpcxGetFrameLeft(text,iHeadline) (0)
#define lpcxGetFrameRight(text,iHeadline) (0)
#define lpcxGetFrameLeftRight(text,iHeadline) (0)
#define txLpToolbarFlush(text)
#define txuiLpStyleDetail(text) (FALSE)
#define txLpToolbarNotify(text,cmd)
#define lpdot(text) (1)
#endif
//
BOOL txuiLprintExec(TX* text);
void txLprintHeader(TX* text);
#if WZFUNC_PRINT
int yToLy(TX* text,int y);
int lyToY(TX* text,int ly);
int lyGetCy(TX* text,int ly);
#else
#define yToLy(text,y) (((y) - text->nSpaceTop) / text->cyLine)
#define lyToY(text,ly) (text->nSpaceTop + (ly) * text->cyLine)
#define lyGetCy(text,ly) (text->cyLine)
#endif
//
int lpxToMmtext(TX* text,int lpx);
int mmtextToLpx(TX* text,int mmtext);
void txLpSetRateAuto(TX* text,int mode);
BOOL txLpSetRate(TX* text,int pvRate);
int txLpGetCyPaper(TX* text);
void txLpWriteMsghdr(TX* text,LPRINT* lp);
BOOL txLpReadMsghdr(TX* text,LPRINT* lp);
int txLpGetCxPaper(TX* text);
BOOL txLpAddRate(TX* text,int d);
BOOL txLpConfigtextRead(TX* text);
mchar* configGetName(CONFIG* config,int index);
void txLpConfigtextWrite(TX* text);
void lpSetDefaultConfig(LPRINT* lp);
BOOL txuiLpStyleSelect(TX* text);
//FONTSET
void fontsetSetText(TX* text,FONTSET* fontset);
void txFontsetGet(TX* text,FONTSET* fontset);
void fontsetFlush(TX* text,FONTSET* fontset);
void txFontsetSetBase(TX* text);
typedef struct {
BOOL fGetLineSize; //(in) LSOP_GETLINESIZE?
BOOL fLineOver; //(out) fGetLineSize時に折り返し幅を超えるのでこの文字の直前までをcurysizeとする?
int src; //(in) fGetLineSize時にcurysize>0のチェックに使用
int x; //(i/o) x座標
int cxWidth; //(in) fGetLineSize時に折り返し幅のチェックに使用
int cxRate; //(i/o) 横幅の拡大縮小パーセント for <CXRATE>
} TXFPROC_LINESIZEOP_ARG;
void txfProcTag_LINESIZEOP(TX* text,TEXTCHAR* pTag,TEXTCHAR* pName,TXFPROC_LINESIZEOP_ARG* arg);
void headlinestyleSetDefaultFont(HEADLINESTYLE* style,int iHeadline,int lfHeight);
int pointsToLpx(LPRINT* lp,int points);
#endif // !__TXC__
//##MAIL
#define MAILEDIT_USEEDIT UNIX // To,Cc,Subjectに常にEDITコントロールを使用?。UNIXだと調子が悪いのでこれを使う。
typedef struct tagMAILEDIT {
HWND hwndMailer; // メーラのhwnd
// 0: WZ MAIL EDITORではない
WORD idMail; // このメールのID
BYTE modeMail; // モード
#define MODEMAIL_NEW 1 // 新規
#define MODEMAIL_REPLY 2 // 返信
#define MODEMAIL_EDIT 3 // 編集
#define MODEMAIL_VIEW 4 // ビュー
WZMAILEDITORFLAGS flags;
//
HWND hwndMailheader; // メールヘッダウィンドウ
HWND hwndReferTo; // "To:..."
HWND hwndReferCc; // "Cc:..."
HWND hwndMenu; // メニューボタン
HWND hwndSend; //WZ3.90I 981012 送信ボタン
HWND hwndMime; // 添付ファイル
struct tagLIST* listMime; // 添付ファイル
mchar szBoundary[70]; // boundary
mchar szReplytoFrom[70];//WCE1.01 980505 コメントや返信の場合のコメント先のメッセージの差出人の名前
mchar szSubject[100]; // txDoCaption用に現在のSubject内容を入れておくバッファ
// fTML時は編集時のバッファも兼ねる
BOOL fMailReserve; // 現在の「保留」状態
TX* text; // 本文のテキスト
int x; // hwndTo etc x
int y; // for at init
HFONT hfontControl; // コントロールのフォントハンドル
int cxCharControl; // hfontControlのcxChar
int cyCharControl; // hfontControlのcyChar
#if MAILEDIT_USEEDIT
HWND hwndTo;
HWND hwndCc;
HWND hwndSubject;
#endif
RECT rTo; // "To"ウィンドウの位置
RECT rCc; // "Cc"ウィンドウの位置
RECT rSubject; // "件名"ウィンドウの位置
BYTE charset0; //WZ3.90M 981129 オリジナルのcharset
BYTE charset; //WZ3.90M 981129 旧fEnglish
FBOOL fDispHeader; //WZ3.90I 981005 ヘッダの表示?
// Popup window
HWND hwndPopup; // popup "EDIT" window handle
int idPopup; // IDD_SUBJECT;
// for txDoCaption
BOOL fSaved; // 保存したかどうか?
wchar wszCaption[80]; // for txGetTitleFilenameW buffer
} MAILEDIT;
#if !__TXC__
void txConvertMailTemplateToPlain(TX* text,TX* textDest,TX* textQuote);
HWND hwndMailerGetStatusbar(HWND hwnd);
void mailerOpenMenuMouseRMessage(TX* text);
mchar* memJisToKc(mchar* sz,int kc); //WZ4.00Bg 990720
BOOL memJisToSjis(mchar* sz);
BOOL _lwriteEncodeBase64(HANDLE hfDst,HANDLE hfSrc,IFILE size);
void txMailheaderClose(TX* text);
BOOL txMaileditorAttachW(TX* text,wchar* wszfilename,BOOL fNote);
void txMaileditSetDateNow(TX* text);
LRESULT txMaileditNotify(TX* text,UINT message,LPARAM lParam);
int maileditpopupOpenSubject(MAILEDIT* mailedit);
void maileditpopupOpenLastfocus(MAILEDIT* mailedit);
void maileditpopupClose(MAILEDIT* mailedit);
BOOL maileditOnSyskeydown(TX* text,WPARAM wParam);
BOOL maileditOnTab(TX* text);
BOOL txuiCheckMailedit(TX* text,BOOL fUi);
void txMailheaderRead(TX* text);
void mailheaderSetWindowPos(TX* text,RECT* r);
//MIME
typedef struct {
int lchTopReturn; // 0以外ならlchTopReturn文字ごとに改行を入れる(先頭行のみ)
// 0ならlchReturnを使う
int lchTopIndent; // 0以外なら先頭に空白を入れる(先頭行のみ)
// 0なら入れない
int lchReturn; // 0以外ならlchReturn文字ごとに改行を入れる
int lchIndent; // 0以外なら改行を入れた後に空白を入れる
BOOL fDataEndReturn; // データの末尾に改行を2つ入れる
} BASE64ENCODEARG;
BOOL txBase64Encode(TX* text,wchar* wszfilename);
BOOL txBase64Decode(TX* text,wchar* wszfilename);
mchar* memBase64Decode(mchar* buff,int lch,int* plchResult);
mchar* memBase64Encode(mchar* buff,int lch,int* plchResult,BASE64ENCODEARG* arg);
#endif // !__TXC__
//##PARAATR
#if !__TXC__
PARAATR* txParaatrGet(TX* text,NPARA npara);
void txParaatrTerm(TX* text);
IBUFF txNparaGetParaTop(TX* text,IBUFF ibuff,NPARA npara);
BOOL txParaatrClearNlineAll(TX* text);
BOOL txParaatrClearEditAll(TX* text);
BOOL txParaatrGetEdit(TX* text,NPARA npara);
//
IBUFF txGplGetParaoff(TX* text,NPARA npara);
void txGplDebug(TX* text);
//
BOOL txPsbCounting(TX* text);
void txPsbCalcOnIdle(TX* text);
//
int txCparaGet(TX* text,IBUFF curpara,NPARA npara);
void txParaatrClearCparaAll(TX* text);
//
WORD* txParaatrbeamGet(TX* text,NPARA npara,int iTab);
UINT txBeamtabGetOffset(TX* text,IBUFF paratop,int iTab);
BOOL txBeamtabSetLx(TX* text,NPARA npara,int iTab,int lx);
BOOL txBeamtabGetExist(TX* text,IBUFF paratop);
int txBeamtabGetCount(TX* text,IBUFF paratop);
BOOL txBeamtabFlushScreen(TX* text);
void txParaatrbeamClearAll(TX* text);
#endif // !__TXC__
//##その他
//罫線
BOOL TXAPI_(645) txKeisenIsNeedOp(TX* text,int op);
mchar* TXAPI_(646) txKeisenGetLeft(TX* text);
BOOL TXAPI_(647) txuiKeisenInsertTable(TX* text);
BOOL TXAPI_(648) txKeisenProperty(TX* text);
BOOL TXAPI_(649) txKeisenOp(TX* text,int op,mchar* szstr);
#if !__TXC__
//txvar
BOOL txVarSetString(TX* text,mchar* szName,mchar* szContent);
mchar* txVarReadString(TX* text,mchar* szName,mchar* szDefault);
//hook
void txAddHookWndproctext(TX* text,WNDTEXTHOOKPROC lpHook);
void txAddHookWndprocbase(TX* text,WNDTEXTHOOKPROC lpHook);
void txAddHookWndproc(TX* text,WNDTEXTHOOKPROC lpHook,BOOL fTxpcode,BOOL fHwndbase);
//speak
BOOL speak(LPCSTR lpszText,UINT fuType);
void speakNoAttachFile(void);
void txSpeakText(TX* text,UINT fuType,BOOL fTxf);
//オープン中のfFrameテキスト管理
BOOL shareInit(void);
void shareTerm(void);
void shareProcEndSession(void);
BOOL textAdd(HWND hwnd);
BOOL textAddEx(HWND hwnd,WZPROCESS* arg);
BOOL textDelete(HWND hwnd);
BOOL frametextAdd(TX* text,wchar* wszCmdLine);
BOOL frametextSetTextFree(TX* text);
int frametextGetTextCount(void);
HWND isopenW(wchar *path);
//オープン時の処理
void __on_txFrameNewEmacs(TX* text);
void __on_txFrameNewEmacsPrim(TX* text);
void __on_txFrameNewHtml(TX* text);
void __on_txFrameNewSpeak(TX* text);
void __on_txNewSpeakFilelist(TX* text);
void __on_txNewSpeakGrep(TX* text);
void __on_txFrameNewSpeak(TX* text);
//バイナリ編集
BOOL txIsCurDigitH(TX* text);
void txSetCurDigitL(TX* text);
BOOL txIsCurDigitL(TX* text);
void txSetCurDigitH(TX* text);
BOOL txSwitchBinedit(TX* text);
//ネットワーク版WZ
void shStartNetwork(void);
//その他
LRESULT txSendWmNotify(TX* text,int txn);
void imeSetPosPrim(TX* text);
#define txImeGetOpen(text) wndImeGetOpen(text->hwndtext) //WZ3.90L 981121
#define txImeSetOpen(text,fOpen) wndImeSetOpen(text->hwndtext,fOpen) //WZ3.90L 981121
BOOL txuiMemo(TX* text);
#endif // !__TXC__
//{###WZ/PWZアプリケーション特有
//##WZ/PWZ 起動/終了
BOOL TXAPI_(537) wzexecW(wchar* lpszCmdline);
BOOL TXAPI_(809) wzexec(mchar* lpszCmdline);
//
HWND TXAPI_(513) hwndbaseSet(HWND hwndbase);
void hwndbaseDelete(HWND hwnd);
HWND TXAPI_(514) hwndbaseGet(void);
HWND TXAPI_(515) hwndbaseGetTopPopupWindow(void);
TX* TXAPI_(516) hwndbaseIsWzeditor(void);
#define pwzapFocused(hwnd) hwndbaseSet(hwnd)
BOOL TXAPI_(517) pwzapAdd(HWND hwndbase);
BOOL TXAPI_(518) pwzapDelete(HWND hwndbase);
int pwzapSearch(HWND hwndbase); //WZ4.00Bm 990930 new
#define wzapAdd(hwndbase) pwzapAdd(hwndbase) //WZ3.90L 981123
#define wzapDelete(hwndbase) pwzapDelete(hwndbase) //WZ3.90L 981123
#define wzapFocused(hwndbase) pwzapFocused(hwndbase) //WZ3.90L 981123
//
#if !__TXC__
BOOL forkPwzTermSingle(wchar* wszcmdline);
BOOL forkPwzIcon(void);
BOOL forkPwzFiler(void);
BOOL forkPwzMail(void);
BOOL forkPwzGrep(void);
BOOL forkPwzMemo(void);
BOOL forkPwzFilerSingle(wchar* wszcmdline);
BOOL forkPwzMailSingle(wchar* wszcmdline);
BOOL forkPwzMailSingleI(wchar* wszcmdline);
BOOL forkPwzGrepSingle(wchar* wszcmdline);
BOOL pwzIcon(void);
HWND pwzFiler(void);
HWND pwzGrep(void);
BOOL pwzMemo(wchar* wszcmdline);
#if 0 // XZ0.2 990629 _mailer.cのstatic pwzMailと定義が異なる
HWND pwzMail(void);
#endif
mchar* pwzGetVersion(void);
mchar* pwzGetVersionPrim(void);
mchar* pwzGetName(void);
mchar* pwzGetNameStrcat(mchar* szAdd);
#endif // !__TXC__
//##permanent変数記憶
void TXAPI_(240) _permanentGetInt(mchar* szAppName,mchar* szName,LPVOID pVar,UINT size);
void TXAPI_(241) _permanentSetInt(mchar* szAppName,mchar* szName,LPVOID pVar,UINT size);
void TXAPI_(242) _permanentGetTxstr(mchar* szAppName,mchar* szName,TXSTR string);
void TXAPI_(243) _permanentSetTxstr(mchar* szAppName,mchar* szName,TXSTR string);
void TXAPI_(244) _permanentFlush(void);
//##スタイルシート
//WZ3.90K 981113 new
typedef struct {
mchar* szfilenameCfg; // スタイルを保存するCFGファイル名
void (*txMsghdrGetset)(TX* text,LPVOID appContext,BOOL fSet); // txMsghdrGetsetするクライアント定義関数。
LPVOID appContext; // クライアント定義コンテキスト
} STYLESHEETARG;
int stylesheet_uiMente(STYLESHEETARG* arg,mchar szStyle[CCHWORD]);
BOOL stylesheet_Load(STYLESHEETARG* arg,mchar* szStyle);
BOOL stylesheet_Save(STYLESHEETARG* arg,mchar* szStyle);
//##アプリケーションレイヤの設定
//WZ3.90L 981116 new
// 設定の読み書きはあまり早くはないが、基本レイヤの設定とは別にしたいので。
typedef struct {
mchar dicpath[CCHPATHNAME]; // 用語統一辞書パス
mchar if_path[CCHPATHNAME]; // ファイルの挿入初期パス
mchar prj_path[CCHPATHNAME]; // プロジェクトのパス
// クリッカブルURL
mchar url_service[CCHNAME]; // サービス
mchar url_topic[CCHNAME]; // トピック
} CONFIGAPP;
void configappLoad(CONFIGAPP* config);
void configappSave(CONFIGAPP* config);
//##パス文字列
wchar* TXAPI_(495) wpathFullConfig(wchar* wszfilenameDst,wchar* wszfilename);
mchar* TXAPI_(806) pathFullConfig(mchar* szfilenameDst,mchar* szfilename);
mchar* TXAPI_(890) pathFullExedir(mchar* szfilenameDst,mchar* szfilename);
wchar* TXAPI_(891) wpathFullExedir(wchar* wszfilenameDst,wchar* wszfilename);
wchar* wpathFullConfigNoCreate(wchar* wszfilenameDst,wchar* wszfilename);
BOOL wpathFullConfigNetwork(wchar wszdst[CCHPATHNAME],wchar* wszfilename);
//##ダイアログ
typedef struct tagDTRECT { // ダイアログ座標
SHORT x; // cxChar/4 単位
SHORT y; // cyChar/8 単位
SHORT cx;
SHORT cy;
} DTRECT;
#if WINDOWSCE
#define NFONT_MAX 100
#else
#define NFONT_MAX 1000 //WZ3.90P 981206 100だと足りない(300個ある場合もある)ので1000に拡大
#endif
typedef struct {
WORD nFont; // 数
wchar tFontName[NFONT_MAX][LF_FACESIZE];
BYTE lfPitch; // PitchAndFamily
BYTE lfCharSet; // lfCharSet
WORD fPrinterFont:1; // プリンタフォントの取得中
WORD fPrinterFontOnly:1;
WORD freserved:14;
HDC hdcPrinter;
} FONTNAMES;
typedef struct {
BYTE lfPitch;
BYTE lfCharSet;
BYTE sizeLfHeight; // lfHeightのサイズ(0,1:BYTE,2;WORD,4:DWORD)
BYTE lcxFaceName; // 0:default
BYTE lcxFaceSize; // 0:default
HDC hdcPrinter; // プリンタフォントも列挙するばあいは、プリンタのhdc
WORD fPrinterFontOnly:1; //1.99F プリンタフォントのみ
WORD fEnableDefaultFaceName:1; //2.95 970128 "標準"フォント名を選択可能にする
// 選択値は""になる
WORD fEnableDefaultHeight:1; //2.95 970128 "標準"サイズを選択可能にする
// 選択値は0になる
WORD fEnableUserfont:1; //WZ4.00Bl 990919 ユーザ定義フォントセットを選択可能にする。
WORD freserved:12;
FONTNAMES* fontnames; //1.99H 同じフォント名セットを複数使う場合に対応
BYTE reserved[17];
} SELFONTARG;
#define CCHFONTSIZE 20
typedef struct {
WORD id; // 対応付けられているフォント名コンボボックスのid
FONTNAMES* fontnames; // フォント名
// フォントサイズ
WORD nFontSize; // 数
BYTE tFontSize[NFONT_MAX]; // 内容
WORD nFontType; // EnumFaceSizeで返される
// 初期値の受け取り/結果の受け渡し用
mchar* lfFaceName;
BYTE* lfHeight;
BYTE sizeof_lfHeight; // lfHeight=BYTE/WORD/DWORD?
//WZ3.90G 980826 class -> sizeof_lfHeight
WORD fEnableDefaultFaceName:1; //2.95 970128 "標準"フォント名を選択可能にする
// 選択値は""になる
WORD fEnableDefaultHeight:1; //2.95 970128 "標準"サイズを選択可能にする
// 選択値は0になる
WORD freserved:14;
} CONTEXTSELFONT;
typedef struct tagDIALOG {
#ifdef __TXC__
LPVOID dialog;
#else
DLGTEMPLATE* dialog; //
#endif
DWORD sizeDialog; // dialogのサイズ
LPBYTE pBuff; // dialogに現在書き込み中のポインタ
LPBYTE itemTop; // dialogのアイテムの先頭位置
LPBYTE itemNow; // 現在アクセス中のアイテム
//
int xMax;
int xMaxLf;
int yMax;
int yMaxLf;
int xBase; // 改行時、復改位置
int yBase; // 改行時、復改位置
DTRECT r; // 現在位置
int cxInt; // 項目間
int cyInt; // 行間
CBOOL fNoSetHist; // dialogReadでヒストリをいじらない
FBOOL fNoAddDefaultButton;//WCE1.01 980201 標準の"OK","Cancel"を付けない?
//
struct tagITEMINFO* info;// ITEMINFO配列
int sizeinfo; // ITEMINFO配列の確保した要素数
int ninfo; // 現在の要素数
//
int id; // 現在の自動設定ID
int idUpdown; // 次に追加するアップダウンコントロールのID
// user指定
int setid; // 0:自動ID else IDを指定値にセット
CBOOL fH; // 横に並べる?
FBOOL fCmd; // OK,Cancelボタン不要
#ifdef __TXC__
LPVOID dlgproc; // ダイアログプロシジャー
#else
DLGPROC dlgproc; // ダイアログプロシジャー
#endif
FBOOL fDlgprocTxpcode; // dlgprocはTX-PCODE中にある?
WORD stateHook; // dlgprocフックステート
LPVOID custdata; // user data
LPVOID custdata2; //PWZ2BETA0.3 980519 user data2
LPVOID custdata3; //PWZ2BETA0.3 980519 user data3
HWND hwndParent; // 親ウィンドウ
FBOOL fHwndParentSeted; // hwndParentが設定された(NULLも設定できるよう)
FBOOL fModelessAutoClose;// WM_CLOSEで閉じる?
WORD fWizard:1; //WZ3.90G 980830 ウィザード?
WORD fPspcGuideLf:1; //WZ4.00Be 990509 ガイド文字の後で改行する?
WORD fPspcGuideLfOnce:1;//WZ4.00Be 990511
WORD fPspcCaptionNoLf:1;//WZ4.00Be 990509 dialogCaption etcで自動折り返し追加しない?
WORD fPspcNoLimitSize:1;//WZ4.00Be 990512 PSPCでダイアログサイズを制限しない?
int cx; // サイズ
int cy; // サイズ
int notifyIdd; // dialogSetNotifyAsOK
int notify; // dialogSetNotifyAsOK
int idFocus; //
int idDialoghelp; // ダイアログヘルプのアンカー番号 //WZ4.00Ab 990124 new
// user直接指定
WORD fAutoAccessKey:1; //WZ3.90H 980910 アクセスキーを自動で付ける?
// chAutoAccessKeyを初期化すること。
WORD fUseLastFontnames:1;//WZ4.00Bl 990920 FONTNAMESをアロケートせずに、最後にアロケートしたものを使用?
BYTE chAutoAccessKey; //WZ3.90H 980910 現在の自動決定アクセスキー
TX* text; //WZ3.90I 981026 dialogControlReferで"-html"を指定する場合に必要
// フォント選択
#define SELFONT_N 20
CONTEXTSELFONT* tFontselContext; // コンテキスト
int nFontselContext; // 現在のコンテキスト数
#define FONTNAMES_N 2 // FONTNAMESコンテキスト最大数
FONTNAMES *tFontnames; // FONTNAMESコンテキスト
int nFontnames; // 現在のFONTNAMESコンテキスト数
// for property sheet
struct tagDIALOG* child;
struct tagDIALOG* parent;
struct tagDIALOG* next;
int iStartPage;
FBOOL fApplyed; //WCE0.95 970923 IDD_APPLYが押された
#if !WINDOWSCE
FBOOL fCentered; //WZ3.90I 981005 既に中央に位置をセット済み
#endif
// dialog open時 status
HWND hwndDlg; // ダイアログウィンドウハンドル
HWND hwndbase; //WZ3.90L 981122 ダイアログを開いたときのhwndbaseGet()の内容
FBOOL fActived; // ページがアクティブになった?
FBOOL fModeless; // モードレスダイアログ?
FBOOL fCaptionOkBtn; // タイトルバーに[OK]を付ける?
struct tagDIALOG* now; // 現在選択されているページ
struct tagDIALOG* nextModeless; // 次のモードレスダイアログ
// 以下、次にaddするコントロールの属性
BYTE controlTop;
FBOOL fHist; // ヒストリ付き?
FBOOL fHistRead; // readonly history
FBOOL fSbAlloced; // sb is alloced
FBOOL fDisenable; // 無効化
FBOOL fControlReverseBool;
FBOOL fRadioV;
DWORD fUpdown; // アップダウンコントロールを付ける?
// 0なら、付けない。
// MAKELONG(max,min)なら付ける。
BYTE idMap; //WCE1.01 980210 idMap
HSTRBLK sb;
int cyLastControl; // 最後に追加したコントロールのウィンドウの高さ
int idContextHelp; // コンテキストヘルプIDが指定された
SIGNED_BYTE dtyAdd; // y座標に付加する値
mchar szguide[CCHWORD]; // ガイド文字列
int wguide; // ガイドの幅
mchar* szRefer; // 参照ボタン
int idrefer; // 参照ボタンのID
LPVOID procConv; //WZ3.90L 981115 コンバータ
BYTE controlEnd;
// 以下、クリアしない次にaddするコントロールの属性
DWORD controlStyle;
} DIALOG,*HDIALOG;
#define DIALOGHOOKSTATE_HOOKONCE 0x01 // 一度だけ標準ダイアログをスキップする
#define DIALOGHOOKSTATE_HOOKALL 0x02 // 全フックする
#define DTCX 4 // 1文字の幅
#define DTCY 8 // 1文字の高さ
#define DTCXINT 4 // 標準の間隔
#if WINDOWSCE2
#define DTCYINT 1 // 標準の間隔
//WCE1.01 980312 2->1
// ダイアログのフォントが大きくなって
// ダイアログボックスが画面からはみ出るため。
#else
#define DTCYINT 2 // 標準の間隔
#endif
#define DTCYKEY 10 // (&K)などのアンダーバーも含む高さ
#define DTCYBOX 12 // TEXTBOXの高さ
#define DTCYCMDBUTTON 14 // コマンドボタンの高さ
#define DTCYBUTTON 12 // ボタンの高さ
#define DTCYBOX_KEY 2 // DTCYBOX - DTCYKEY
// dialogSetDlgprocのWM_INITDIALOGでの返り値の定義
// FALSEを返すのは、INITDIALOG_TRUEを返すのと同じ
#define INITDIALOG_TRUE 0 // WM_INITDIALOGの返り値にTRUEを返す
// (WindowsがデフォルトのSETFOCUSをする)
#define INITDIALOG_FALSE 1 // FALSEを返す
// (WindowsがデフォルトのSETFOCUSをしない)
#define INITDIALOG_SKIP_TRUE 2 // dialog.c内のWM_INITDIALOG処理をスキップ
#define INITDIALOG_SKIP_FALSE 3 // 同上
//
#define DCS_PUSHBUTTON 0x01 // "BUTTON", BS_PUSHBUTTON | WS_TABSTOP
#define DCS_DEFPUSHBUTTON 0x02 // "BUTTON", BS_DEFPUSHBUTTON | WS_TABSTOP
#define DCS_CHECKBOX 0x03 // "BUTTON", BS_CHECKBOX | WS_TABSTOP
#define DCS_RADIOBUTTON 0x04 // "BUTTON", BS_RADIOBUTTON | WS_TABSTOP
#define DCS_GROUPBOX 0x05 // "BUTTON", BS_GROUPBOX | WS_TABSTOP
#define DCS_LTEXT 0x06 // "STATIC", SS_LEFT | WS_GROUP
#define DCS_CTEXT 0x07 // "STATIC", SS_CENTER | WS_GROUP
#define DCS_RTEXT 0x08 // "STATIC", SS_RIGHT | WS_GROUP
#define DCS_ICON 0x09 // "STATIC", SS_ICON
#define DCS_EDITTEXT 0x0A // "EDIT", ES_LEFT | WS_BORDER | WS_TABSTOP
#define DCS_SCROLLBAR 0x0B // "SCROLLBAR", SBS_HORZ
#define DCS_LISTBOX 0x0C // "LISTBOX", LBS_NOTIFY | WS_BORDER | WS_VSCROLL
#define DCS_COMBOBOX 0x0D // "COMBOBOX", CBS_SIMPLE | WS_TABSTOP
//
#define IDD_APPLY 29699 //WCE0.95 970923 new
//
BOOL TXAPI_(42) __dialogAddItem(HDIALOG hd,mchar *szClass,mchar *szText,int id,DTRECT *dtRect,long style);
BOOL TXAPI_(43) _dialogAddItem(HDIALOG hd,int nDcs,mchar *szText,int id,DTRECT *dtRect,long style);
int TXAPI _dialogAddControlInfo(HDIALOG hd,int id);
BOOL TXAPI_(44) dialogAddItem(HDIALOG hd,BYTE nDcs,mchar *szText,int id,DTRECT *dtRect,long style);
int TXAPI_(45) dialogAddListbox(HDIALOG hd,mchar *szcaption,int width,int height);
void TXAPI_(46) dialogWriteItem(HDIALOG hd,int id);
HSTRBLK TXAPI_(47) dialogGetItemStrblk(HDIALOG hd,int id);
HWND TXAPI_(48) dialogGetItemUpdown(HDIALOG hd,int id);
void TXAPI_(49) dialogWrite(HDIALOG hd);
void TXAPI dialogWriteEx(HDIALOG hd,DWORD mode);
void TXAPI_(50) dialogReadItem(HDIALOG hd,int id);
void TXAPI dialogReadItemEx(HDIALOG hd,int id,DWORD mode);
void TXAPI_(51) dialogRead(HDIALOG hd);
void TXAPI_(52) dialogReadEx(HDIALOG hd,DWORD mode);
#define DIALOGREAD_NOSETHIST 0x0001 // ヒストリをいじらない
#ifndef __TXC__
void TXAPI dialogSetDlgproc(HDIALOG hd,DLGPROC proc);
#endif
void TXAPI_(53) dialogSetDlgprocTxpcode(HDIALOG hd,FARPROC proc);
LPVOID TXAPI_(54) dialogSetCustdata(HDIALOG hd,LPVOID custdata);
LPVOID TXAPI dialogSetCustdata2(HDIALOG hd,LPVOID custdata);
LPVOID TXAPI dialogSetCustdata3(HDIALOG hd,LPVOID custdata);
void TXAPI_(55) dialogSetNotifyAsOK(HDIALOG hd,int idd,int notify);
void TXAPI_(56) dialogSetStyle(HDIALOG hd,long style);
void TXAPI dialogSetDialoghelp(HDIALOG hd,int idAnchor);
void TXAPI_(58) dialogSetContexthelp(HDIALOG hd,DWORD fSet);
void TXAPI_(59) dialogSetFocus(HDIALOG hd,int id);
void TXAPI_(60) dialogSetNoButton(HDIALOG hd);
LPVOID TXAPI_(61) dialogGetCustdata(HDIALOG hd);
LPVOID TXAPI dialogGetCustdata2(HDIALOG hd);
LPVOID TXAPI dialogGetCustdata3(HDIALOG hd);
DWORD TXAPI_(62) dialogGetStyle(HDIALOG hd);
#ifdef __TXC__
LPVOID TXAPI_(63) dialogGetDlgtemplate(HDIALOG hd);
#else
DLGTEMPLATE* TXAPI_(63) dialogGetDlgtemplate(HDIALOG hd);
#endif
HWND TXAPI_(64) dialogGetWindow(HDIALOG hd);
void TXAPI_(65) dialogSetIntXY(HDIALOG hd,int dtcx,int dtcy);
void TXAPI_(66) dialogResetInt(HDIALOG hd);
void TXAPI_(67) dialogSetH(HDIALOG hd);
void TXAPI_(68) dialogSetV(HDIALOG hd);
BOOL TXAPI_(69) dialogControlGuide(HDIALOG hd,mchar *szguide,int wguide);
void TXAPI_(70) dialogControlStyle(HDIALOG hd,DWORD style);
void TXAPI_(71) dialogControlHist(HDIALOG hd,HHIST hhist);
void TXAPI_(72) dialogControlHistRead(HDIALOG hd,HHIST hhist);
void TXAPI_(73) dialogControlStrblk(HDIALOG hd,HSTRBLK sb);
void TXAPI_(74) dialogControlStrblkHist(HDIALOG hd,HSTRBLK sb);
void TXAPI_(75) dialogControlEnable(HDIALOG hd,BOOL fEnable);
void TXAPI_(76) dialogControlReverseBool(HDIALOG hd);
#if WINDOWSCE
#define dialogControlHelp(hd,id) //WZ4.00Ab 990117 PWZではdialogControlHelpは何もしない#defineに変更。プログラムサイズ削減のため。
#else
void TXAPI_(77) dialogControlHelp(HDIALOG hd,int id);
#endif
void TXAPI_(78) dialogControlID(HDIALOG hd,int id);
void TXAPI_(79) dialogControlUpdown(HDIALOG hd,int minSpin,int maxSpin);
void TXAPI dialogControlConvertproc(HDIALOG hd,LPVOID procConv);
void TXAPI_(80) dialogControlMap(HDIALOG hd,int idMap);
#define DIALOGCONTROLMAP_TWIPS_MCM 1 // TWIPS(1/1440 inch)データを1/10mm単位で表示
#define DIALOGCONTROLMAP_10 2 // データを/10して表示
int TXAPI_(81) dialogCaption(HDIALOG hd,mchar *szCaption);
int TXAPI_(82) dialogCaptionDynamic(HDIALOG hd,mchar *szCaption,int width);
int TXAPI_(83) dialogCaptionDynamicEx(HDIALOG hd,mchar *szCaption,int width,int height);
int TXAPI dialogCaptionGuide(HDIALOG hd,mchar *szCaption);
int TXAPI_(84) dialogColor(HDIALOG hd,mchar* szCaption,mchar* szTitle,COLORREF* rgb,int wCaption,LPVOID pPreview);
int TXAPI_(85) dialogPushbutton(HDIALOG hd,mchar *szCaption,int wCaption);
int TXAPI_(86) dialogPushbuttonBig(HDIALOG hd,mchar *szCaption,int wCaption);
int TXAPI_(87) dialogCmd(HDIALOG hd,mchar *szCaption,int wCaption);
int TXAPI_(88) dialogCmdDefault(HDIALOG hd,mchar *szCaption,int wCaption);
int TXAPI_(89) dialogCmdID(HDIALOG hd,mchar *szCaption,int wCaption,int id);
int TXAPI_(90) dialogCheck(HDIALOG hd,mchar *szCaption,BOOL *bool);
int TXAPI_(91) dialogCheckB(HDIALOG hd,mchar *szCaption,BBOOL *bool);
int TXAPI_(92) dialogOK(HDIALOG hd,int wCaption);
int TXAPI_(93) dialogCancel(HDIALOG hd,int wCaption);
void TXAPI_(94) dialogApply(HDIALOG hd,int dtx,int dty);
int TXAPI_(95) dialogClose(HDIALOG hd,int wCaption);
int TXAPI_(12) dialogString(HDIALOG hd,mchar *szCaption,int wCaption,mchar *szText,int cchText,int wBox);
int TXAPI_(113) dialogTxstr(HDIALOG hd,mchar *szCaption,int wCaption,TXSTR szText,int wBox);
int TXAPI_(13) dialogStringW(HDIALOG hd,mchar *szCaption,int wCaption,wchar *wszText,int cchText,int wBox);
int TXAPI_(14) dialogInteger(HDIALOG hd,mchar *szCaption,int wCaption,int *integer,int wBox);
int TXAPI_(15) dialogIntegerW(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_WORD* integer,int wBox);
int TXAPI_(16) dialogIntegerB(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_BYTE* integer,int wBox);
int TXAPI_(17) _cdecl dialogChoice(HDIALOG hd,mchar *szCaption,int wCaption,int *data,int wBox,mchar* szItem,...);
int TXAPI_(18) _cdecl dialogChoiceW(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_WORD* data,int wBox,mchar* szItem,...);
int TXAPI_(19) _cdecl dialogChoiceB(HDIALOG hd,mchar *szCaption,int wCaption,SIGNED_BYTE* data,int wBox,mchar* szItem,...);
int TXAPI_(20) _cdecl dialogChoiceString(HDIALOG hd,mchar *szCaption,int wCaption,mchar* szText,int cchText,int wBox,mchar* szItem,...);
int TXAPI _cdecl dialogChoiceStringWA(HDIALOG hd,mchar *szCaption,int wCaption,wchar* szText,int cchText,int wBox,mchar* szItem,...);
int TXAPI_(21) _cdecl dialogChoiceRadio(HDIALOG hd,int *data,mchar* szItem,...);
int TXAPI_(22) _cdecl dialogChoiceRadioW(HDIALOG hd,SIGNED_WORD* data,mchar* szItem,...);
int TXAPI_(23) _cdecl dialogChoiceRadioB(HDIALOG hd,SIGNED_BYTE* data,mchar* szItem,...);
int TXAPI_(25) dialogList(HDIALOG hd,mchar* szCaption,TX* text,int width,int height);
int TXAPI dialogChoiceList(HDIALOG hd,mchar* szCaption,int* data,int width,int height);
void TXAPI_(26) dialogIndent(HDIALOG hd,int dx);
void TXAPI_(27) dialogLFV(HDIALOG hd);
void TXAPI_(28) dialogCmdLFV(HDIALOG hd);
void TXAPI_(29) dialogLF(HDIALOG hd);
void TXAPI_(30) dialogSpace(HDIALOG hd);
void TXAPI_(31) dialogSpaceH(HDIALOG hd);
void TXAPI_(32) dialogSpaceV(HDIALOG hd);
void TXAPI_(33) dialogGetPos(HDIALOG hd,DTRECT *r);
int TXAPI_(34) dialogGetPosX(HDIALOG hd);
int TXAPI_(35) dialogGetPosY(HDIALOG hd);
void TXAPI_(36) dialogSetPos(HDIALOG hd,DTRECT *r);
void TXAPI_(37) dialogSetPosLX(HDIALOG hd,int lx);
void TXAPI_(38) dialogSetPosX(HDIALOG hd,int x);
void TXAPI_(39) dialogSetPosY(HDIALOG hd,int y);
void TXAPI dialogSetPosXY(HDIALOG hd,int x,int y);
#define dialogAddPosY(hd,y) (dialogSetPosY(hd,(dialogGetPosY(hd) + y)))
int TXAPI_(897) dialogHeadline(HDIALOG hd,mchar* szCaption,int wHeadline); //WZ4.00A 981229
HDIALOG TXAPI_(40) dialogFromHwnd(HWND hwnd);
void TXAPI_(41) dialogTerm(HDIALOG hd);
HDIALOG TXAPI_(10) dialog(mchar* szCaption);
void TXAPI_(672) dialogSetHookState(HDIALOG hd,int state);
int TXAPI_(11) dialogOpen(HDIALOG hd);
#define dialogLFSetV(hd) {dialogSetV(hd);dialogLF(hd);}
#if PSPC
#define dialogLFIndentPSPC(hd,n) {dialogLF(hd);dialogIndent(hd,n);}
#define dialogLfPSPC(hd) {dialogLF(hd);}
#define dialogSetGuideLfPSPC(hd) hd->fPspcGuideLf = TRUE;
#define dialogSetGuideLfOncePSPC(hd) hd->fPspcGuideLfOnce = TRUE;
#define dialogSetCaptionNoLfPSPC(hd,f) hd->fPspcCaptionNoLf = f;
#else
#define dialogLFIndentPSPC(hd,n) ;
#define dialogLfPSPC(hd) ;
#define dialogSetGuideLfPSPC(hd) ;
#define dialogSetGuideLfOncePSPC(hd) ;
#define dialogSetCaptionNoLfPSPC(hd,f) ;
#endif
void TXAPI_(577) dialogSetPosLF(HDIALOG hd);
void TXAPI_(578) dialogSetParent(HDIALOG hd,HWND hwndParent);
BOOL TXAPI_(579) dialogAddPage(HDIALOG hd,HDIALOG hdPage);
void TXAPI_(580) dialogSetStartPage(HDIALOG hd,int iStartPage);
void dialogAddAboutTimeLimit(HDIALOG hd);
void TXAPI dialogSetSize(HDIALOG hd,DTRECT *r);
void TXAPI dialogApplyEx(HDIALOG hd,int dtx,int dty,mchar* szCaption);
HWND TXAPI_(581) dialogGetBaseWindow(HDIALOG hd);
void TXAPI_(582) dialogControlRadioV(HDIALOG hd);
int TXAPI_(583) dialogEditWz(HDIALOG hd,mchar* szCaption,TX* text,int width,int height,DWORD ws);
HWND TXAPI_(584) dialogCreate(HDIALOG hd);
BOOL TXAPI_(585) dialogFree(HWND hwnd);
BOOL TXAPI_(586) dialogControlRefer(HDIALOG hd,mchar *szpath);
int TXAPI_(587) dialogSelectFont(HDIALOG hd,mchar* szCaption,int wCaption,mchar* lfFaceName,BYTE* lfHeight,SELFONTARG* arg);
// sub dialog proc
BOOL subdlgprocSblist(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam,HSTRBLK sb);
void comboboxex_Exec(HWND hwnd);
// dialog application
mchar* TXAPI_(588) dialogaSelHistEx(mchar* szCaption,HHIST hist,DWORD mode,TX* text);
mchar* TXAPI_(589) dialogaSelectSb(mchar* szCaption,HSTRBLK sb,DWORD mode,TX* text,mchar* szStdAdd);
#define SELHIST_FILEOPEN 0x0001
#define SELHIST_IMECONVERT 0x0002
#define SELHIST_READMODE 0x0004 // 編集不可
#define SELHIST_REVERSE 0x0008 // 内部用
#define SELHIST_REFERFOLDER 0x0010
#define SELHIST_PATH 0x0020
mchar* TXAPI_(590) dialogaSelHist(mchar* szCaption,HHIST hist);
mchar* TXAPI_(591) dialogaSelFolderlist(mchar szResult[CCHPATHNAME],mchar* szStdAdd);
int TXAPI_(592) TXAPIBASE dialogaText(TX* text,mchar* szcaption);
#if 1//WZ4.00Be 990405 CE2.11ではprintf,wprintfが既定義。
#ifdef __TXC__ // TX-Cの関数名は変えない様にする。CE1.01やCE2.0のTX-CでコンパイルしたTXMと互換性を保つため。
void TXAPI_(593) printf(LPCSTR szFormat,...);
void wprintf(wchar* szFormat,...);
#else
#if !UNIX
void ty_printf(LPCSTR szFormat,...);
void ty_wprintf(wchar* szFormat,...);
#define printf ty_printf
#define wprintf ty_wprintf
#endif
#endif
#else
void TXAPI_(593) printf(LPCSTR szFormat,...);
void wprintf(wchar* szFormat,...);
#endif
TX* printfGetText(void);
void TXAPI_(594) dialogaDebugEnd(void);
HWND TXAPI_(595) dialogaDebugStart(void);
int TXAPI_(893) dialogGetPage(HDIALOG hd);
// ダイアログ作成 for TX-C互換
int TXAPI_(869) dialogSelect(HDIALOG hd,mchar* szCaption,int* data,int wCaption,int wBox,HSTRBLK sb);
int TXAPI_(870) _varyarg dialogSelectID(HDIALOG hd,mchar* szCaption,int* data,int wCaption,int wBox,mchar* szItem,...);
int TXAPI_(871) _varyarg dialogSelectStr(HDIALOG hd,mchar* szCaption,TXSTR data,int wCaption,int wBox,mchar* szItem,...);
int TXAPI_(872) dialogButton(HDIALOG hd,mchar *szCaption,mchar* szMacro,int wCaption);
int TXAPI_(873) dialogButtonBig(HDIALOG hd,mchar *szCaption,mchar* szMacro,int wCaption);
// 簡単ダイアログ for TX-C互換
BOOL TXAPI_(862) inputint(mchar* szcaption,int* data);
BOOL TXAPI_(863) inputstr(mchar* szcaption,TXSTR dst);
int TXAPI_(864) _varyarg intselect(mchar* szcaption,mchar* szstr,...);
mchar* TXAPI_(877) _varyarg strselect(mchar* szcaption,mchar* szstr,...);
//
#ifndef __TXC__
BOOL IntoModal(BOOL fOutputErrorMessage);
void ExitModal(void);
void dialogaErrorOpenDialog(void);
BOOL dialogaAutoFilename(TX* text,mchar* szfilename,DWORD mode);
#define AFN_SILENT 0x0001
#define AFN_REFER 0x0002
#define AFN_DETAIL 0x0004
HDIALOG TXAPI dialogGetPageDialog(HDIALOG hd,int iPage);
#ifndef TXC_DLL
DWORD (WINAPI *txpcodeCallAddress)(LPBYTE pc,UINT nArg,LPVOID pArg);
#endif
#endif
void dialogAddConvertChar(HDIALOG hd,CCCONTEXT* ccc);
HDIALOG dialogNewAbout(mchar* szAppName,mchar* szVersion);
int dialogOpenAbout(HDIALOG hd);
void dialogAddAboutCopyright(HDIALOG hd);
//WZ4.00Bk 990902 dialogTreeニーズに応え復活。
LPVOID TXAPI_(24) dialogTree(HDIALOG hd,mchar* szCaption,TX* text,int width,int height);
void dialogAddSearchopt(HDIALOG hd,SEARCHOPT* opt,int mode);
//##information/question/attention
void _cdecl TXAPI_(539) winformation(wchar* szformat,...);
void _cdecl TXAPI_(540) wattention(wchar* szformat,...);
int _cdecl TXAPI_(541) wquestion(wchar* szformat,...);
int _cdecl TXAPI_(542) wquestionYesNo(wchar* szformat,...);
int _cdecl TXAPI_(543) wquestionNoYes(wchar* szformat,...);
int _cdecl wquestionNoYesCancel(wchar* szformat,...);
void _cdecl TXAPI_(544) wstatprintf(wchar* szformat,...);
void debugf(mchar* szformat,...);
wchar* TXAPI_(545) rcStringW(int ids);
mchar* TXAPI_(546) rcString(int ids);
#ifndef TXC_DLL
void _cdecl statprintf_V(mchar** szformat);
void _cdecl TXAPI_(7) statprintf(mchar* szformat,...);
#endif
void _cdecl TXAPI_(4) information(mchar* szformat,...);
int TXAPIBASE textinformation(TX* text,mchar* szcaption);
void _cdecl TXAPI_(5) attention(mchar* szformat,...);
int _cdecl TXAPI_(6) question(mchar* szformat,...);
void TXAPI_(900) txStatusbarPrintf(TX* text,mchar* szformat,...);
void statprintfClearFlush(TX* text);
void statprintfClear(TX* text);
int myMessageBoxW(LPCWSTR lpText,UINT uType);
//##FILER/ファイルリストコントロール
typedef struct {
int iFileName; // ファイル名先頭文字オフセット (旧FILER_IFILENAME)
int lchLine; // 行長:改行コード(0x0Aのみ)も含む (旧FILER_LCHLINE)
UINT fld; // ロードモード
mchar* szexts; // 拡張子色分け用
BOOL fLong; // ロングファイル名モード
} FILERATR;
//
#define FLD_NORMAL 0x0000 // "*.*"なら、ディレクトリとファイル
// そうでなければ、ファイルのみ
#define FLD_DIR 0x0001 // ディレクトリのみ
#define FLD_FILE 0x0002 // ファイルのみ
#define FLD_NOUNDO 0x1000 // *.~*は無視
#define FLD_HIDDEN 0x2000 // 隠しファイルも表示
#define FLD_LASTACCESS 0x4000 // 最後にアクセスした日付を表示
// 行アトリビュート
#define FATR_DIR 'D' // ディレクトリ
#define FATR_FILE 'F' // ファイル名
//
#define FILELIST_IDIRECTORY 2 //(TXLB_SIZEATR+0) ファイル/ディレクトリ文字オフセット
#define FILELIST_LCXMASK 3 //(TXLB_SIZEATR+1) 左端表示マスク
//
int TXAPI_(547) _filerLoadDiskW(TX* text,wchar* _path,FILERATR* fileratr);
typedef struct tagFILELIST {
TX* text; // ファイル一覧のデータを保持する
HWND hwnd; // ファイルリスト
//
FBOOL fPreview;
FBOOL fIniting;
FBOOL fSaveAs; // 名前を付けて保存?
FBOOL fSaveAsVz; // VZライクの名前を付けて保存?
// fSaveAsもTRUEにすること
FBOOL fDotDot; // 親フォルダに移れる場合は".."をリスト先頭に表示する
TXOFN_ARG arg; // txuiGetOpenFileNameW arg
FBOOL fFolderOnly; // フォルダのみ表示?
wchar* wszCaption;
TX* textTarget; // 対象のtext
// sort
int modeSort; // ソートモード
int modeSort2; // ソートモード2
int nDir; // ディレクトリ数
int nFile; // ファイル数
int nDirFile; // ディレクトリ数+ファイル数
// status
int nSel; // 選択されたファイル数
int nSelDir; // 選択されたディレクトリ数
DWORD cbSel; // 選択されたファイルのファイルサイズの合計
DWORD cbDiskFree; // ドライブの空き容量
// walk
FBOOL fWalking;
NPARA nparaWalk; // 次にWalkする行
NPARA npara0;
int ly0;
// now
wchar wszpath[CCHPATHNAME]; // カレント パス、マスク
// result
wchar wszfilename[CCHPATHNAME];
// TXOFN_SAVETO
wchar wszfilenameSaveto[CCHWORD]; //WCE1.01 980503 保存先のファイル名
// mode
WORD fNoLoad:1; //XZ0.10 990624 ファイル一覧を読み込まない?
// link
struct tagFILELIST* filelistPrev;
struct tagFILELIST* filelistNext;
} FILELIST;
// sort
#define FILELIST_SORT_FILENAME 1
#define FILELIST_SORT_FILETYPE 2
#define FILELIST_SORT_NEW 3
#define FILELIST_SORT_OLD 4
#define FILELIST_SORT_BIG 5
#define FILELIST_SORT_SMALL 6
// position
#define FILELIST_IFILEDATE 4 // 日付文字オフセット
#define FILELIST_IFILESIZE 19 // ファイルサイズオフセット
#define FILELIST_IFILENAME 32 // ファイル/ディレクトリ文字オフセット
#define FILELIST_LCHFILEDATE 14 // 日付文字長さ
#define FILELIST_LCHFILESIZE 12 // ファイルサイズ長さ
#define FILELIST_CCHFILENAME CCHPATHNAME // ファイル/ディレクトリ長さ
// \Windowsフォルダのアクセスが遅いのでファイル名の長さを制限
//WCE0.91 970915 64文字の制限に気づいた人がいたので長さ制限を廃止
FILELIST* TXAPI_(548) filelistNew(void);
BOOL TXAPI_(549) filelistDelete(FILELIST* filelist);
FILELIST* TXAPI_(550) filelistSearch(TX* text);
BOOL TXAPI_(551) filelistIsCurDir(FILELIST* fl);
BOOL TXAPI_(552) filelistIsCurDirFile(FILELIST* fl);
BOOL TXAPI_(553) filelistIsCurFile(FILELIST* fl);
BOOL TXAPI_(554) filelistGetCurFilenameW(FILELIST* fl,wchar wszfilename[CCHPATHNAME]);
BOOL TXAPI_(555) filelistGetCurFilenameFullW(FILELIST* fl,wchar wszfilename[CCHPATHNAME]);
DWORD TXAPI_(556) filelistGetCurFileSize(FILELIST* fl);
wchar* TXAPI_(557) filelistFullFilenameW(FILELIST* fl,wchar* wszfilename);
int TXAPI_(558) filelistGetSelect(FILELIST* fl);
void TXAPI_(559) filelistFlush(FILELIST* fl);
BOOL TXAPI_(560) filelistInfoFolder(FILELIST* fl);
BOOL TXAPI_(561) filelistExitFolder(FILELIST* fl);
BOOL TXAPI_(562) filelistSelect(FILELIST* fl,BOOL fSelect);
BOOL TXAPI_(563) filelistIsCurSelect(FILELIST* fl);
void TXAPI_(564) filelistSelectReverse(FILELIST* fl);
int TXAPI_(565) filelistWalkGetCount(FILELIST* fl);
void TXAPI_(566) filelistWalkStart(FILELIST* fl);
BOOL TXAPI_(567) filelistWalkW(FILELIST* fl,wchar wszfilename[CCHPATHNAME]);
BOOL TXAPI_(568) filelistWalkDeleteCur(FILELIST* fl);
void TXAPI_(569) filelistWalkEnd(FILELIST* fl);
void TXAPI_(570) filelistSelectReverseAll(FILELIST* fl);
void TXAPI_(571) filelistSelectClearAll(FILELIST* fl);
void TXAPI_(572) filelistSelectAll(FILELIST* fl);
BOOL TXAPI_(573) filelistSearchFileW(FILELIST* filer,wchar* wsz);
void TXAPI_(574) filelistSetText(FILELIST* filelist,TX* text);
//##SHAREアクセスロック
#define LOCK_NULL 0 // 欠番
// 以下、空きの番号はもったいないので作らない事
#define LOCK_WZPROCESS 1
#define LOCK_HIST 2
#define LOCK_WZAP 3
#define LOCK_PROFILE 4
#define LOCK_KEYMACRO 5
#define LOCK_WZICON 6
#define LOCK_WZMEMO 7
#define LOCK_WZTERMREAD 8
#define LOCK_WZTERMCHECK 9
#define LOCK_N 9 // 最終番号と同じにする
void TXAPI_(575) wzlock(int no);
void TXAPI_(576) wzunlock(int no);
//{###TX-Cサポート
//##for TX-C
#ifdef __TXC__ // 互換
HWND TXAPI_(847) txGetNextEditor(TX* text);
BOOL TXAPI_(885) txInit(TX* text,mchar* szfilename);
BOOL TXAPI_(855) fileCopy(mchar* szfilenameSrc,mchar* szfilenameDst);
BOOL TXAPI_(856) fileDelete(mchar* szfilename);
BOOL TXAPI_(857) fileRename(mchar* szfilenameSrc,mchar* szfilenameDst);
int TXAPI_(858) mkdir(mchar* szpath);
int TXAPI_(859) rmdir(mchar* szpath);
BOOL TXAPI_(860) CommandExec(mchar* szline);
txstr TXAPI_(768) txstrcpylen(txstr dst,mchar* src,int lch);
txstr TXAPI_(769) _strmid(txstr dst,mchar* str,int offset,int lchmid);
txstr TXAPI_(770) _strleft(txstr dst,mchar* str,int lchleft);
txstr TXAPI_(771) _inttostr(txstr dst,int num);
txstr TXAPI_(772) _chartostr(txstr dst,int ch);
mchar* TXAPI_(773) strright(mchar* str,int lchright);
mchar* TXAPI_(774) strrear(mchar* str,int lchleft);
extern "stdlib" {
BOOL CommandBar_mySetMenu(HWND hwndCB,WORD iButton,HMENU hmenuAdd);
}
#if !WINDOWSCE
#define CommandBar_Height(hwnd) (0)
#endif
#endif
void txpcodeNotifyTextOpen(TX* text);
void txReleaseHookWndprocAll(TX* text,TXWNDHOOK* root);
FARPROC TXAPI_(814) txpcodeRegisterCallback(FARPROC procTxpcode,UINT nArg);
void TXAPI_(815) txpcodeUnregisterCallback(FARPROC procRegistered);
void TXAPI_(246) txSetHookWndproctextTxpcode(TX* text,FARPROC procTxpcode);
void TXAPI_(247) txSetHookWndprocbaseTxpcode(TX* text,FARPROC procTxpcode);
void TXAPI_(883) txReleaseHookWndproc(TX* text,WNDTEXTHOOKPROC lpHook,BOOL fHwndbase);
#define txReleaseHookWndproctext(text,procTxpcode) txReleaseHookWndproc(text,procTxpcode,FALSE)
#define txReleaseHookWndprocbase(text,procTxpcode) txReleaseHookWndproc(text,procTxpcode,TRUE)
//##TX-C3.0以前との互換
#ifdef __TXC__
#define beepAsterisk() MessageBeep(0x0040)
#define beepDefault() MessageBeep(0)
#define beepExclamation() MessageBeep(0x0030)
#define beepHand() MessageBeep(0x0010)
#define beepQuestion() MessageBeep(0x0020)
#define txReplaceContinue(t) txIdmExec(t,IDM_UIREPLACECONTINUE)
#define txSearch(text,sz) txSearchEx(text,sz,SEARCH_NOSENSECASE|SEARCH_NOSENSEZENHAN)
#define txSearchPara(text,sz) txSearchEx(text,sz,SEARCH_CUR|SEARCH_PARATOP)
#define txSearchPrev(text,sz) txSearchEx(text,sz,SEARCH_CUR|SEARCH_PARATOP|SEARCH_PREV)
#define txGetCharPrev(text) txGetPrevChar(text)
#define txGetWordBuff(text,sz,cch) txGetWordEx(text,sz,cch)
#define informationex statprintf
#define isreturn(c) txchIsReturn(c)
#define iszenkaku(c) txchIsKanji(c)
#define txClipboardCopy(text) txSelectCopy(text)
#define txClipboardCut(text) txSelectCopyDelete(text)
#define txClipboardPaste(text) txPaste(text)
#define txSelectTsPush(text) txPrivatePush(text)
#define txTsClear(text) txPrivateClear(text)
#define txTsPaste(text) txPrivatePaste(text)
#define txTsPop(text) txPrivatePop(text)
#define txTsPopJump(text) txPrivatePopJump(text)
#define exec(sz) WinExec(sz,SW_SHOWNORMAL)
#define wzExec(sz) wzexec(sz)
#define txofnGetOpenFileName(text,sz,szCaption) txuiGetOpenFileName(text,sz,szCaption,NULL)
#define txofnGetOpenFileNameEx(text,sz,szCaption,mode) txuiGetOpenFileName(text,sz,szCaption,NULL)
#define txofnReferFileName(text,sz,szCaption) txuiGetOpenFileName(text,sz,szCaption,NULL)
#define dialogbig(sz) dialog(sz)
#define dialogGroup(hd,sz)
#define dialogGroupEnd(hd)
#define dialogSetGroupRight(hd,x)
#define dialogEdit(hd,sz,text,lcx,lcy) dialogEditWz(hd,sz,text,lcx,lcy,WS_VSCROLL)
#define dialogInt(hd,sz,data,lcx,lcxBox) dialogInteger(hd,sz,lcx,data,lcxBox)
#define dialogStr(hd,sz,txstr,lcx,lcxBox) dialogTxstr(hd,sz,lcx,txstr,lcxBox)
#define dialogStrC(hd,sz,str,lcx,cch,lcxBox) dialogString(hd,sz,lcx,str,cch,lcxBox)
#define dialogButtonCmd(hd,sz,szMacro,lcx) dialogButtonBig(hd,sz,szMacro,lcx)
#define dialogRadioID dialogChoiceRadio
#define isopen(sz) SearchText(sz)
#define txSearchText(text,sz) SearchText(sz)
#define txSearchTitle(text) txHeadlineSearchNext(text)
#define txSearchTitlePrev(text) txHeadlineSearchPrev(text)
#define txOpenNew(text) textFrameOpen(NULL)
#define call(sz) macroExec(sz,text)
#define fork(sz) forkstd(sz,NULL) // WZ3.0とは若干意味が異なります。forkstdのAPIヘルプを参照してください。
#define forksw(sz,szSw) forkstd(sz,szSw) // WZ3.0とは若干意味が異なります。forkstdのAPIヘルプを参照してください。
#endif
//##日付関数
#ifdef __TXC__
int TXAPI_(866) timeGetEx(int mode);
#define timeGetDay() timeGetEx(0)
#define timeGetDayofWeek() timeGetEx(1)
#define timeGetDayofweek() timeGetEx(1) //WZ4.00Bp 991013 TX-C:timeGetDayofweek(WZ3と同じ名前)を追加
#define timeGetHour() timeGetEx(2)
#define timeGetMinute() timeGetEx(3)
#define timeGetMonth() timeGetEx(4)
#define timeGetSecond() timeGetEx(5)
#define timeGetYear() timeGetEx(6)
#define timeGetYoubi() ((mchar*)timeGetEx(7))
#endif
//{###END
#endif // RC_INVOKED
#endif //__PWZ_H