home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1999 October
/
VPR9910A.BIN
/
APUPDATE
/
VC
/
TXC2S328
/
txc2s328.lzh
/
_WZ.H
< prev
next >
Wrap
C/C++ Source or Header
|
1999-03-04
|
279KB
|
6,470 lines
/*
WZ EDITOR 4.0 / Pocket WZ EDITOR 2.0
TX object define
Start 1997年 7月22日
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
//##とりあえず開発時用 本来は_main.cに置くのが善い。
#define __DEV__ 01 // 開発中?
#define __HARDCOPY__ 0 // 画面ハードコピー機能を使う?
#define __BETA__ 0 // ベータ版特有機能。製品では外す
// CE用は常にリリース
#ifdef _WIN32_WCE
#undef __DEV__
#define __DEV__ 0
#endif
// Win32 Release用
#ifdef WZ_RELEASE
#undef __DEV__
#define __DEV__ 0
#endif
//##汎用?
//WZ3.90L 981126
#define GENERAL 0
#if defined(TXC_DLL) || defined(SETUP) || defined(WZUP)
#undef GENERAL
#define GENERAL 1
#endif
//##WZ/PWZ基本定義
#define __WZ__ 0x4002 // __VERSION__ WZのバージョン番号
// 0x4000 WZ4.00
// 0x4001 WZ4.00A
// 0x4002 WZ4.00B
#define __PWZ__ 0x2002 // __VERSION__ PWZのバージョン番号
// 0x2000 PWZ2.00/2.00A
// 0x2002 PWZ2.05
#define __TXSTRUCT__ 102 // __VERSION__ text,mailerなどの構造体のバージョン番号(WZ,PWZ共通)
//WZ4.00Ac 990206 101
//WZ4.00Ba 990304 101->102
//WCE1.00A 971103
// _WIN32_WCE WinCE版
// WINDOWSCE WinCE版
// POCKETWZ Pocket版? WZ4ではない
// WZ4 WZ4版? Pocketではない
// NEWWZ PWZ or WZ4。WZ1-3ではない。
#ifdef _WIN32_WCE // この_WIN32_WCEはWINDOWSCEに変更しないこと
#define WINDOWSCE 1
#if _WIN32_WCE >= 200
#define WINDOWSCE1 0
#define WINDOWSCE2 1 // WindowsCE2.0
#else
#define WINDOWSCE1 1
#define WINDOWSCE2 0
#endif
#define POCKETWZ 1
#define WZ4 0
#define WS_TITLEBAR WS_VISIBLE
#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_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 0 // 見出しの変換・見出しスタイルを使う? //WZ4.00Ab 990118
#else
#define WINDOWSCE 0
#define WINDOWSCE1 0
#define WINDOWSCE2 0
#define POCKETWZ 0
#define WZ4 1
#define WS_TITLEBAR WS_OVERLAPPEDWINDOW
#define MYSTATUSBAR 0
#define WZFUNC_PRINT 1 // 印刷機能を使う?
#define WZFUNC_PROP 1 // プロポーショナルフォントを使う?
#define WZFUNC_BITMAP 1 // 図の表示機能を使う?
#define WZFUNC_TMLHIGH 1 // マルチフォント等高度なTML機能を使う?
#define WZFUNC_CONV 1 // ファイルコンバータ機能を使う?
#define WZFUNC_EMAIL 1 // E-Mail機能を使う?
#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
#endif
#define WZFUNC_MEMOEDIT 0 // MEMOEDITモードを使う? //WZ3.90L 981124 とりあえず使わない。
#define NEWWZ 1 // POCKETWZ|WZ4
//##以上、RCでも有効
#ifndef RC_INVOKED
//##テキストバッファの文字コード定義
#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 TEXTCHAR_UNICODE 0 // 0:TEXTBUFFはTC_SJIS/TC_SINGLEBYTE
// 1:TEXTBUFFはTC_UNICODE
#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
//##基本型定義
#define EXPORT __declspec(dllexport)
//#define EXPORT extern "C" __declspec(dllexport) // VC++でエラーになった
#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;
//##TX-C std define for WindowsAPI
#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__
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 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 //
#define CHAR_JSPACE 0x8140 //WCE1.01 980504 全角空白
//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 __END__ // 依存部分終了
#define beep() MessageBeep(-1)
#define wait(ms) Sleep(ms)
#define beep2() {wait(500);beep();wait(100);beep();wait(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 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の最大値
#define INT_MAX 0x7FFFFFFF //WZ3.90I 981029 intの最大値
// 文字数定義
#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
// テキストバッファ関連
#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)
//## TXF - text formatted
// 詳しくは"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;
//##テキストモードのparaatr
//WCE1.01 980205 new
typedef struct {
BYTE fEdited:1; // 編集が加えられた?
BYTE fReserved:7;
} PARAATR_TEXT;
typedef struct {
BYTE fEdited:1;
BYTE fReserved:7;
#define MAX_BEAMTAB 15 // 段落内の最大BEAMタブ数
WORD tlxTab[MAX_BEAMTAB];
} PARAATR_TEXT_BEAMTAB; //WZ3.90K 981114
typedef struct {
PARAATR_TEXT* buff; // PARAATR_TEXT buff
// PARAATR_TEXT_BEAMTABの場合もある。
NPARA cur0; // gap start
NPARA cur; // gap end + 1
NPARA size; // buff size
BYTE fBeamtab:1; // buffはPARAATR_TEXT_BEAMTAB?
} PARAATR_TEXT_CONTEXT;
//##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 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を使っていてバッティングしていた。
// 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用定義
// text->hwndtextから親ウィンドウへの通知
//WZ3.90I 981026 WM_TXNOTIFYを廃止し、WM_NOTIFYによる通知に変更。
#ifdef WINVER // 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_TXUSER 1000 // これ以下、user用
//##WM_COPYDATA id
// ユーザが間違えてWM_COPYDATA_TXUSER以下を使った場合でも影響が出にくい様に900番台を使用
#define WM_COPYDATA_CMPFILENAME 901 // CD_BOOL
#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_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
// 以下、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);
//##クリップボードハンドル
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 {
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
//##partition
//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 小さいフォントを使う?
// メッセージ
// 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
//##key
#define CCHKEY 20 // キーボードのキー表記を文字列で表した時の最大長
#define TXVK_MAX_2STROKE 10 // 2ストロークキーMAX
typedef int WZKEY;
typedef WORD WZCMD;
//##TX key code
#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,
};
typedef struct {
// 2ストロークキー
int nPre; // 使用中の数
PREKEY tPre[TXVK_MAX_2STROKE];
// キーに割り当てられたコマンド
WZCMD tWzcmd[TXVK_ADD_2STROKE(TXVK_MAX_2STROKE)];
#if !WINDOWSCE
// ファンクションキー表示内容 //WZ3.90I 981107
mchar tcszFkey[FKEY_N][CCHWORD]; // タブ区切りcsz
#endif
} KEY;
typedef struct {
BYTE lch;
mchar *sz;
WORD idm;
} SZCMDTOWZCMD;
extern SZCMDTOWZCMD _tSzcmdToWzcmd[];
// ソート引数
// 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);
// コマンドライン解析結果
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 reserved:23;
} 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 使用する設定名
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 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 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 このコマンドラインの実行には新しいウィンドウを作成する必要がある
// 空テキスト上からの実行の場合でも、空テキストはそのままで、新しいウィンドウを作成する必要がある
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;
typedef struct {
HWND hwnd; // fAlrearyOpen : 既にオープンされていたテキストのhwndbase
// !fAlrearyOpen : オープンしたテキストのhwndbase
TX* text; // オープンしたtext(同一プロセスWZの場合)
// fAlrearyOpenで、同一プロセスWZなら、
// 既にオープンされているtext
FBOOL fAlrearyOpen; // 既にオープンされていた
FBOOL fWzexec; // WZを起動した
BYTE reserved[32];
} TXFORKRESULT;
//##汎用設定ファイル操作
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);
//##図
#ifndef __TXC__
typedef struct tagIMGSET {
wchar wszfilename[CCHPATHNAME];
FBOOL fHeadAlloced;
BITMAPFILEHEADER* head;
BITMAPINFOHEADER* info;
BITMAPINFO* bitmapinfo;
LPBYTE bitmap;
struct tagIMGSET* prev; // for Cache link
struct tagIMGSET* next; // for Cache link
} IMGSET;
#endif
//##見出し
#define HEADLINE_N 6 // 見出し数
#define CCHHEADLINE CCHSWORD // 見出しの最大長さ
typedef struct {
mchar tszHeadline[HEADLINE_N][CCHHEADLINE];
BYTE tlchHeadline[HEADLINE_N]; // 見出し文字列の長さ(無効な場合もあるので注意)
BBOOL tfDelete[HEADLINE_N];
} HEADLINE_SET;
//##印刷
// 標準の文字の高さ
#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
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;
int cxChar; // 文字幅
int cyChar; // 文字の高さ
int cyAscent; // 文字のベースラインより下の部分の高さ
int cyDescent; // 文字のベースラインより下の部分の高さ
int cxCharKanji; // 漢字の文字幅(fKanji時のみ)
FBOOL fProp; // プロポーショナルフォント?
// 漢字は固定ピッチとして扱う
// ひらがな、カタカナをプロポーショナルとする
FBOOL fKanji; // TRUE:漢字を含むフォント(ShiftJIS)、FALSE:漢字を含まないフォント(文字コード0-255まで)
CBOOL fLock; //WZ3.90O 981203 キャッシュアウトされないようにロックされている?
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 カラー印刷を行う?
// スタイル
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;
//##リンク
//WZ3.90L 981117 new
typedef struct { // リンクヒストリ
#define MAX_LINKHIST 100
IFILE tAdr[MAX_LINKHIST];
int n;
int index;
} LINKHIST;
//##ページ
//WCE1.01 980216 new
#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 500
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
//##textbuff
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;
#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);
//
// 段落体裁解析用
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;
// 文字装飾解析用
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;
//##ツールバー
#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;
#endif
//##多重化/一時ウィンドウ
#if !WINDOWSCE
typedef struct tagMT {
HWND hwndbase;
HWND hwndtext;
HWND hwndOutline;
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;
//##TXウィンドウプロシジャーのフック
//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 {
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;
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 任意使用可
// 前方参照 GPL cache
IBUFF cacheGpl; // キャッシュデータ
// IBUFF_ERRORのときは内容無効
IBUFF curparaGpl; // キャッシュ時の段落先頭IBUFF
IBUFF curgapGpl; // キャッシュ時のtext->curgap
DWORD nEditGpl; // キャッシュ時のnEdit
// 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'から変更
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ファイル
// 内部コード
#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_NKIND * FKEY_NKEY * FKEY_SIZE
#define FKEY_SIZE 13 // 登録できる文字数+1
#define FKEY_NKEY 12 // 最大キー数
// シフトキーとの組み合わせ
#define FKEY_NORMAL 0
#define FKEY_SHIFT 1
#define FKEY_CTRL 2
#define FKEY_SHIFTCTRL 3
#define FKEY_NKIND 4
// ツールバー
// TXTOOLBAR *ttxtoolbar; // ツールバーデータ
int ntoolbar; // ttxtoolbarの数
HBITMAP hbitmapToolbar; // ツールバービットマップ
int cxToolbar;
int cyToolbar;
// for display
HFONT hfont; // フォントハンドル
// fontsetBase->hfontのコピー
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位置の文字幅
//## 現在の内部情報
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 fDuringSetupDispLine:2; //WZ3.90H 980924
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 fNoPushDeleteString:2; //WZ4.00Aa 990107
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; //WZ4.00Ad 990211 DestroyWindow(text->hwndbase)したとき最大化されていたかどうか?
CBOOL fBusy; //WCE1.01 980203
//WCE1.01 980205 変更行の表示
FBOOL fDispLineEdit; // 変更行の表示を行う?
PARAATR_TEXT_CONTEXT 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; // dummy
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
// autosave
int nAutoSaveCmdNow; // 前回のオートセーブから現在までに実行された編集コマンド数
BBOOL fAutoSaving; // autosave中?
BBOOL fAutoSaveValidTimer; // 自動保存実行タイマセット中?
//
CMDLINECONTEXT* pcc; // fFrameのみコマンドラインコンテキスト
// このオブジェクトはdeleteしてはいけないが、
// pcc=NULLにしてもいい
DWORD nEdit; // 編集が行われた回数をカウントしています
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
// 本文フォントの情報
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保存
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; // スクロールバーでスクロール中
int lySB; // カーソル位置(-1なら無効)
// 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
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は除く)
HRGN hrgnCompstrDraw; // 変換中文字列を描画したhrgn
WORD fCompstrDrawing:2; //WZ3.90H 980928 描画中?
WORD fImeCursorIme:1; // カーソル位置(IMEの描画)で変換中? //WZ4.00Aa 990110 new
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
// 見出し文字列
TEXTCHAR* tpHeadline[HEADLINE_N]; // 見出し文字列(text->cszHeadline)へのポインタ
// sz(0 Terminated)ではないことに注意
BYTE tlchHeadline[HEADLINE_N]; // 見出し文字列の長さ
// 必ずCCHHEADLINEより少ない
// TEXTCHAR* tszHeadline; // on demand alloc
HEADLINE_SET* head; // on demand alloc //WZ3.90K 981113
int lchHeadlineContent; // 0以外なら特別見出内容の長さ
// offsetHeadlineContentに値が入る
int offsetHeadlineContent; // 段落先頭から特別見出内容までのオフセット
// アウトライン
HWND hwndOutline;
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;
//## 現在の内部設定
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 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をしない
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
//##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
//## 現在のユーザ設定(ファイルに保存されない)
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)
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
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; // プリプロセッサを色分け?
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:自動を追加
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
#endif
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)
//##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)
#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
#define txGetConfigtextValid(text) (text->fConfigtext && text->szcfg[0] == 0) //WZ3.90I 981028 埋め込み設定が有効かどうか返す
#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)
// 標準ヒストリハンドル
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
#else
#define SIZEHIST_JUMP 4096
#endif
//strblk
// 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);
// share
// このメンバにはポインタは配置できない。
// ポインタの指すメモリがプロセス毎に異なるため。
#define MAXOPEN 100 // 最大プロセス数
typedef struct {
HWND hwnd; // hwndbase
WORD fCloseEvery:1; // CloseEvery実行済み? //PWZ2BETA0.3 980508 FBOOL->bitfield
WORD fMailEditor:1; //PWZ2BETA0.3 980508 WZ MAIL EDITOR?
} 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 設定名
} 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 {
//##SHARE:基本コンテキスト
int nOpen; // 起動中の表PWZ Editorウィンドウ数
// PWZアプリケーション(Filer,Grep,etc)は除く
WZPROCESS tWzprocess[MAXOPEN]; //1.99C 起動中の表PWZ Editorウィンドウのモード
// 起動された順序で入っている
// 有効な要素は、[0]から[nOpen-1]まで
// PWZアプリケーション(Filer,Grep,etc)は除く
int nOpenAp; // 起動中のPWZアプリケーション(Filer,Grep,etc)
// の数
TX textConfig; // 設定データを保持するtext
// shared text
BYTE reservedSC[4]; // 4バイトは確保しておくこと!
WORD sizehist[MAXHIST]; // ヒストリバッファのサイズを指定(デフォルト:512)
STRBLK hist[MAXHIST]; // ヒストリ
// 複数のインスタンスで共有するので、
// ヒストリ用のHSTRBLKの実体は、shareで定義する。
// shareで定義しないと、ヒストリ用のHSTRBLKは
// インスタンス毎に持たれてしまい、異常動作する
BYTE buffhist[9728+SIZEHIST_JUMP];// データバッファ
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のインテリマウス機能を使わない
BYTE configEnd;
// 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
BYTE reservedPermanent[909];
BYTE permanentEnd;
} SHARE;
#ifdef __TXC__
//WZ4.00Aa 990108 TX-CからSHARE(sh)にアクセスできるようにした。
SHARE* TXAPI_(898) _shGet(void);
#define sh (_shGet())
#else
extern SHARE* sh;
#endif
//##アプリケーションレイヤの設定
//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);
//## global values
#ifdef __TXC__
extern HINSTANCE _hinstance;
#else
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定義ファイルの名前
//## internal global values
extern MSG _msg; // WINDOWSCE
extern BYTE _nOpenAp; // このプロセスで起動中のPWZアプリケーション
extern struct tagDIALOG * _topModeless; // モードレスダイアログリスト
extern BBOOL _fTimeLimit;
extern mchar _szSearchHeadline[];
extern BYTE _cyCommandBar;
extern mchar _cszHeadlineStd[];
extern IBUFF _ibuffColoringCache;
extern mchar szMsGossic[];
extern mchar szMsPGossic[];
extern mchar szMsMintyo[];
extern mchar _szPasswordHead[];
#endif
//##disp
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 caretFlush(TX* text);
void TXHIGH_THROUGH txSetLyUndisp(TX* text,int ly);
void txDispFlushClip(tx* text,IFILE cliptopnow,IFILE clipendnow);
void underlineDraw(tx *text,int ly);
//## _wcestd.h
//##file
#if WINDOWSCE
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
#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)
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);
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);
#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);
#ifndef __TXC__
BOOL ShellExecuteEx_W(SHELLEXECUTEINFOW* info);
#endif
HANDLE LoadLibrary_W(wchar* wszfilename);
#endif
#define FILEHANDLE_ERROR ((HANDLE)0xFFFFFFFF) // replace HFILE_ERROR
// 0じゃない!
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
LRESULT TXAPI_(459) SendMessageOther(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
//##memory
LPVOID TXAPI_(880) memAlloc(DWORD size);
LPVOID TXAPI_(881) memAllocZeroinit(DWORD size);
void TXAPI_(882) memFree(LPVOID p);
LPVOID memResize(LPVOID p,DWORD size);
#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)
//##str
mchar* TXAPI strnext(mchar* szstr);
BOOL issepastr(mchar* str);
mchar* sepastrGetIndexStr(mchar* str,int i,int* pLch);
mchar* csszGetInclude(mchar* cssz,mchar* szName);
mchar* csszGetWordTop(mchar* csz);
int csszGetWordLen(mchar* cssz);
mchar* csstrGetInclude(mchar* csstr,int size,mchar* szName);
int cvszGetWordLen(mchar* csz);
mchar* cvszGetWordTop(mchar* csz);
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
int _cdecl TXAPI_(99) sprintf(mchar* szdst,mchar* szformat,...);
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 sprintSizeKB(mchar* szbuff,IFILE size);
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__
#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 // __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);
#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);
#ifndef __TXC__
HANDLE FindFirstFile_W(LPCWSTR wszpath,WIN32_FIND_DATAW* ffd);
HANDLE FindNextFile_W(HANDLE hFindFile,WIN32_FIND_DATAW* ffd);
#endif
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);
#ifndef UNICODE
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);
#endif
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);
#ifdef __TXC__
WORD TXAPI_(816) RegisterClass_W(LPVOID lpwc);
#else
ATOM RegisterClass_W(WNDCLASSW* lpwc);
#endif
int GetClassName_W(HWND hwnd,LPWSTR lpClassName,int cchClassName);
int DrawText_W(HDC hdc,LPCWSTR wszStr,int cchStr,LPRECT lprc,UINT wFormat);
#endif
// 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);
#ifndef __OLECPP__
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);
#ifdef __TXC__
//##C std libs
// string
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);
// memory
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で確保したメモリブロックのサイズを変更する
// char
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
//
#define txchIsKeisen(ch) (0x849F <= (ch) && (ch) <= 0x84BE) // JIS罫線素子か?
#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
#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__
int TXAPI_(465) wispathsepa(wchar c);
wchar* TXAPI_(466) wstrGetLast(wchar* szstr);
int TXAPI_(467) wstricmp(wchar* sz1,wchar* sz2);
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);
int TXAPI_(476) ispathsepa(mchar c);
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);
LPVOID TXAPI_(483) zmalloc(int size);
#ifndef __TXC__
#define free(p) _myfree(p)
#endif
void _myfree(LPVOID p); //WZ3.90H 980906 myfree -> _myfree
mchar * TXAPI_(485) strGetLast(mchar *szstr);
mchar* TXAPI strGetLastAscii(mchar* szstr);
int strisidi(mchar* szstr,mchar* szId);
//##mem
mchar* memmem(mchar* src,int lchSrc,mchar* szfind,int lchFind);
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);
//##path - wchar
BOOL TXAPI_(486) wpathSearchPathtext(wchar* wszpath);
BOOL TXAPI_(487) wpathIsFull(wchar* wszpath);
BOOL TXAPI_(488) pathIsFull(mchar* szpath);
void TXAPI_(489) pathSetDir(mchar *path);
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 TXAPI_(493) TXAPIBASE wpathFormLong(wchar* path);
wchar* TXAPI_(494) TXAPIBASE wpathGetFileName(wchar* path);
wchar* TXAPI_(495) wpathFullConfig(wchar* wszfilenameDst,wchar* wszfilename);
wchar* wpathFullConfigNoCreate(wchar* wszfilenameDst,wchar* wszfilename);
BOOL wpathFullConfigNetwork(wchar wszdst[CCHPATHNAME],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);
void TXAPI_(496) wpathFlush(wchar* szstr);
wchar* TXAPI_(497) TXAPIBASE wpathSetFileName(wchar *path,wchar *filename);
wchar* TXAPI_(498) TXAPIBASE wpathGetExt(wchar* path);
wchar* TXAPI_(499) TXAPIBASE wpathSetExt(wchar *path,wchar *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_(501) wpathIsWild(wchar *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);
BOOL wpathSetFilenameUnique(wchar* wszfilename);
void TXAPI wpathSetRoot(wchar* wszfilename);
void TXAPI pathSetRoot(mchar* szfilename);
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);
int TXAPI pathGetMode(mchar* szfilename);
int TXAPI wpathGetMode(wchar* wszfilename);
BOOL RemoveDirectoryEx_W(wchar* wszfilename);
DWORD TXAPI_(913) wpathGetDiskFreeSpace(wchar* wszpath);
void wpathGetWzFilename(wchar* wszfilename);
BOOL wpathGetFileTime(wchar* wszfilename,FILETIME* filetime);
BOOL WinExecEx_W(wchar* wszfilenameExe,wchar* wszCmdline);
//##path - mchar
BOOL TXAPI_(505) pathIsWild(mchar* path);
BOOL TXAPI_(506) TXAPIBASE pathFormLong(mchar *path);
mchar* TXAPI_(507) TXAPIBASE pathGetExt(mchar *path);
mchar* TXAPI_(508) TXAPIBASE pathSetExt(mchar *path,mchar *ext);
mchar* TXAPI_(509) TXAPIBASE pathSetFileName(mchar *path,mchar *filename);
mchar* TXAPI_(510) TXAPIBASE pathGetFileName(mchar *path);
BOOL wpathIsBinaryFiletype(wchar* wszfilename);
void TXAPI_(511) pathFlush(mchar* szstr);
BOOL TXAPI_(512) TXAPIBASE pathIsExt(mchar *path,mchar *ext);
mchar* TXAPI pathSepa(mchar* szstr);
void TXAPI_(892) pathFlushSepa(mchar* szstr,int ch);
int TXAPI pathCmp(mchar* szpath1,mchar* szpath2,int *plch);
int TXAPI pathCmpN(mchar* szpath1,mchar* szpath2,int lch,int *plch);
//##file op for TX-C
#ifdef __TXC__
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);
#endif
//##WZ/PWZ application
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);
#define wzapAdd(hwndbase) pwzapAdd(hwndbase) //WZ3.90L 981123
#define wzapDelete(hwndbase) pwzapDelete(hwndbase) //WZ3.90L 981123
#define wzapFocused(hwndbase) pwzapFocused(hwndbase) //WZ3.90L 981123
//##win ext
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);
HWND TXAPI_(527) wndtxGetActive(HWND hwndbase);
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);
BOOL TXAPI_(848) wndtxIsEditor(HWND hwndbase);
BOOL TXAPI_(849) shellExecute(mchar* pszFile,mchar* pszOp);
DWORD TXAPI_(850) myChooseColor(HWND hwndParent,COLORREF* rgbResult,mchar* sztitle);
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 TXAPI_(531) wndSetPosSize(HWND hwnd,int x,int y,int cx,int cy);
BOOL TXAPI_(532) wndSetPos(HWND hwnd,int x,int y);
BOOL TXAPI wndSetZorder(HWND hwnd,HWND hwndInsertAfter);
#define wndSetSize(hwnd,cx,cy) SetWindowPos(hwnd,NULL,0,0,cx,cy,SWP_NOZORDER|SWP_NOMOVE) //WZ3.90E 980804
void TXAPI_(533) wndSetTimer(HWND hwnd,UINT timerid,DWORD ms);
void TXAPI_(534) wndMoveFocus(HWND hwnd,BOOL fPrev);
BOOL TXAPI wndGetRect(HWND hwnd,RECT* r);
void hwndSetCenter(HWND hwndBase);
BOOL wndRePos(HWND hwnd);
//##win
#if WINDOWSCE
UINT IsDlgButtonChecked(HWND hwnd,int idd);
BOOL CheckDlgButton(HWND hwnd,int idd,UINT uCheck);
void MoveTo(HDC hdc,int x,int y);
void LineTo(HDC hdc,int x,int y);
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
#define GetCurrentTime() GetTickCount()
#else
extern int _cxSysChar;
extern int _cySysChar;
int GetSystemFontNo(void);
void InitSystemFontSize(HWND hwnd);
#define MoveTo(hdc,x,y) MoveToEx(hdc,x,y,NULL)
#endif
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);
BOOL TXAPI_(537) wzexecW(wchar* lpszCmdline);
BOOL TXAPI_(809) wzexec(mchar* lpszCmdline);
BOOL TXAPI_(538) shellOpenW(wchar* szfilename);
#if !WINDOWSCE
enum {WINDOWS95=1,WINDOWSNT};
extern BYTE _platform;
extern DWORD _dwWindowsVertion; //WZ3.90P 981205
#endif
//## _wce.c
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,...);
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);
//## _pwzfiler
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);
//##filelist
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 fReserved:8;
BYTE modeSaveAs; // 「プレーンテキストへ変換」など。
BYTE reserved[10];
} TXOFN_ARG;
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 保存先のファイル名
// 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);
//##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);
//##lock/unlock
#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);
//##dialog
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 freserved:13;
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 ウィザード?
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を初期化すること。
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 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);}
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 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);
void TXAPI_(593) printf(LPCSTR szFormat,...);
void wprintf(wchar* szFormat,...);
TX* printfGetText(void);
void TXAPI_(594) dialogaDebugEnd(void);
HWND TXAPI_(595) dialogaDebugStart(void);
int TXAPI_(893) dialogGetPage(HDIALOG hd);
HDIALOG TXAPI dialogGetPageDialog(HDIALOG hd,int iPage);
#ifndef __TXC__
#ifndef TXC_DLL
DWORD (WINAPI *txpcodeCallAddress)(LPBYTE pc,UINT nArg,LPVOID pArg);
#endif
#endif
// ダイアログ作成 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,...);
//## outline control
extern WCHAR wszclassOutline[];
extern mchar szclassOutline[];
typedef struct {
// 内部情報
HWND hwnd; // 自身の window
HWND hwndTree; // TreeView window
TX* textOutline; // 抽出したアウトライン情報を保持するテキスト
// 自身でalloc,free
NPARA nparaTarget; // カレント見出しのtextTarget上の位置
NPARA nparaOutline; // カレント見出しのtextOutline上の位置
int iHeadline; // カレント見出しの見出し番号(1-6)
DWORD nEditTarget; // アウトライン表示開始時のtextTargetのnEdit
DWORD nEditTargetLastop;// 最後のアウトラインによる編集時のnEdit
TX* textClip; // 切り抜き、ペースト用バッファ
IFILE adrTargetSearch; // 最後に検索した位置
mchar szHeadline[CCHWORD]; // 見出し名
mchar szAtr[CCHWORD]; // 作成日などのアトリビュート
FBOOL fMemoFlushingAtSelchanged;
FBOOL fMemoFlushing;
FBOOL fMemoReopening;
FBOOL fContentSkipped; //WCE0.94 高速化のためtextContentにデータをセットしてない?
FBOOL fLabelEditing; //WCE1.01 980205 ラベル編集中?
FBOOL fRemaking; //PWZ2BETA0.6 980620 再作成中?
// 移動先
int iHeadlineMoveTo;
mchar szHeadlineMoveTo[CCHWORD]; // 移動先の見出し名
#if 0 //WZ3.90L 981124 廃止
NPARA nparaTargetMoveTo;
NPARA nparaOutlineMoveTo; //PWZ2BETA0.6 980620 nparaTargetMoveToに対応するtextOutlineのnpara
#endif
// param保持
MEMBLOCK* mbParam; //PWZ2BETA0.6 980621 new
// クライアント設定情報(APIを使って設定)
TX* textTarget; // アウトラインを抽出する対象テキスト
// クライアントがWM_OUTLINE_SETTXを使ってセットする
// クライアント設定情報(直接設定)
BYTE ly; // 見出しを移動したときに設定するly
BBOOL fMemo; // メモ用?
BYTE memo_modeDispDate; // メモの日付を表示?
// 1:作成日,2:更新日を表示
BBOOL fInsertTemplate; // 慣用句の挿入用?
BBOOL fSetImeOff; // フォーカスを得たときにIMEをOFFする?
TX* textContent; // 見出しの内容を表示/編集するテキスト
TX* textDest; // 見出しの内容などの挿入先のテキスト
HWND hwndHeadline; // 見出しを表示するエディトボックス
BOOL fImageList; //WCE1.01 980421 textTargetの見出しの後の2文字をimagelistのINDEXとみなす
// 1文字目は通常のiImage+'A',2文字目は選択時のiImage+'A'とみなす
BOOL fHook; //WCE1.01 980425 WM_OUTLINE_NOTIFY_HOOKでフックできるようにする
DWORD retHook; //WCE1.01 980425 HOOK_CAPTUREしたとき、呼び出し元に返す値
int cbBase; //WCE1.01 980507 表示文字の先頭cbBase文字分を表示しない
BYTE iHeadlineMin; //PWZ2BETA0.6 980621 最小の見出し番号(0:見出し1,1:見出し2...)
} OUTLINECONTROL;
//
#define WM_OUTLINE_SETTX (WM_USER+950) // void text
#define WM_OUTLINE_NOTIFY (WM_USER+951) // NotifyCode arg
////WCE1.01 980326 WM_NOTIFYに変更すること
#define OUTLINEN_SELCHANGE 10
#define OUTLINEN_SELCHANGEPRE 11
#define OUTLINEN_GETFOCUS 12
#define OUTLINEN_MOVETOCHANGE 13
#define OUTLINEN_TVK_KEYDOWN 14
#define OUTLINEN_CONTEXTCHANGE 15
#define OUTLINEN_RBUTTONUP 16 //WZ3.90G 980827 new
#define WM_OUTLINE_GETCONTEXT (WM_USER+952) // void void
#define WM_OUTLINE_COMMAND (WM_USER+953) // IDD_OUTLINExxx void
#define WM_OUTLINE_SIZE (WM_USER+954) // void void
#define WM_OUTLINE_NOTIFY_HOOK (WM_USER+955) // OUTLINE* TV_DISPINFO*
//WCE1.01 980425 outline->fHook時のみ送る
//
BOOL TXAPI_(597) txHeadlineChange(TX* text,int iHeadline);
int TXAPI_(600) txHeadlineMatch(TX* text);
BOOL TXAPI_(598) txHeadlineGetContent(TX* text,TXSTR sz);
//
#define outlineSetTx(hwnd,text) SendMessage(hwnd,WM_OUTLINE_SETTX,0,(LPARAM)text)
#define outlineGetContext(hwnd) ((OUTLINECONTROL*)SendMessage(hwnd,WM_OUTLINE_GETCONTEXT,0,0))
void TXAPI_(601) outlineRegisterClass(void);
void TXAPI_(602) outlineFlushTree(OUTLINECONTROL* outline);
BOOL TXAPI_(603) outlineFlushMemo(HWND hwndOutline);
void TXAPI_(604) outlineFlushTargetNpara(HWND hwndOutline);
BOOL TXAPI_(605) outlineSaveEdited(HWND hwndOutline,BOOL fQuery);
BOOL tvSetText(HWND hctrl,OUTLINECONTROL* outline);
#ifndef __TXC__
LPARAM myTreeView_GetParam(HWND hctrl,HTREEITEM hItem,OUTLINECONTROL* outline);
#endif
LPVOID myTreeView_SearchParam(HWND hctrl,LPARAM lParam,OUTLINECONTROL* outline);
void outlineTermParam(OUTLINECONTROL* outline);
void outlineInitParam(OUTLINECONTROL* outline);
typedef struct {
HANDLE hItem;
LPARAM lParam;
} OUTLINEPARAM;
OUTLINECONTROL* TXAPI_(24) dialogTree(HDIALOG hd,mchar* szCaption,TX* text,int width,int height);
//##config
LPBYTE TXAPI_(606) fileallocW(wchar* szfilename,DWORD* size);
//
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);
//
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 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);
//
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);
void _lwriteConfigtextNone(HANDLE hf);
//##key
typedef int SKEY;
SKEY TXAPI_(617) GetShiftKey(void);
#define SKEY_SHIFT 0x01
#define SKEY_CONTROL 0x02
#define SKEY_ALT 0x04
BOOL txKeyProcMessage(TX* text,UINT message,WPARAM wParam,LPARAM lParam); //WZ3.90I 981102 引数(BOOL fKeyD)廃止。TXAPI化中止。
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);
int TXAPI_(633) txSearchCmd(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
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);
//##form
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;
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);
//##罫線
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);
//##WZ MAIL EDITOR/WZ MAILER
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
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;
void txMailheaderClose(TX* text);
//##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);
//##IBUFF operation
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,int 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 txIbuffGetParaContentEnd(TX* text,IBUFF ibuff);
IBUFF txIbuffGetPrevPara(TX* text,IBUFF ibuff);
IBUFF TXAPI_(668) txIbuffGetNextPara(TX* text,IBUFF ibuff);
int TXAPI_(669) txIbuffGetHeadline(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 txIfileGetTop(TX* text);
//##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);
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);
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);
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);
int txfTagInsertTag(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind);
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);
UINT TXAPI_(909) txfTagRemove(mchar* pMem,UINT size0);
//##タブ桁揃え
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 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);
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
BOOL TXAPI_(759) txLpFlushBaseY(TX* text);
void TXAPI_(760) txLpFlushPage(TX* text);
//##Multi Font / Img
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);
//##HDC operation
int TXAPI_(761) pointsToMmtext(HDC hdc,int points);
int TXAPI_(762) pixelsToMcm(HDC hdc,int pixels);
int TXAPI_(763) mcmToPixels(HDC hdc,int mcm);
#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
#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)
#endif
void MapDC(TX* text,HDC hdc);
void TXAPI_(764) hdcSelectObjectDefault(HDC hdc);
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
};
//##Window Operation
#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))
#define hwndoutlineGetContext(hwnd) ((OUTLINECONTROL*)hwndGetContext(hwnd))
//##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);
//##thread
#ifndef __TXC__
#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
//##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);
//##txstr support
#ifdef __TXC__
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);
#endif
//##stdlib for TX-C
#ifdef __TXC__
extern "stdlib" {
BOOL CommandBar_mySetMenu(HWND hwndCB,WORD iButton,HMENU hmenuAdd);
}
#if !WINDOWSCE
#define CommandBar_Height(hwnd) (0)
#endif
#endif
//##TX-PCODE support
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)
//##hook
void txAddHookWndproctext(TX* text,WNDTEXTHOOKPROC lpHook);
void txAddHookWndprocbase(TX* text,WNDTEXTHOOKPROC lpHook);
void txAddHookWndproc(TX* text,WNDTEXTHOOKPROC lpHook,BOOL fTxpcode,BOOL fHwndbase);
//##menu
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を削除する。
// 以下、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);
//##date
#ifdef __TXC__
int TXAPI_(866) timeGetEx(int mode);
#define timeGetDay() timeGetEx(0)
#define timeGetDayofWeek() timeGetEx(1)
#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
//##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
//##TXAPI
IBUFF TXAPI_(132) TXHIGH txLeftBytes(TX* text,IBUFF lenMove);
IBUFF TXAPI_(133) TXHIGH txRightBytes(TX* text,IBUFF lenMove);
BOOL TXAPI_(134) TXHIGH txJumpAddress(TX* text,IFILE address);
BOOL TXAPI_(135) TXHIGH txJumpAddressBinary(TX* text,IFILE address);
void TXAPI_(136) txJumpAddressAddLy(TX* text,IFILE address);
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);
void TXAPI_(141) txDispTextAll(TX* text);
void TXAPI_(142) txDispTextAllCursor(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);
int TXAPI_(151) TXHIGH txRight(TX* text);
int TXAPI_(152) TXHIGH txLeft(TX* text);
void TXAPI_(153) txDispText(TX* text,int yTop,int yEnd);
void TXAPI_(154) txDispNpara(TX* text,NPARA npara);
// _text2.c
IFILE TXAPI_(155) TXHIGH txGetParaTail(TX* text);
IFILE TXAPI_(156) txGetParaTop(tx *text);
IFILE TXAPI_(157) txGetWordTail(TX* text);
IFILE TXAPI_(158) txGetWordTop(TX* text);
IFILE TXAPI_(159) txGetSentenceTop(TX* text);
IFILE TXAPI_(160) txGetSentenceTail(TX* text);
IFILE TXAPI_(161) txGetTextSize(TX* text);
IFILE TXAPI_(162) txGetTextSizeSemi(TX* text);
// pが示す文字のタイプ(CT_SPACE,CT_XXX,etc)を返す
int TXAPI_(163) GetCharType(TX* text,mchar *p);
#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
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);
int TXAPI_(2) txJumpLineTop(TX* text);
int TXAPI_(3) txJumpLineEnd(TX* text);
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);
int TXAPI_(169) TXHIGH txSearchEx(TX* text,mchar* szfind,DWORD searchmode);
int TXAPI_(824) txReplaceEx(TX* text,mchar* szFind,mchar* szReplace,SEARCHMODE searchmode);
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);
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 // 最後のタグ
mchar* TXAPI retagGetP(int iTag);
BOOL TXAPI retagGetEx(int iTag,mchar* szbuff,int cch);
int TXAPI retagGetLch(int iTag);
BOOL TXAPI_(170) txSelectJump(tx *text);
BOOL TXAPI_(171) txSelectToChar(tx* text);
IBUFF TXAPI_(172) TXHIGH txDeleteBytes(TX* text,IBUFF len);
BOOL TXAPI_(173) TXHIGH txJumpFileTop(TX* text);
BOOL TXAPI_(174) txJumpFileTopLine(TX* text);
BOOL TXAPI_(175) txSelect(TX* text);
BOOL TXAPI_(176) txSelectWord(tx *text);
BOOL TXAPI_(177) txSelectLine(tx *text);
int TXAPI_(178) txJumpLineTail(TX* text);
IBUFF TXAPI_(8) txDeleteChar(TX* text);
IBUFF TXAPI_(9) txDeletePrev(TX* text);
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_(183) TXHIGH txJumpFileEnd(TX* text);
BOOL TXAPI_(184) txJumpFileEndLine(TX* text);
BOOL TXAPI_(185) txPaste(tx *text);
BOOL TXAPI_(186) TXHIGH txSelectCopy(tx *text);
int TXAPI_(187) txLeftWord(TX* text);
int TXAPI_(188) txLeftWordMi(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_(193) TXHIGH txJumpParaTop(TX* text);
BOOL TXAPI_(194) TXHIGH txJumpParaEnd(TX* text);
BOOL TXAPI_(195) TXHIGH txNextPara(TX* text);
BOOL TXAPI_(196) TXHIGH txPrevPara(TX* text);
int TXAPI_(197) txRightWordMi(TX* text);
int TXAPI_(198) txRightWord(TX* text);
BOOL TXAPI_(199) txFlushSelectNow(TX* text);
void txFlushScrollBar(TX* text);
void TXAPI_(200) txSelectCopyQuit(tx *text);
int TXAPI_(201) txDeleteWord(TX* text);
int TXAPI_(202) txDeleteWordMi(TX* text);
int TXAPI_(203) TXHIGH txDeletePara(TX* text);
int TXAPI TXHIGH txDeleteParaPrim(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
IBUFF TXAPI_(1) TXHIGH txInsert(TX* text,mchar *str);
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で挿入、残りは半角スペースで挿入
void TXAPI_(208) TXHIGH_THROUGH txFlushCury(TX* text);
void TXAPI txFlushCurysize(TX* text);
BOOL TXAPI_(209) txSetHigh(tx *text);
BOOL TXAPI_(210) txUndo(TX* text);
BOOL TXAPI_(211) txRedo(TX* text);
BOOL TXAPI_(212) TXHIGH txSelectDelete(tx *text);
void TXAPI_(213) txSelectCopyDelete(tx *text);
BOOL TXAPI_(214) txSelectEx(tx *text,int fClip);
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_(219) txInsertPara(tx *text);
BOOL TXAPI_(220) txSelectBox(TX* text);
BOOL TXAPI_(221) txSelectAll(tx *text);
BOOL TXAPI_(222) txSelectVz(tx *text);
int TXAPI_(223) txDeletePrevWord(TX* text);
int TXAPI_(224) txWriteChar(tx *text,TXCHAR code);
int TXAPI_(225) txInsertCharModal(tx *text,TXCHAR code);
int TXAPI txInsertAutoIndent(TX* text,int modeAutoIndent);
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_(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);
#define txSetHighSilent(text) txSetHigh(text)
#define txResetHighSilent(text) txResetHigh(text)
BOOL TXAPI_(233) txResetHigh(tx *text);
BOOL TXAPI_(234) txResetHighFlag(tx *text);
int TXAPI_(235) TXAPIBASE txJumpNpara(TX* text,NPARA npara);
void TXAPI_(236) txDeleteText(tx *text);
int TXAPI_(237) TXHIGH txGetParaLen(TX* text);
int TXAPI_(779) TXHIGH txGetParaContentLen(TX* text);
int TXAPI_(780) txGetLineContentLen(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_(906) txGetDownAble(TX* text,int n);
BOOL TXAPI_(907) txGetUpAble(TX* text,int n);
mchar* TXAPI_(908) txSprintLocate(TX* text,mchar buff[CCHWORD],UINT mode);
#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
void TXAPI_(843) txFlushUI(TX* text);
int TXAPI_(249) txSearchNextPrim(TX* text,mchar *sFind,DWORD searchmode,int lchFind);
BOOL TXAPI_(250) txInsertText(TX* text,TX* textInsert);
BOOL TXHIGH txInsertTextCur(TX* text,TX* textInsert);
BOOL TXAPI_(251) txInsertTextSelect(TX* text,TX* textInsert);
int TXAPI_(252) textSearch(HWND hwnd);
HWND TXAPI_(253) textRead(int i);
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* szfilename);
TX* TXAPIBASE TXAPI_(97) textopen(mchar* szfilename);
TX* TXAPIBASE textopentmlW(wchar* szfilename);
#define textnew() textopen(NULL) //PWZ2BETA0.4 980610
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);
BOOL txuiGetOpenFileNameHtml(TX* text,mchar szfilename[CCHPATHNAME],mchar* szmask);
BOOL txuiFileOpenPrim(TX* text,int modeFileOpen,TXOFN_ARG* arg);
BOOL ofnSelectFolderW(wchar* wszfilename,wchar* wszCaption,TXOFN_ARG* arg);
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_(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 TXAPI_(261) TXCMD uiWindowlist(TX* text);
void TXAPI_(262) wndtxSetActive(HWND hwndbase);
HWND TXAPI_(263) SearchTextW(wchar* szfilename);
HWND TXAPI_(865) SearchText(mchar* szfilename);
BOOL TXAPI_(264) txuiCloseAllEvery(TX* text);
void TXAPI_(265) txQuit(TX* text);
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_(270) txGetEdit(TX* text);
BOOL TXAPI_(271) txuiClose(TX *textClose);
BOOL TXAPI_(272) txuiInsertFile(TX* text);
BOOL TXAPI_(273) txInsertFileW(TX* text,wchar* wszfilename);
BOOL TXAPI_(804) txInsertFile(TX* text,mchar* szfilename);
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);
HSTRBLK TXAPI_(278) historyOpen(mchar* szName,int cbHistBuff);
void TXAPI_(279) historyClose(mchar* szName,HSTRBLK sb);
void historyDelete(HSTRBLK sb);
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);
BOOL TXAPI_(281) txGetFreeCursor(TX* text);
int TXAPI_(282) txRightFree(TX* text);
int TXAPI_(283) txLeftFree(TX* text);
BOOL TXAPI_(284) TXHIGH txIsCurReturn(TX* text);
BOOL TXAPI_(285) TXHIGH txIsCurLineEnd(TX* text);
BOOL TXAPI TXHIGH txIsCurLineReturn(TX* text);
BOOL TXAPI_(286) TXAPIBASE txIsCurLineTop(TX* text);
int TXAPI_(287) txWriteReturn(TX* text);
int TXAPI_(288) txWriteTab(TX* text);
int TXAPI_(289) txJumpPara(tx *text,NLINE line);
int TXAPI_(290) txJumpLine(TX* text,NLINE line);
int TXAPI_(291) TXHIGH_THROUGH txInsertSpaceFreeCursor(TX* text);
IBUFF txFlushCurscreen(TX* text);
void txFlushCurscreenForce(TX* text);
void txInitConfig(TX* text);
BOOL TXHIGH_THROUGH txFlushFree(TX* text);
int TXAPI_(292) txJumpX(TX* text,int x);
int TXAPI_(293) txCharConvert(TX* text,CHARCONVERT* cc);
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);
int TXAPI_(297) strsize(mchar* szstr);
int strlensize(mchar *szstr);
BOOL TXAPI_(298) TXAPIBASE wndImeGetOpen(HWND hwnd);
void TXAPI_(299) TXAPIBASE wndImeSetOpen(HWND hwnd,BOOL fOpen);
#define txImeGetOpen(text) wndImeGetOpen(text->hwndtext) //WZ3.90L 981121
#define txImeSetOpen(text,fOpen) wndImeSetOpen(text->hwndtext,fOpen) //WZ3.90L 981121
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);
TXCHAR TXAPI_(305) TXHIGH txGetChar(TX* text);
TXCHAR TXAPI_(306) TXHIGH txGetPrevChar(TX* text);
TXCHAR TXAPI_(867) txReadChar(TX* text);
BOOL TXAPI_(828) txGetBuff(TX* text,mchar* buff,IFILE adrtop,IFILE adrend);
void TXAPI_(307) txFlush(TX* text);
void txResetTexttop(TX* text);
void TXHIGH txFlushTexttopPrim(TX* text);
void txFlushTexttop(TX* text);
void txfFlushXAlign(TX* text);
IFILE TXAPI_(308) txGetAddressCurscreen(TX* text);
BOOL TXAPI_(309) txSetLyCurscreen(TX* text,IFILE adrCurscreen);
BOOL TXAPI_(310) txIsLineReturn(TX* text);
BOOL TXAPI_(311) txIsLineEnd(TX* text);
BOOL TXAPI_(312) TXAPIBASE txIsLineParaTop(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);
BOOL TXAPI_(314) TXAPIBASE txIsCurParaTop(TX* text);
BOOL TXAPI_(315) TXHIGH txClipPasteEx(TX* text,HCLIP hclip,int istack,DWORD cbPasteMax,BOOL fJump,int _fClip);
int TXAPI_(316) clipIsWz(void);
BOOL TXAPI_(317) clipGetExistText(void);
BOOL TXAPI_(318) txMarkN(TX* text,int n);
BOOL txMarkEx(TX* text,int n,IFILE adr);
BOOL TXAPI_(319) txJumpMarkN(TX* text,int n);
void TXAPI_(320) txFlushColor(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 TXAPI_(321) TXAPIBASE txSetUndispEx(TX* text);
BOOL TXAPI_(322) TXAPIBASE txSetDispEx(TX* text);
BOOL TXAPI_(844) txSetDispExJump(TX* text,BOOL fJump);
#define txSetUndispExSilent(text) txSetUndispEx(text)
#define txSetDispExSilent(text) txSetDispEx(text)
BOOL TXAPI_(323) TXCMDBASE txuiConvertCharZenhan(TX* text);
int TXAPI_(324) txJumpBrace(TX* text);
void TXAPI_(325) txInsertBrace(TX* text);
BOOL TXAPI_(326) TXCMDBASE txuiMark(TX* text);
BOOL TXAPI_(327) TXCMDBASE txJumpTagEx(TX* text);
BOOL TXAPI_(328) txSwitchWindow(TX* text);
BOOL TXAPI TXHIGH txIsCurTof(TX* text);
BOOL TXAPI_(329) TXHIGH txIsCurEof(TX* text);
BOOL TXAPI_(330) txuiImeConvert(TX* text);
void TXAPI_(331) txSwitchIme(TX* text);
BOOL TXAPI_(332) TXHIGH_THROUGH txUndoPara(TX* text);
BOOL TXAPI_(766) txKeySetWzcmd(TX* text,mchar* szKey,WZCMD wzcmd);
void TXAPI_(901) txKeySet2Stroke(TX* text,IDM idm);
BOOL TXAPI_(333) txuiGene(TX* text);
BOOL TXAPI_(334) txCmpFirst(TX* text);
BOOL TXAPI_(335) txCmp(TX* text);
void TXAPI_(336) txSetBusy(TX* text);
void TXAPI_(337) txSetUnbusy(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);
BOOL TXAPI_(341) txJumpPrevEditPara(TX* text);
BOOL TXAPI_(342) txJumpNextEditPara(TX* text);
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);
BOOL TXAPI_(875) TXHIGH memClipCopy(LPVOID pmem,DWORD cbsize,HCLIP hclip,int fClip);
DWORD TXAPI_(876) TXHIGH memClipPaste(LPVOID pmem,HCLIP hclip);
wchar* TXAPI_(349) txGetFileExtW(TX* text);
IFILE TXAPI_(350) txGetAddress(TX* text);
IFILE TXAPI_(351) txGetAddressSelectTop(tx *text);
IFILE TXAPI_(352) txGetAddressSelectEnd(tx *text);
void TXAPI_(812) txJumpSelectTop(TX* text);
void TXAPI_(813) txJumpSelectEnd(TX* text);
int TXAPI_(790) txSelectGetMode(TX* text);
IFILE TXAPI_(353) txGetSelectLen(TX* text);
IFILE TXAPI_(354) txGetLineTop(TX* text);
IFILE TXAPI_(355) txGetLineTail(TX* text);
void TXAPI_(356) txDispCursor(TX* text);
void TXAPI_(357) txDispLocate(TX *text);
void TXAPI_(358) txSetUndisp(tx *text);
BOOL TXAPI_(359) txSetDisp(tx *text);
BOOL TXAPI_(360) TXAPIBASE txIsClipInPara(tx *text);
void TXAPI_(361) txSetLy(tx *text,int ly);
IFILE TXAPI_(362) TXHIGH txGetParaEnd(tx *text);
IFILE TXAPI_(902) TXHIGH txGetParaContentEnd(TX* text);
BOOL TXAPI_(363) TXHIGH txClipCopy(tx *text,IFILE cliptop,IFILE clipend,HCLIP hclip,int _clipkind);
BOOL TXAPI_(364) TXAPIBASE TXHIGH_THROUGH txIsCurFree(tx *text);
void TXAPI_(365) txDispAll(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);
void TXAPI_(372) TXHIGH_THROUGH txFlushLx(TX* text);
BOOL TXAPI_(373) txSelectQuit(tx *text);
BOOL TXAPI_(912) txSelectGetPrev(TX* text);
void TXAPI_(374) txSetLyCenter(tx *text);
int TXAPI_(375) txPrevLineN(TX* text,int n);
int TXAPI_(376) txNextLineN(TX* text,int n);
IBUFF TXAPI_(377) TXHIGH txGetCharSize(TX* text,IBUFF off);
void TXAPI_(378) txFlushCxBase(TX* text);
wchar* TXAPI_(379) txGetTitleFilenameW(TX* text);
wchar* TXAPI_(380) txGetTitleFilenameFullW(TX* text);
BOOL TXAPI_(381) TXCMDBASE txuiConvertChar(TX* text);
void TXAPI_(382) txApfInsertHR(TX* text);
BOOL TXAPI_(383) TXCMD txuiApfConfig(TX* text);
BOOL TXAPI_(384) TXCMD TXUI txuiQuote(TX* text);
BOOL TXAPI_(385) TXCMDBASE txClipboardAddCopy(TX* text);
BOOL TXAPI_(386) TXCMDBASE txClipboardAddCut(TX* text);
void TXAPI_(393) GetWorkRect(RECT *r);
int TXAPI_(394) txJumpLx(TX* text,int lx);
BOOL TXAPI_(395) txSearchContinue(TX* text);
BOOL TXAPI_(396) txSearchContinuePrev(TX* text);
BOOL TXAPI_(397) txSearchContinueModal(TX* text);
void TXAPI_(596) txSetSearchContinue(TX* text,mchar* szFind,SEARCHMODE searchmode);
BOOL TXAPI_(398) uiSelectFolderW(wchar wszfilename[CCHPATHNAME],wchar* wszCaption);
BOOL TXAPI_(803) uiSelectFolder(mchar szfilename[CCHPATHNAME],mchar* szCaption);
BOOL TXAPI_(399) txDownBuff(TX* text);
BOOL TXAPI_(400) txUpBuff(TX* text);
BOOL TXAPI_(401) clipClear(HCLIP hclip);
BOOL TXAPI_(402) TXCMDBASE txuiRefer(TX* text);
mchar* TXAPI_(403) txWzkeyToSzkey(TX* text,WZKEY wzkey,mchar szkey[CCHKEY]);
mchar* TXAPI_(404) szkeyToStr(mchar szkey[CCHKEY],mchar szstr[CCHWORD]);
void TXAPI_(405) txSetUndispEdit(TX* text);
BOOL TXAPI_(406) txSetDispEdit(TX* text);
int TXAPI_(407) txGetLxLineEnd(TX* text);
int TXAPI_(408) txGetLxLineTail(TX* text);
int TXAPI_(164) txIdmExec(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廃止
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);
#ifdef __TXC__ // 互換
HWND TXAPI_(847) txGetNextEditor(TX* text);
BOOL TXAPI_(885) txInit(TX* text,mchar* szfilename);
#endif
//##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]; // 検索パス
} FOLDER_WALK;
int folderWalk(FOLDER_WALK* walk,wchar* wszPath);
//##汎用スタイルシート
//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);
//##base window
#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
//##見出し関連
int headline_uistyle(HEADLINE_SET* context);
void txHeadlineFree(TX* text);
void txHeadlineInit(TX* text);
BOOL TXAPI_(837) txHeadlineSearchNext(TX* text);
BOOL TXAPI_(836) txHeadlineSearchPrev(TX* text);
BOOL txIbuffHeadlineGetContentPrim(TX* text,IBUFF ibuff,int iHeadline,mchar* szbuff,int cchbuff);
BOOL txHeadlineGetContentEx(TX* text,mchar* szbuff,int cchbuff);
int txHeadlineMatchStr(TX* text,IBUFF ibuff);
BOOL txHeadlineGet(TX* text,int iHeadline,mchar sz[CCHHEADLINE]);
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 TXAPI_(868) macroExec(mchar* szMacro,TX* text);
#ifndef __TXC__
//##APF - 自動整形
extern BBOOL _fApfNameSymbol; //WCE1.01 980504 "名前>"を整形するか?
extern mchar _szLineTop[];
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);
//##toolbar
#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);
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
//##縦書き
int VX(TX* text,int y);
int VXP(TX* text,int y);
//##設定の一覧
#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);
//##文字列関数群
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* TXAPIBASE strGetWordTopLch(mchar* szStr,int lch);
int yearAdjust2000(int year);
int atoi2(mchar* p);
int atoiLen(mchar* p,int len);
//## internal text api
extern BBOOL _foverwriting;
BOOL lfSet(TX* text,LOGFONT* lf);
void FreeFont(TX* text);
void txFlushFont(TX* text);
void txFlushWidth(TX* text);
void InitDC(TX* text);
void TermDC(TX* text);
void OpenDC(TX* text);
void CloseDC(TX* text);
HWND txGetHwndtext(TX* text);
IBUFF SearchParaTop(LPBYTE buff,IMEM off,IMEM _size);
IBUFF SearchParaTopEx(LPBYTE buff,IMEM off,IMEM size,IBUFF ibuffAtError);
IBUFF SearchParaEnd(LPBYTE buff,IMEM off,IMEM _size);
int checkLy(TX* text,int ly);
void txCheckWidthTab(TX* text);
void DispLine(TX* text,int ly,IBUFF off,IBUFF linesize,NPARA npara);
void DispNull(TX* text,int ly);
#define txSetUndispSilent(text) txSetUndisp(text)
#define txSetDispSilent(text) txSetDisp(text)
void tyFlush(TX* text);
void DispLineNo(TX* text,int ly,NLINE nLine,NPARA npara,NPAGE npage,IBUFF off);
int hvGetCxClient(TX* text);
int hvGetCyClient(TX* text);
NPARA GetNparaFromOffset(TX* text,IBUFF offset);
int txGetCurCx(TX* text);
BOOL txFlushBase(TX* text);
void DispFlushClipBox(TX* text);
void TXHIGH_THROUGH txSetLyUndispEx(tx *text,int ly);
UINT txFormChar(TX* text,mchar* str,UINT offset);
BOOL txJumpCharTop(TX* text);
void sharefileOpen(TX* text);
BOOL sharefileClose(TX* text);
BOOL sharefileLoadAllClose(TX* text);
void SetReadAll(TX* text);
void FlushDispLines(tx *text,int lines0,int lines,int nLf);
BOOL undoGetEditAble(TX* text);
int JumpLineEnd(TX* text);
void ScrollY(TX* text,int lyTop,int lyEnd,int dy);
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 TXHIGH_THROUGH _txFlushCury(TX* text,BOOL fTail);
BOOL TXHIGH_THROUGH txJumpXPrim(TX* text,int x);
BOOL SelectQuit(TX* text);
BOOL txSelectLineCur(TX* text);
BOOL TXHIGH txReadAll(TX* text);
int TXHIGH txOffsetToX(TX* text,IBUFF cury,IBUFF offset);
int TXHIGH txXToOffset(TX* text,IBUFF cury,int *pX,IBUFF curysize);
BOOL txJumpAddressNear(TX* text,IFILE address);
IBUFF TXHIGH InsertBytes(TX* text,mchar* str,IBUFF len,int nLf,BOOL fMove);
void TXHIGH_THROUGH FlushClipVz(TX* text,UINT fClip);
void FlushAddressAtInsert(TX *text,IFILE len);
NPARA txPrevParaN(TX* text,NPARA y);
NPARA txNextParaN(TX* text,NPARA y);
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);
void txFlushCxCyClient(TX* text);
void txFlushLcywindow(TX* text);
BOOL Init(TX* text,BOOL fTxDeleteText);
BOOL shareInit(void);
void shareTerm(void);
void shareProcEndSession(void);
BOOL textAdd(HWND hwnd);
BOOL textAddEx(HWND hwnd,WZPROCESS* arg);
BOOL textDelete(HWND hwnd);
int txGetCursorFaceInsert(TX* text);
int txGetCursorFaceWrite(TX* text);
void txFreeBitmap(TX* text);
void txFlushBitmap(TX* text);
int GetCurLines(TX* text,IBUFF off,int nLf);
BOOL frametextAdd(TX* text,wchar* wszCmdLine);
BOOL frametextSetTextFree(TX* text);
int frametextGetTextCount(void);
HWND isopenW(wchar *path);
BOOL cmdlineAnalyzeW(CMDLINECONTEXT* cc,wchar* szcmdline,int nCmdShow);
BOOL IntoModal(BOOL fOutputErrorMessage);
void ExitModal(void);
void ehHwndSetDisp(TX* text,RECT* rWork,BOOL fDisp);
int GetWidthCx(TX* text,IBUFF offset,NPARA npara,int nClm);
int GetPosLeft(TX* text,IBUFF offset,NPARA npara,BOOL fPrinter);
BOOL CALLBACK dlgprocConvertChar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
void dialogAddConvertChar(HDIALOG hd,CCCONTEXT* ccc);
void ccToCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
void ccFromCcc(CHARCONVERT* cc,CCCONTEXT* ccc);
BOOL dialogaAutoFilename(TX* text,mchar* szfilename,DWORD mode);
#define AFN_SILENT 0x0001
#define AFN_REFER 0x0002
#define AFN_DETAIL 0x0004
int clmsToTclm(mchar* szClms,mchar* tClm,int cchClm,int iClm,int maxClm);
mchar* clmsFromTclmAlloc(mchar* tClm,int cchClm,int iClm,int maxClm,mchar* szFirstClm);
void sprintfAfnEx(mchar* szdst,mchar* szAf,TX* text,BOOL fSkipTopClm);
BOOL uiOpenHistFile(void);
BOOL txuiInsertHistSearch(TX* text);
BOOL txuiInsertHistCopy(TX* text);
BOOL txuiInsertHistStr(TX* text);
BOOL txuiInsertDelete(TX* text);
BOOL txuiInsertDate(TX* text);
BOOL txuiTextInfo(TX* text);
BOOL txSaveEh(TX* text);
int txGetCaretCx(TX* text);
void txFreeColor(TX* text);
void txSetColorReverse(TX* text,BOOL fReverse);
BOOL IsClose(TX* text);
BOOL txCreateWindow(TX* text);
void undoAddAutoForm(TX* text,BOOL fEnd);
void FlushScrollBar(TX* text);
BOOL ListBox_SetDeletedFromUndo(HWND hctrl,TX* text);
int clmFromLy(TX* text,int ly);
int clmGetX(TX* text,int iClm);
int clmGetY(TX* text,int iClm);
BOOL txuiInsertTemplate(TX* text);
BOOL txuiMemo(TX* text);
BOOL txuiSearch(TX* text);
BOOL txuiSearchSet(TX* text);
void txInitSearchContinueCB(TX* text);
BOOL txSelectToMemo(TX* text);
BOOL TXCMDBASE uiInsertControl(TX* text);
BOOL txOutlineOpen(TX* text);
BOOL txOutlineOpenEx(TX* text,mchar* szCaption);
void txOutlineClose(TX* text);
BOOL pwzIcon(void);
HWND pwzFiler(void);
HWND pwzGrep(void);
BOOL pwzMemo(void);
HWND pwzMail(void);
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 clipboardToMemo(void);
BOOL Exit(void);
int txIdmExecEx(TX* text,int idm,int nRepeat,BOOL keymacro_fAdd);
#define TXIDM_KEYMACRO_ADD 0x01
#define TXIDM_PRIM 0x02
void txDoCaption(TX* text);
void txOpenNewInstance(TX* text,BOOL fPost);
BOOL txGrepTagJump(TX* text);
void txNew(TX* text,BOOL fNewProcess);
BOOL txuiNew(TX* text);
void _txFlushMenu(TX* text,BOOL fShow);
mchar* GetFind(void);
void SetFind(mchar* szfind);
void uiHelp(int idStartHeadline);
void txFlushPreviewW(TX* text,wchar* wszfilename);
void txFlushPreview(TX* text,mchar* szfilename);
void SendMessageCmdline(HWND hwnd,wchar* wszcmdline);
BOOL txCompletePrev(TX* text);
BOOL txCompleteNext(TX* text);
void txRulerFlushDisp(TX* text);
void txAddRefer(TX* text,IFILE adr);
BOOL kcFromSJIS(TX* text,int kc);
void kcToSJISEx(TX* text,int kc);
int kcDetect(TX* text);
BOOL undoClear(TX* text);
BOOL txJumpThp(TX* text,mchar* szHeadline);
BOOL undoGetAble(TX* text);
BOOL redoGetAble(TX* text);
IFILE txGetWordTailForSelect(TX* text);
IFILE txGetWordTopForSelect(TX* text);
mchar* pwzGetVersion(void);
int lyToYClm(TX* text,int ly);
int txuiCloseEvery(TX* text,HWND hwndbase);
void txReflectCc(TX* text,CMDLINECONTEXT* pcc,BOOL fProfile);
void txSetImeAtOpen(TX* text);
BOOL mySHGetShortcutTarget(wchar* wszfilename,wchar* wsztarget,int cchTaraget);
int txGetXAlign(TX* text,IBUFF off,IBUFF linesize,int align,int cxWidth);
int txchWidth(TX* text,TXCHAR ch);
BOOL geneReadText(TX* textTarget,int igene,TX* text);
int _SearchNext(TX* text,mchar *szFind,DWORD searchmode,int lchFind);
void txOutlineAdjustNparaChange(TX* text,long nparaD);
void outlineJumpCur(OUTLINECONTROL* outline);
void paraatrtextTerm(TX* text);
BOOL paraatrtextGetEdit(TX* text,NPARA npara);
NPARA paraatrtextGetCount(TX* text);
PARAATR_TEXT* paraatrtextGetRecord(TX* text,NPARA npara);
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 SelectDeleteBox(TX* text);
BOOL clipPush(HCLIP hclip,mchar* lpData,DWORD cbData);
BOOL ClipPasteBox(TX* text,mchar* pstr,IBUFF cbClip);
void txSetConfigDefaultDev(TX* text,mchar* szext);
BOOL imgCreateDIB(IMGSET* img,int cx,int cy,int bits);
BOOL imgSave(IMGSET* img,BOOL fCreateAlways);
void imgFreeContents(IMGSET* img);
BOOL txGetMultiClm(TX* text);
int txGetNclm(TX* text);
int TXAPI systemfontGetCx(void);
int TXAPI systemfontGetCy(void);
int TXAPI dtcx(int dtcx);
int TXAPI dtcy(int dtcy);
LRESULT txMaileditNotify(TX* text,UINT message,LPARAM lParam);
int GetTextTurn(HDC hdc,tchar* sz,int lchSz,int cx);
BOOL memJisToSjis(mchar* sz);
BOOL _lwriteEncodeBase64(HANDLE hfDst,HANDLE hfSrc,IFILE size);
#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
BOOL kcToSJIS(TX* text,int kc,int mode);
BOOL sockwzNew(void);
BOOL sockwzDelete(void);
void txFlushWindow(TX* text);
void TXAPI txKanaToJkata(TX* text);
BOOL TXAPI txQuoteEx(TX* text,mchar* szQuote,int mode);
#define TXQUOTE_SELECT 0x01 // 範囲選択されてなかった時でも選択状態にする
BOOL iskanjifont(mchar *lfFaceName);
mchar* strSkipRe(mchar* p,int* pnRe);
#if WINDOWSCE
BOOL TextOut(HDC hdc,int x,int y,LPCTSTR lpString,int cbString);
BOOL IsIconic(HWND hwnd);
HWND GetDesktopWindow(void);
#endif
void myRectangle(HDC hdc,int left,int top,int right,int bottom);
UINT ch_jis2sjis(UINT ch);
int txCharGetWidth(TX* text,TEXTCHAR ch);
int txCharGetWidthKanji(TX* text,TEXTCHAR* p);
void txFlushKeyword(TX* text);
int clmGetLy(TX* text,int iClm);
BOOL forkPwzTermSingle(wchar* wszcmdline);
BOOL txuiRegisterWord(TX* text,HWND hwndParent);
void txMailheaderRead(TX* text);
void maileditpopupOpenSubject(MAILEDIT* mailedit);
void maileditpopupClose(MAILEDIT* mailedit);
BOOL maileditOnSyskeydown(TX* text,WPARAM wParam);
BOOL maileditOnTab(TX* text);
BOOL txuiCheckMailedit(TX* text,BOOL fUi);
void mailheaderSetWindowPos(TX* text,RECT* r);
BOOL _tapiTerm(BOOL fAtExist);
int txfTagNameGetLch(TEXTCHAR* pName);
BOOL wfilenameIsLocation(wchar* wszfilename);
int txSetupDispLine(TX* text,IBUFF cury);
BOOL txGetScrollBarPreviewH(TX* text);
int txLpGetCxPaper(TX* text);
void DispLineNull(TX* text);
BOOL txLpAddRate(TX* text,int d);
BOOL txInsertFileWztext(TX* textInsert,wchar* wszfilename,int mode);
void txFontsetcacheTerm(TX* text);
void fontsetSetText(TX* text,FONTSET* fontset);
void txFontsetGet(TX* text,FONTSET* fontset);
void fontsetFlush(TX* text,FONTSET* fontset);
void logfontSetup(LOGFONT* lf,mchar* lfFaceName,int lfHeight,HDC hdc);
BOOL txLpConfigtextRead(TX* text);
mchar* configGetName(CONFIG* config,int index);
void txLpConfigtextWrite(TX* text);
void txSetColorTextForce(TX* text);
void txSetupCyLine(TX* text,IBUFF cury,IBUFF curysize);
void ScrollPreviewY(TX* text,int yViewportOrgNew);
TX* hwndbaseIsMailer(void);
TX* hwndbaseIsTerm(void);
TX* hwndbaseIsHelp(void);
BOOL txPeekWM_CHAR(TX* text);
BOOL txPeekWM_SYSCHAR(TX* text);
BOOL txSelectToMemoEx(TX* text,mchar* szCaption);
BOOL txSelectOverwrite(TX* text);
BOOL txSelectGetOverwrite(TX* text);
void TXAPI TXCMD txTabToSpace(TX* text);
void TXAPI txDeleteTailSpace(TX* text);
IFILE txGetUrlTopEnd(TX* text,BOOL fTop);
BOOL txAutosaveGetOverwrite(TX* text);
#define txAutosaveGetBackup(text) (!txAutosaveGetOverwrite(text)) //PWZ2BETA0.3 980510 new
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 txfConvert(TX* text,int modeSaveAs,HANDLE hf,TX* textQuote);
mchar* txfGetSubject(TX* text,mchar* buff,int cch);
void txSetTml(TX* text);
BOOL txSetTmlModal(TX* text);
void txSetGetCommonfont(TX* text,BOOL fSet);
void sbSetupConfigName(HSTRBLK sb);
void TXAPI sbReduce(HSTRBLK sb);
void txMailtextToPlaintext(TX* text);
void txPlaintextToMailtext(TX* text);
void txPlaintextToWordtext(TX* text);
void txFlushTable(TX* text);
void txOnCaretGet(TX* text,BOOL fGet);
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 txVarSetString(TX* text,mchar* szName,mchar* szContent);
mchar* txVarReadString(TX* text,mchar* szName,mchar* szDefault);
typedef struct {
IFILE adr;
IFILE texttop;
int ly;
} TEXTTOPEXIT;
void txResetTexttopEnter(TX* text,TEXTTOPEXIT* context);
void txResetTexttopExit(TX* text,TEXTTOPEXIT* context);
BOOL txIsCurscreenDispEof(TX* text);
TX* hwndMailerGetText(HWND hwnd);
void stdlibInit(void);
//
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);
void myCheckMenuItem(HMENU hmenu,int idm,BOOL fCheck);
void myEnableMenuItem(HMENU hmenu,int idm,BOOL fEnable);
BOOL GetEnableMenuItem(HMENU hmenu,int idm);
BOOL forkstdPrimW(wchar* wszfilename,wchar* wszsw,int modeFileOpen); //WZ3.90F 980820
IBUFF memGetCharSize(mchar* p,mchar* pEnd,SEARCHRE searchre);
mchar* memGetPrevChar(mchar* p,mchar* pTop,mchar* pEnd,SEARCHRE searchre);
TX* textmsgopen(mchar* szfilename,mchar* szName);
BOOL textmsgclose(TX* text);
BOOL txMsghdrGetsetStringW(TX* text,mchar* szHeader,wchar* szbuff,int wcchbuff,BOOL fSet);
BOOL textmsgDel(TX* text,mchar* szName);
void textmsgAdd(TX* text,mchar* szName);
BOOL textmsgSetNull(TX* text,mchar* szName);
BOOL textmsgNext(TX* text);
void txSetTexttopCur(TX* text);
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 TXHIGH txIbuffIsMsgsepa(TX* text,IBUFF ibuff);
void txConfigFlushFilekind(TX* text);
TX* textmsgopenWzapp(mchar* szName);
BOOL textmsgGetRecord(TX* text,mchar* szName);
BOOL textmsgSearch(TX* text,mchar* szName);
void wi10toa(int value,wchar* buff);
long watoi10(wchar* buff);
void lpSetDefaultConfig(LPRINT* lp);
BOOL txLpReadMsghdr(TX* text,LPRINT* lp);
mchar* idmToString(mchar szCmd[CCHWORD],int idm);
mchar* idmToSzEmacsFunction(int idm);
void txKeylistOutputEmacs2Stroke(TX* textDst);
void __on_txFrameNewEmacs(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 txuiHtmlInsertTable(TX* text);
void txHtmlCharOp(TX* text,int idm);
void txHelpOpenExtend(TX* text,int iHelp);
void cmdlineDeleteOneFilenameW(wchar* szcmdline);
int mmtextToPoints(HDC hdc,int mmtext);
BOOL TXHIGH_COND txIsCurMsgsepa(TX* text);
void rectReWork(RECT* r);
BOOL txfAnchorContextHelp(DWORD anchor,RECT* r);
BOOL IsOwnered(HWND hwndParent,HWND hwnd);
int lpdot(TX* text);
void hwndSetFontDefault(HWND hwnd);
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);
void headlinestyleSetDefaultFont(HEADLINESTYLE* style,int iHeadline,int lfHeight);
int pointsToLpx(LPRINT* lp,int points);
void txLpWriteMsghdr(TX* text,LPRINT* lp);
BOOL TXAPI txOpenMail(TX* text,mchar* szMailAddress);
BOOL TXAPI txOpenURL(TX* text,mchar* szURL);
#if !WINDOWSCE1
BSTR ime98GetPhonetic(OLECHAR* wszKanji);
#endif
LRESULT txSendWmNotify(TX* text,int txn);
void strToRect(mchar* p,RECT* r);
BOOL txuiConfirmNewfile(TX* text,CMDLINECONTEXT* pcc,wchar* wszfilename);
BOOL txConvertForSaveAs(TX* text,int modeSaveAs,wchar* wszfilename,BOOL* pfFileout);
BOOL on_mt_txQuit(TX* text);
BOOL txJumpTagPrim(TX* text,int mode);
HWND textGetLast(void);
HWND textGetPrev(HWND cur);
HWND textGetNext(HWND cur);
HDIALOG dialogNewAbout(mchar* szAppName,mchar* szVersion);
void dialogAddAboutCopyright(HDIALOG hd);
HSTRBLK sbSetupDrive(void);
HSTRBLK sbSetupInttable(HSTRBLK sb,int* table);
HSTRBLK sbSetupLfHeight(HSTRBLK sb);
HSTRBLK sbSetupWeight(HSTRBLK sb);
BOOL txuiSearchlist(TX* text,SEARCH_PACKET* search);
void searchoptFromSearchmode(SEARCHOPT* opt,SEARCHMODE searchmode);
void wndSetEnableSearchOption(HWND hwnd);
void dialogAddSearchopt(HDIALOG hd,SEARCHOPT* opt,int mode);
SEARCHMODE searchoptToSearchmode(SEARCHOPT* opt);
BOOL txLinkhistJumpPrevGetAble(TX* text);
BOOL txLinkhistJumpNextGetAble(TX* text);
BOOL txLinkhistJumpPrev(TX* text);
BOOL txLinkhistJumpNext(TX* text);
BOOL txuiJumpHist(TX* text);
mchar* txcGetEventMacro(void);
BOOL hbitmapGetSize(HBITMAP hBitmap,SIZE* s);
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);
BOOL hwndControlProcWmKey(HWND hwnd);
BOOL imouseGetEnable(void);
BOOL messageIsMouseWheel(UINT message);
BOOL imouseGetPageTurn(void);
int imouseGetScrollLines(WPARAM wParam);
void txSetFileShare(TX* text,int modeFileShare);
int mmtextToLpx(TX* text,int mmtext);
void dialogaErrorOpenDialog(void);
IBUFF DeleteTailReturn(mchar* buff,IBUFF len);
BOOL CreateDirectoryForce_W(wchar* wszpath,LPVOID lpsa);
int statusbarGetPaneWidth(HWND hwndStatusbarWin,mchar* szString);
int statusbarSetSimple(HWND hwndStatusbarWin,BOOL fSimple);
int statusbarGetHeight(HWND hwndStatusbarWin);
BOOL my_isXdigiti(int c);
BOOL txBuffExpand(TX* text,IBUFF size);
void txFlushToolbar(TX* text);
void txInsertConfigtextNone(TX* text);
void txConvertMailTemplateToPlain(TX* text,TX* textDest,TX* textQuote);
void dialogAddAboutTimeLimit(HDIALOG hd);
int lpxToMmtext(TX* text,int lpx);
HWND hwndMailerGetStatusbar(HWND hwnd);
void mailerOpenMenuMouseRMessage(TX* text);
BOOL txuiSearchList(TX* text,SEARCH_PACKET* search);
BOOL txMultiWindow(TX* text,BOOL fSaveAddress);
void jumphistAdd(TX* text);
BOOL txAutosaveAtOpenEx(TX* text,BYTE autosaveAtOpen);
BOOL txGetBackupFilenameW(TX* text,wchar* wszfilename,wchar dst[CCHPATHNAME]);
void txPrevWindow(TX* text);
void txNextWindow(TX* text);
BOOL txuiIdmSelect(TX* text);
BOOL uiCustToolbar(mchar* szApp,mchar* szName);
BOOL txuiCustKey(TX* text);
void txKeylist(TX* text);
BOOL txIsCurDigitH(TX* text);
void txSetCurDigitL(TX* text);
BOOL txIsCurDigitL(TX* text);
void txSetCurDigitH(TX* text);
BOOL TXAPI txuiFileOpenReadVz(TX* text);
BOOL txuiSaveMacroFile(TX* text);
BOOL txuiJump(TX* text);
BOOL txJumpPrev(TX* text);
BOOL txJumpNext(TX* text);
BOOL txuiConvertText(TX* text);
int txGetLyCenter(TX* text);
BOOL txuiSort(TX* text);
BOOL txSwitchBinedit(TX* text);
BOOL txuiProject(TX* text,int mode);
BOOL txuiProof(TX* text);
BOOL txuiReWording(TX* text);
BOOL txuiSpellCheck(TX* text);
BOOL txuiSpellCheckCur(TX* text);
void txLpSetRateAuto(TX* text,int mode);
BOOL txLpSetRate(TX* text,int pvRate);
int txLpGetCyPaper(TX* text);
void txLpToolbarFlush(TX* text);
void txLpToolbarNotify(TX* text,int cmd);
BOOL txuiLpStyleDetail(TX* text);
BOOL txfUiFootnoteInsert(TX* text);
BOOL txfUiFootnoteOp(TX* text);
int txfTagInsertWithAtr(TX* text,TEXTCHAR* szTagName,TEXTCHAR chTagKind,TEXTCHAR* szAtr);
void txfFootnoteInsert(TX* text,int number,TX* text2);
void imgatrToString(IMGATR* atr,TEXTCHAR szAtr[CCHPATHNAME * 2]);
BOOL txuiSearchFunction(TX* text);
BOOL TXCMDBASE uiComplete(TX* text);
BOOL TXCMDBASE windowTileOverlap(void);
BOOL TXCMDBASE windowTile(void);
BOOL TXCMDBASE windowTileV(void);
BOOL TXCMDBASE windowTileH(void);
BOOL TXCMDBASE windowTileUndo(void);
BOOL txuiRegFiletypeConnection(TX* text);
BOOL txMaileditorAttachW(TX* text,wchar* wszfilename,BOOL fNote);
#if !WINDOWSCE
MT* txFindMtHwndbase(TX* text,HWND hwnd);
#endif
void SetExtRegTml(BOOL fSet);
void SetExtRegTxt(BOOL fSet);
void SetExtRegUnknown(BOOL fSet);
void SetExtRegTextsPwz(void);
void txProjectOpen(TX* text);
void txCheckFiletimeActive(TX* text);
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);
int TXAPI GetWindowsPlatform(void);
void wzoleTerm(void);
BOOL __ddeDelete(void);
void listRegister(void);
#if WINDOWSCE
#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)
#else
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);
#endif
void hvRect(TX* text,RECT* r);
void hvRectBack(TX* text,RECT* r);
BOOL rectCheck(RECT* r);
IBUFF txIbuffFromLy(TX* text,int ly,IBUFF* pCurysize);
BOOL txIbuffIsUrl(TX* text,IBUFF ibuff);
BOOL txIbuffJumpLink(TX* text,IBUFF ibuff);
void keylistCreate(void);
BOOL TXAPI CommandExec(mchar* szline);
int zentohanAlpha(mchar* p);
BOOL txIbuffIsFunctionDefine(TX* text,IBUFF ibuff);
BOOL txuiSearchGet(TX* text,SEARCH_PACKET* search);
BOOL txSearchTabbeam(TX* text,SEARCHMODE searchmode);
void shStartNetwork(void);
DIRECTORYATR* txFlushDirectoryAtr(TX* text);
int kcDetectEx(TX* text,BOOL fInternal);
void txpcodeNotifyTextOpen(TX* text);
void txFreeKeyword(TX* text);
void txReleaseHookWndprocAll(TX* text,TXWNDHOOK* root);
void txCloseToolbar(TX* text);
int lpcxGetFrameLeft(TX* text,int iHeadline);
int lpcxGetFrameRight(TX* text,int iHeadline);
int lpcxGetFrameLeftRight(TX* text,int iHeadline);
int txCharGetWidthStr(TX* text,TEXTCHAR* str,int lch);
BOOL wpathCreateDirectoryPath(wchar* wszfilename);
BOOL TXAPI wpathGetRoot(wchar* wsz);
BOOL TXAPI pathGetRoot(mchar* sz);
IFILE ClipCopyBoxToHglobal(TX* text,IFILE cliptop,IFILE clipend,HGLOBAL hGlobal);
BOOL oleclipCopy(CLIPITEM* clipitem);
void searchoptSetupMode(SEARCHOPT* opt);
#if !WINDOWSCE
HBITMAP toolbaritemLoadBitmap(TOOLBARITEM* item);
#endif
void txFlushMenu(TX* text);
void txDoCaptionEx(TX* text,HWND hwndbase,int idMt);
BOOL wpathGetFfd(wchar* wszfilename,WIN32_FIND_DATAW* ffd);
void wndtxSetMoving(HWND hwnd,BOOL fSet);
TX* txGetKeywordText(TX* text);
BOOL fileIsWztext_W(wchar* wszfilename);
#if WZFUNC_TEXTCFGBIN
void shSetConfigChanged(mchar* szName);
#else
#define shSetConfigChanged(szName)
#endif
BOOL speak(LPCSTR lpszText,UINT fuType);
void txSpeakText(TX* text,UINT fuType,BOOL fTxf);
void imeSetPosPrim(TX* text);
BOOL wordicGetExist(void);
BOOL txDicWord(TX* text);
#endif // __TXC__
#endif // RC_INVOKED
#endif //__PWZ_H