/*------------------------------------- 使用例) #include "toolbar.as" #enum CMD_NEW = 0x01 #enum CMD_OPEN #enum CMD_SAVE #enum CMD_CUTS #enum CMD_COPY #enum CMD_PAST #enum CMD_BACK #enum CMD_NEXT tbarmake 0x50000145, 200, 26 tbarbmp IDB_STD_SMALL_COLOR tbaradd STD_FILENEW , CMD_NEW ;新規作成 tbaradd STD_FILEOPEN, CMD_OPEN ;開く tbaradd STD_FILESAVE, CMD_SAVE ;上書き保存 tbaradd -1 , 0 tbaradd STD_CUT , CMD_CUTS ;切り取り tbaradd STD_COPY , CMD_COPY ;コピー tbaradd STD_PASTE , CMD_PAST ;貼り付け tbaradd -1 , 0 tbaradd STD_UNDO , CMD_BACK ;←元に戻す tbaradd STD_REDOW , CMD_NEXT ;→やり直し oncmd gosub *OnCommand, WM_COMMAND stop *OnCommand cmd = ( wparam & 0xFFFF ) if( cmd == CMD_NEW ): dialog "新規作成" if( cmd == CMD_OPEN ): dialog "",16,"" if( cmd == CMD_SAVE ): dialog "",17,"" if( cmd == CMD_CUTS ): dialog "切り取り" if( cmd == CMD_COPY ): dialog "コピー" if( cmd == CMD_PAST ): dialog "貼り付け" if( cmd == CMD_BACK ): dialog "←元に戻す" if( cmd == CMD_NEXT ): dialog "→やり直し" return ;-------------------------------------- 自作ビットマップの使用例) #include "gdi32.as" #include "toolbar.as" #enum CMD_NEW = 0x01 #enum CMD_OPEN #enum CMD_SAVE #enum IMG_NUMBER1 = 0x00 #enum IMG_NUMBER2 #enum IMG_NUMBER3 ; ツールバー用のビットマップを読み込む hBitmap = CreateDDB("imgfile.bmp") tbarmake 0x50000145, 200, 26 tbarbmp hBitmap, num, 16, 15 tbaradd IMG_NUMBER1, CMD_NEW ;新規作成 tbaradd IMG_NUMBER2, CMD_OPEN ;開く tbaradd IMG_NUMBER3, CMD_SAVE ;上書き保存 onexit *OnFinish stop *OnFinish ; ビットマップを削除 DeleteObject hBitmap stop -------------------------------------*/ #ifndef WM_COMMAND #define global WM_COMMAND 0x0111 #endif // ツールバー作成時のスタイル #define global TBSTYLE_TOOLTIPS 0x0100 ;ツールチップをつける #define global TBSTYLE_WRAPABLE 0x0200 ;複数行のツールバー #define global TBSTYLE_ALTDRAG 0x0400 ;ボタンの位置移動可 (必:CCS_ADJUSTABLE) #define global TBSTYLE_FLAT 0x0800 ;(ver4.70〜)フラットツールバー #define global TBSTYLE_LIST 0x1000 ;(ver4.70〜)文字をビットマップの右に表示 #define global TBSTYLE_CUSTOMERASE 0x2000 ;(ver4.70〜) #define global TBSTYLE_REGISTERDROP 0x4000 ;(ver4.71〜)WM_ERASEBKGND 時に NM_CUSTOMDRAW 発生 #define global TBSTYLE_TRANSPARENT 0x8000 ;(ver4.71〜)背景を透明にする // ツールバー作成時の拡張スタイル #define global TBSTYLE_EX_DRAWDDARROWS 1 ;(ver4.71〜)ドロップダウンリストボタン使用可 // ツールバー作成時のスタイル ( 各コモンコントロール共通 ) #define global CCS_TOP 0x00000001 ;親ウィンドウの上端に作成 #define global CCS_NOMOVEY 0x00000002 ;WM_SIZE で xサイズのみ変更 #define global CCS_BOTTOM 0x00000003 ;親ウィンドウの下端に作成 #define global CCS_NORESIZE 0x00000004 ;サイズ固定 #define global CCS_NOPARENTALIGN 0x00000008 ;自動的に上端や下端に移動しない #define global CCS_ADJUSTABLE 0x00000020 ;ユーザーがサイズ変更可 #define global CCS_NODIVIDER 0x00000040 ;ハイライト非表示 #define global CCS_VERT 0x00000080 ;(ver4.70〜) コントロールを垂直表示 #const global CCS_LEFT (CCS_VERT | CCS_TOP) ;(ver4.70〜) #const global CCS_RIGHT (CCS_VERT | CCS_BOTTOM) ;(ver4.70〜) #const global CCS_NOMOVEX (CCS_VERT | CCS_NOMOVEY) ;(ver4.70〜) // ツールバーに送るメッセージ #define global TB_ADDBITMAP 0x0413 ;ボタンイメージのリストにビットマップイメージを追加 #define global TB_ADDBUTTONS 0x0414 ;新しいボタンを複数追加 #define global TB_ADDSTRING 0x041C ;文字列のリストに新しい文字列を追加 #define global TB_AUTOSIZE 0x0421 ;ツールバーサイズを調整 #define global TB_BUTTONSTRUCTSIZE 0x041E ;TBBUTTON 構造体のサイズを設定 #define global TB_CHECKBUTTON 0x0402 ;ボタンのON/OFF状態の設定 #define global TB_DELETEBUTTON 0x0416 ;ボタンを削除 #define global TB_ENABLEBUTTON 0x0401 ;ボタンの選択可・不可を設定 #define global TB_GETSTATE 0x0412 ;ボタンの状態を取得 #define global TB_INSERTBUTTON 0x0415 ;新しいボタンを1つ追加 #define global TB_SETBITMAPSIZE 0x0420 ;ビットマップのサイズを設定 #define global TB_SETINDENT 0x042F ;インデントを設定 #define global TB_SETSTATE 0x0411 ;ボタンの状態を設定 #define global TB_SETTOOLTIPS 0x0424 ;ツールチップを設定 // ( TBBUTTON 構造体 ) //typedef struct { // HINSTANCE hInst; // モジュールのインスタンスハンドル // UINT nID; // リソースIDまたはビットマップハンドル //} TBADDBITMAP, *LPTBADDBITMAP; // ( TBBUTTON 構造体 ) nID 設定情報 #define global HINST_COMMCTRL -1 ;ツールバーであることを言う #define global IDB_STD_SMALL_COLOR 0 ;小さいカラー標準ビットマップ #define global IDB_STD_LARGE_COLOR 1 ;大きいカラー標準ビットマップ #define global IDB_VIEW_SMALL_COLOR 4 ;小さいカラービュービットマップ #define global IDB_VIEW_LARGE_COLOR 5 ;大きいカラービュービットマップ // ( TBADDBITMAP 構造体 ) //typedef struct _TBBUTTON { // int iBitmap; // ビットマップのインデックス // int idCommand; // コマンドID // BYTE fsState; // ボタンの状態 // BYTE fsStyle; // ボタンのスタイル // BYTE bReserved[2] // 予約(= 0 ) // DWORD_PTR dwData; // アプリケーション定義値 // INT_PTR iString; // テキストのインデックス //} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON; // ( TBADDBITMAP 構造体 ) iBitmap 標準ボタンイメージ #define global STD_CUT 0 ;切り取り #define global STD_COPY 1 ;コピー #define global STD_PASTE 2 ;貼り付け #define global STD_UNDO 3 ;アンドゥ #define global STD_REDOW 4 ;リドゥ #define global STD_DELETE 5 ;削除 #define global STD_FILENEW 6 ;新規作成 #define global STD_FILEOPEN 7 ;開く #define global STD_FILESAVE 8 ;保存 #define global STD_PRINTPRE 9 ;印刷プレビュー #define global STD_PROPERTIES 10 ;プロパティ #define global STD_HELP 11 ;ヘルプ #define global STD_FIND 12 ;検索 #define global STD_REPLACE 13 ;置換 #define global STD_PRINT 14 ;印刷 // ( TBADDBITMAP 構造体 ) iBitmap ビットマップボタンイメージ #define global VIEW_LARGEICONS 0 ;大きいアイコン #define global VIEW_SMALLICONS 1 ;小さいアイコン #define global VIEW_LIST 2 ;一覧表示 #define global VIEW_DETAILS 3 ;詳細表示 #define global VIEW_SORTNAME 4 ;名前順に整列 #define global VIEW_SORTSIZE 5 ;サイズ順に整列 #define global VIEW_SORTDATE 6 ;日付順に整列 #define global VIEW_SORTTYPE 7 ;タイプ順に整列 #define global VIEW_PARENTFOLDER 8 ;上のフォルダへ #define global VIEW_NETCONNECT 9 ;ネットワークドライブへ接続 #define global VIEW_NETDISCONNECT 10 ;ネットワークドライブから切断 #define global VIEW_NEWFOLDER 11 ;新しいフォルダ #define global VIEW_VIEWMENU 12 ;(ver4.71〜) // ( TBADDBITMAP 構造体 ) fsState ボタンの状態 #define global TBSTATE_CHECKED 0x01 ;押された状態 #define global TBSTATE_PRESSED 0x02 ;押されている #define global TBSTATE_ENABLED 0x04 ;使用可能 #define global TBSTATE_HIDDEN 0x08 ;非表示 #define global TBSTATE_INDETERMINATE 0x10 ;淡色表示 #define global TBSTATE_WRAP 0x20 ;このボタンの後で改行 #define global TBSTATE_ELLIPSES 0x40 ;(ver4.70〜) #define global TBSTATE_MARKED 0x80 ;(ver4.71〜) // ( TBADDBITMAP 構造体 ) fsStyle ボタンのスタイル #define global TBSTYLE_BUTTON 0x0000 ;標準の押しボタン #define global TBSTYLE_SEP 0x0001 ;セパレータ(区切り線) #define global TBSTYLE_CHECK 0x0002 ;トグル動作をするボタン #define global TBSTYLE_GROUP 0x0004 ;ラジオボタンのような動作のボタン #define global TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK) #define global TBSTYLE_DROPDOWN 0x0008 ;(ver4.70〜)ドロップダウン・スタイルのボタン #define global TBSTYLE_AUTOSIZE 0x0010 ;(ver4.71〜)ボタンの幅を画像と文字から計算 #define global TBSTYLE_NOPREFIX 0x0020 ;(ver4.71〜)アンパサンド(&)等をそのまま表示 #module "ToolBar" #ifdef __GDI32__ ;-------------------------------------- ; デバイス依存ビットマップの作成 ;-------------------------------------- #defcfunc CreateDDB str file, int TokaPal exist file : if( strsize < 1 ): return 0 flen = strsize : sdim buf,flen : bload file,buf ; ディスプレイのデバイスコンテキストのハンドル取得 CreateDC "DISPLAY",0,0,0 : hdc2 = stat tbb = varptr(buf)+14, varptr(buf)+lpeek(buf,10) ; 透過色の設定 syscolor 15 lpoke buf, TokaPal*4+54, ginfo_r<<16|ginfo_g<<8|ginfo_b CreateDIBitmap hdc2, tbb, 4, tbb.1, tbb, 0 hBmp = stat ; デバイスコンテキストを削除 DeleteDC hdc2 : hdc2=0 return hBmp #endif ;-------------------------------------- ; ツールバーを作成する ;-------------------------------------- #deffunc tbarmake int style, int w, int h winobj "ToolbarWindow32","",0,style, w, h hTool=objinfo(stat,2) ; ( TBBUTTON 構造体 ) のサイズを設定 sendmsg hTool, TB_BUTTONSTRUCTSIZE, 20, 0 return hTool ;-------------------------------------- ; ツールバーのビットマップ設定 ;-------------------------------------- #deffunc tbarbmp int style, int num, int w, int h ; ( TBADDBITMAP 構造体 ) の設定 tbb = HINST_COMMCTRL, style if( num > 0 ){ ; ビットマップのサイズを設定 sendmsg hTool, TB_SETBITMAPSIZE, 0, w | (h << 16) tbb = 0 ; wait 1 } ; ( TBADDBITMAP 構造体 ) を送信 sendmsg hTool, TB_ADDBITMAP, num, varptr(tbb) return ;-------------------------------------- ; ツールバーのボタンを追加する ;-------------------------------------- #deffunc tbaradd int image, int cmd, int style ; スタイルの設定 tbb = image, cmd, style | 0x004, 0, 0 if( image == -1 ) : tbb.2 = 0x100 ; ( TBBUTTON 構造体 ) の送信 sendmsg hTool, TB_ADDBUTTONS, 1, varptr(tbb) ; ツールバーサイズを調整 sendmsg hTool, TB_AUTOSIZE, 0, 0 return ;-------------------------------------- #global