情報取得のメッセージ(Ver9.35対応版)
目次−
DLL側から秀丸エディタの関数呼び出し−
情報取得のメッセージ
秀丸エディタの各種情報を取得するためのメッセージがあります。
秀丸エディタのウィンドウハンドルに対して、SendMessageにてWM_HIDEMARUINFOメッセージとパラメータを呼び出すと、適当な値が返ってきます。
秀丸エディタのウィンドウハンドルは、hidemaruhandle(n)で得られるウィンドウハンドルで、自分自身はhidemaruhandle(0)で得ることができます。
Hidemaru_GetCurrentWindowHandle関数で得ることもできます。
メッセージは以下の値を指定します。
#define WM_HIDEMARUINFO (WM_USER + 181)
WPARAMは以下の値を指定します。
#define HIDEMARUINFO_GETTABWIDTH 0
#define HIDEMARUINFO_GETSTARTCOLUMN 1
#define HIDEMARUINFO_GETSPACETAB 2
#define HIDEMARUINFO_GETMANUALTAB 3
#define HIDEMARUINFO_GETFILEFULLPATH 4
#define HIDEMARUINFO_GETUPDATECOUNT 7
LPARAMは呼び方によって意味が変わります。
HIDEMARUINFO_GETTABWIDTH
int n = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETTABWIDTH, 0 );
タブ文字の表示上の桁数を返します。2,4,8または設定された値になります。
TSVモードや自由配置モードのときはHIDEMARUINFO_GETMANUALTABを使います。
HIDEMARUINFO_GETSTARTCOLUMN
int x = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETSTARTCOLUMN, 0 );
範囲選択されている先頭位置の桁の座標を返します。タブ文字を空白に変換したり、その逆をするのに必要です。
HIDEMARUINFO_GETSPACETAB
int f = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETSPACETAB, 0 );
タブキーを押した時にタブ文字を入力するのか、その桁数相当の空白を入力するモードなのかを返します。
空白を入力するモードなら1を返します。そうでないときは0を返します。
HIDEMARUINFO_GETMANUALTAB (V8.00以降)
int mode = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETMANUALTAB, lParam );
TSVモードや自由配置モードのときのタブ位置を取得します。
lParamはMANUALTABSTRUCT構造体へのポインタを指定します。
//(C++)
struct MANUALTABSTRUCT {
UINT cb; //in, out
WORD* pw; //in, out
};
呼ぶ前にMANUALTABSTRUCT構造体にWORD配列のポインタpwとバッファサイズcbとを指定します。
//呼び方の例(C++)
MANUALTABSTRUCT ms;
WORD aw[8192];
ms.cb = sizeof(aw);
ms.pw = (WORD*)aw;
int mode = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETMANUALTAB, (LPARAM)&ms );
返り値が0のときは自由配置ではありません。HIDEMARUINFO_GETTABWIDTHで2,4,8などの固定の値を取得します。
返り値が0以外のときは、MANUALTABSTRUCT構造体にタブ位置が格納されます。
pwがタブ位置のWORD配列で、cb/sizeof(WORD)が配列の要素数です。
返り値1は自由配置モード、2はTSVモード、3はCSVモードです。
HIDEMARUINFO_GETFILEFULLPATH (V8.66以降)
int cwch = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETFILEFULLPATH, lParam );
現在開いているファイルのファイル名をフルパスで返します。
lParamには返される文字列のポインタを指定します。
あらかじめファイル名が格納可能なUnicodeで260文字分のメモリが確保されている必要があります。
//呼び方の例(C++)
WCHAR wsz[MAX_PATH];
int cwch = (int)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETFILEFULLPATH, (LPARAM)wsz );
返り値には文字数が返ります。
lParamに0を指定して呼び出すと、文字数だけを返します。
参照:
hidemaru.getFileFullPath
HIDEMARUINFO_GETUPDATECOUNT (V9.12以降)
DWORD dw = (DWORD)SendMessage( hwndHidemaru, WM_HIDEMARUINFO, HIDEMARUINFO_GETUPDATECOUNT, 0 );
キーワードのupdatecountに相当する値を返します。
updatecountの初期値は1以上です。
参照:
updatecount
HIDEMARUINFO_GETUPDATECOUNT
hidemaru.getUpdateCount