自分で用意したmesboxの最大文字数やスタイルを
わざわざ取得する意味がわかりませんが……
HSPのオブジェクトのスタイルという限定された状況では
mesboxにしか使えませんがモジュール化してみました。
最大文字数に関してはVista以降で無いと使えません。
#module
#define EM_GETLIMITTEXT 0x00D5
#uselib "user32.dll"
#cfunc GetWindowLong "GetWindowLongA" int, int
#func GetClassName "GetClassNameA" int, var, int
// mesboxのスタイルを取得
#defcfunc GetMesBoxStyle int _objid
sdim clsname, 260; // クラス名用変数の初期化
wstyle = 0; // ウィンドウスタイル用変数の初期化
style = 0; // mesboxのスタイル
GetClassName objinfo(_id, 2), clsname, 260; // クラス名取得
wstyle = GetWindowLong(objinfo(_id, 2), -16); // スタイル取得
if( clsname == "Edit" ) {
if( wstyle & 4 ) { // mesbox
if( wstyle & 0x0800 ) {
style = 0; // 書き換え不可
}
else {
style = 1; // 書き換え可
}
if( wstyle & 0x00100000 ) {
style += 4; // 横スクロールバー有
}
}
}
return style;
// mesboxの最大文字数を取得(これはinputでも可)
#defcfunc GetMesBoxLimit int _objid
sendmsg objinfo(_id, 2), EM_GETLIMITTEXT, 0, 0; // Vista以降
return stat;
#global
// 以下サンプル
pos 0, 0;
mesbox1 = "";
mesbox mesbox1, 100, 100, 5, 100;
objid = stat;
mes "mesboxのスタイルは "+GetMesBoxStyle(objid)+"";
mes "mesboxの最大文字数は "+GetMesBoxLimit(objid)+"";
stop;