欲しいモジュールは
「HSP "欲しい機能の名前" モジュール」と検索して、
既存資産を有効活用しましょう。
タブコントロールのタブサイズは
TCM_SETITEMSIZEメッセージをタブコントロールにsendmsgしてあげれば良いみたいです。
但し、lparamに入れる値が
HIWORD: 高さ
LOWORD: 幅
と、分かりにくいと思うので、上記の検索ワードで出てくるKpanさんのモジュールにタブサイズ変更の命令だけ増やしてみました。
; 超低機能なタブコントロール作成モジュール (by Kpan)
#module
#uselib "user32"
#func GetClientRect "GetClientRect" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetParent "SetParent" int, int
#uselib "gdi32"
#cfunc GetStockObject "GetStockObject" int
; CreateTab p1, p2, p3, p4
; タブコントロールを設置します。statにタブコントロールのハンドルが
; 返ります。
; p1〜p2=タブコントロールのX/Y方向のサイズ
; p3(1)=タブの項目として貼り付けるbgscr命令の初回ウィンドウID値
; p4=タブコントロールの追加ウィンドウスタイル
#deffunc CreateTab int p1, int p2, int p3, int p4
winobj "systabcontrol32", "", , $52000000 | p4, p1, p2
hTab = objinfo(stat, 2)
sendmsg hTab, $30, GetStockObject(17)
TabID = p3
if TabID = 0 : TabID = 1
dim rect, 4
return hTab
; InsertTab "タブつまみ部分の文字列"
; タブコントロールに項目を追加します。
#deffunc InsertTab str p2
pszText = p2 : tcitem = 1, 0, 0, varptr(pszText)
sendmsg hTab, $1307, TabItem, varptr(tcitem)
GetClientRect hTab, varptr(rect)
sendmsg hTab, $1328, , varptr(rect)
bgscr TabID + TabItem, rect.2 - rect.0, rect.3 - rect.1, 2, rect.0, rect.1
SetWindowLong hwnd, -16, $40000000
SetParent hwnd, hTab
TabItem++
return
; タブ切り替え処理用
#deffunc ChangeTab
gsel wID + TabID, -1
sendmsg hTab, $130B
wID = stat
gsel wID + TabID, 1
return
//追加
#deffunc SetTabSize int _width, int _height
sendmsg htab, $1300+41/*TCM_SETITEMSIZE*/, 0, _height<<16 | _width
return
#global
; 以下、サンプル
screen , 400, 300
syscolor 15 : boxf
; タブコントロールの設置。第3パラはbgscr命令で作成するウィンドウ
; IDの初期値です。たとえば、下のように「1」でタブの項目が4個あると
; すると、1〜4のウィンドウが使われます。「2」でタブの項目が5個とすると、
; 2〜6が使われます。別で使用するウィンドウID値と被らないよう注意。
pos 50, 50
CreateTab 300, 200, 1 //,$400/*TCS_FIXEDWIDTH*/
; タブつまみ切り替え時に利用するタブコントロールのハンドルを取得
hTabControl = stat
// 追加
// 幅の変更を有効にするには、CreateTab の第4引数に$400/*TCM_SETITEMSIZE*/を指定してください。
SetTabSize 150,50 // ← SetTabSize 幅,高さ です。
; このサンプル上ではbgscr命令で作成したウィンドウID値「1」が使われ
; ます。
InsertTab "AAA"
; bgscr命令上にオブジェクトを置く感覚で処理を書きます。
pos 50, 50 : mes "A"
InsertTab "BBB"
pos 50, 50 : mes "B"
InsertTab "CCC"
pos 50, 50 : mes "C"
; bgscr命令ウィンドウのID値「4」が使われます。
InsertTab "DDD"
pos 50, 50 : mes "D"
; タブの項目追加が終わったら、タブ内に貼り付けたbgscr命令が非表示
; 状態になっているので、表示されるようgsel命令を指定。CreateTab命令で
; 指定したウィンドウIDの初期値と同じ値を指定します。
gsel 1, 1
; 元々のscreen命令のウィンドウID 0に描画先を戻します。
gsel
; タブ項目切り替え処理時のメッセージ (WM_NOTIFY)
oncmd gosub *notify, $4E
stop
; タブ項目切り替え処理部分です。
*notify
dupptr nmhdr, lparam, 12
if nmhdr.0 = hTabControl & nmhdr.2 = -551 {
ChangeTab
; 元々のscreen命令のウィンドウID 0に描画先を戻します。
gsel
}
return
どんなことやってるかはスクリプトを見てみてください。
//どういう風に検索すれば自分のやりたい事が出来る様になるか、分かってくると楽しいですよ(^^)v
//今回だと上記の検索ワードの他に「タブコントロール 高さ 設定」で
//
http://mrxray.on.coocan.jp/Halbow/Chap29.html
//にたどり着いて
//「TCM_SETITEMSIZE = TCM_FIRST + 41; // タブの幅と高さを設定」という情報を見つけて
//「TCM_SETITEMSIZE」で検索して使い方を見つけた。
//という流れですね。