> http://tsu.sakura.ne.jp/article/note/eid44.html
> 上記リンク先サイトのサンプルをレバーコントロール化し、
> 一番左のボタンにドロップダウンボタンを付けるには、
> どのようにすれば良いでしょうか。
レバーコントロールを作成し、ツールバーをレバーバンドの中に入れます。
ドロップダウンはツールボタン追加時にTBSTYLE_DROPDOWNを指定します。
上記サイトのサンプルを元にスクリプトを作ってみました。
モジュール部分は省略してあります。省略しても長いです(^_^;
// window style
#const WS_CHILD $40000000
#const WS_VISIBLE $10000000
#const WS_CLIPSIBLINGS $04000000
#const WS_CLIPCHILDREN $02000000
// common control style
#const CCS_NODIVIDER $00000040
#const CCS_NORESIZE $00000004
// rebar message
#const RB_SETBARINFO $00000404
#const RB_INSERTBAND $00000401
// rebar band info mask
#const RBBIM_SIZE $00000040
#const RBBIM_CHILDSIZE $00000020
#const RBBIM_CHILD $00000010
#const RBBIM_STYLE $00000001
// rebar band style
#const RBBS_GRIPPERALWAYS $00000080
#const RBBS_CHILDEDGE $00000004
// toolbar message
#const TB_SETEXTENDEDSTYLE $00000454
#const TB_GETBUTTONSIZE $0000043A
// toolbar button style
#const TBSTYLE_DROPDOWN $00000008
// toolbar extended style
#const TBSTYLE_EX_DRAWDDARROWS $00000001
Buttons = 6 ;// ボタンの数
ImgW = 16 ;// 画像(1つあたり)の幅
ImgH = 16 ;// 画像の高さ
ImgFn = "ico.bmp" ;// ボタン画像(横一列)
sdim teststr,64,Buttons
teststr = "あいうえお", "かきくけこ", "さしすせそ"
teststr.3 = "たちつてと", "なにぬねの", "はひふへほ"
picload ImgFn, 1
hBmp = CreateBmpObj(0, 0, ImgW * Buttons, ImgH)
// レバーバンドに乗せるツールバーを作るときは
// CCS_NODIVIDERとCCS_NORESIZEスタイルを付けないとカッコ悪い
toolbar_Create $800 | $200 | CCS_NODIVIDER | CCS_NORESIZE, ImgW, ImgH
hToolBar = stat
toolbar_AddString hToolBar, teststr, Buttons
toolbar_AddBitmap hToolBar, hBmp , Buttons
// 左側のボタンだけドロップダウンスタイルを付ける
toolbar_AddButton hToolBar, 0, 4, TBSTYLE_DROPDOWN
repeat Buttons - 1, 1
toolbar_AddButton hToolBar, cnt, 4, 0
loop
// ドロップダウンの矢印を表示できるようにする
sendmsg hToolBar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS
// レバーコントロールを作成
winobj "ReBarWindow32", "",, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CCS_NODIVIDER
hReBar = objinfo(stat, 2)
dim rbi, 3 // REBARINFO structure
rbi = 12
sendmsg hReBar, RB_SETBARINFO, 0, varptr(rbi)
// ツールバーをレバーバンドの仲間に入れる
dim rbbi, 20 // REBARBANDINFO structure
rbbi = 80
rbbi(1) = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE
rbbi(2) = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS
rbbi(8) = hToolBar
sendmsg hToolBar, TB_GETBUTTONSIZE, 0, 0
rbbi(10) = (stat >> 16) & $ffff // HIWORD(stat)
rbbi(11) = 250
sendmsg hReBar, RB_INSERTBAND, -1, varptr(rbbi)
#define WM_COMMAND $111
oncmd gosub *onCommand, WM_COMMAND
stop
*onCommand
if lparam != hToolbar : return
dialog "ボタン「"+ teststr.wparam +"」が押されました。"
return 0