全然更新しないブログ
HSPメモ帳
ツールバーの作成方法
「ツールバーの作成」
- 作成方法 其の壱 「CreateToolbarEx」関数
- 1.「InitCommonControls」関数で前準備
- コモンコントロールダイナミックリンクライブラリ(DLL)が、
ロードされた状態にあることを保証します。
//例)
#uselib "comctl32.dll"
#func InitCommonControls "InitCommonControls"
InitCommonControls - 2.「CreateToolbarEx」関数でツールバーを作成
- //例)引数が13もあります
#uselib "comctl32.dll"
#func CreateToolbarEx "CreateToolbarEx" int,int,int,int,int,int,sptr,int,int,int,int,int,int
引数
①親ウィンドウのハンドル
②ツールバーのウィンドウスタイル
③ツールバーのID
④ボタンイメージの数
⑤モジュールのインスタンス
⑥ビットマップイメージのID
⑦ボタン情報(TBBUTTON構造体)のポインタ
⑧ボタンの数
⑨ボタンの幅
⑩ボタンの高さ
⑪ボタンイメージの幅
⑫ボタンイメージの高さ
⑬TBBUTTON構造体のサイズ
戻り値(stat)にツールバーのハンドルが返ります。
システム変数を使用して①に「hwnd」⑤に「hinstance」を指定。
②のウィンドウスタイルは
「WS_CHILD:(0x40000000)」「WS_VISIBLE:(0x10000000)」の0x50000000を指定。
③はとりあえず0を指定。
⑪、⑫は0を指定。⑬は20を指定。
と適当に指定します。
また、ボタンの数⑧やイメージの数④などは簡単です。
⑨、⑩もボタンのサイズを指定。
⑥はビットマップのハンドルを指定。
「LoadImage」関数で取得。
//例)
#uselib "user32.dll"
#func LoadImage "LoadImage" int,sptr,int,int,int,int
引数は6 戻り値(stat)はイメージのハンドル
①インスタンスハンドル
②ロードするイメージの文字列ポインタ
③「IMAGE_BITMAP:(0x00)」等を指定
④イメージの幅
⑤イメージの高さ
⑥「LR_SHARED:(0x8000)」「LR_LOADFROMFILE :(0x0010)」等を指定
残るは、「TBBUTTON」構造体です。
「TBBUTTON」構造体について
dim TBButton , 5 としたとき、
TBButton(0)=iBitmap //ボタンイメージのインデックス
TBButton(1)=idCommand //WM_COMMANDで使用するID
TBButton(2)=fsState(1バイト)+fsStyle(1バイト)+bReserved(1か2バイト)
fsState:「TBSTATE_ENABLED:(0x04)」等
fsStyle:「TBSTYLE_BUTTON: (0x00)」等
TBButton(3)=dwData //アプリケーション定義の値(0でも可)
TBButton(4)=iString //ボタンに使用する文字変数のポインタ
上記をボタンイメージの数だけ作成します。例えば、3つのボタンの場合、
dim TBButton , 5 , 3
とします。 - 3.「TB_AUTOSIZE:(0x0421)」でサイズ調整
- //例)
#uselib "user32.dll"
#func SendMessageA "SendMessageA" int,int,int,int
SendMessageA htoolbar , 0x0421 , 0 , 0
ツールバー使用画像 「toolbar.bmp」 96×32 作成方法 其の壱 サンプル ソースコード #uselib "comctl32.dll" #func InitCommonControls "InitCommonControls" #func CreateToolbarEx "CreateToolbarEx" int,int,int,int,int,int,sptr,int,int,int,int,int,int #uselib "user32.dll" #func LoadImage "LoadImageA" int,sptr,int,int,int,int #func SendMessage "SendMessageA" int,int,int,int InitCommonControls sdim string,260 string="toolbar.bmp" LoadImage 0,varptr(string),0,96,32,0x8010 himg=stat if himg==0 : dialog "LoadImage error" : stop dim tb , 5 , 3 tb(0,0)=0:tb(1,0)=2000:poke tb,8,0x04:poke tb,9,0x00:tb(3,0)=0:tb(4,0)=0 tb(0,1)=1:tb(1,1)=2001:poke tb,28,0x04:poke tb,29,0x00:tb(3,1)=0:tb(4,1)=0 tb(0,2)=2:tb(1,2)=2002:poke tb,48,0x04:poke tb,49,0x00:tb(3,2)=0:tb(4,2)=0 CreateToolbarEx hwnd,0x50000000,0,3,0,himg,varptr(tb),3,32,32,0,0,20 htoolbar=stat SendMessage hToolbar, 0x421, 0, 0; TB_AUTOSIZE stop
コメント ( 0 ) | Trackback ( 0 )
« ツールバーの... | ステータスバ... » |
コメント |
コメントはありません。 |
![]() |
コメントを投稿する |