|
|
|
2016/7/12(Tue) 17:04:21|NO.76158
左に小さな隙間ができてしまうのですが、なぜでしょうか
#include "comctl32.as"
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define HINST_COMMCTRL 0xFFFFFFFF
#define IDB_STD_SMALL_COLOR 0x00000000
#define IDB_STD_LARGE_COLOR 0x00000001
#define TB_ADDBITMAP 0x00000413
#define TBSTYLE_BUTTON 0x00000000
#define ICC_BAR_CLASSES 0x00000004
#define TB_BUTTONSTRUCTSIZE 0x0000041E
#define TB_ADDBUTTONS 0x00000414
#define TBSTATE_ENABLED 0x00000004
#define TBSTYLE_WRAPABLE 0x00000200
#define TBSTATE_WRAP 0x00000020
#define TB_AUTOSIZE 0x00000421
#define CCS_NORESIZE 0x00000004
#define CCS_VERT 0x00000080
#define STD_CUT 0x00000000
#define STD_COPY 0x00000001
#define STD_PASTE 0x00000002
#define STD_UNDO 0x00000003
#define STD_REDOW 0x00000004
#define TOOLBARCLASSNAME "ToolbarWindow32"
screen 0, 640, 480
dim ic, 2 //INITCOMMONCONTROLSEX
ic = 8, ICC_BAR_CLASSES
dim tbb, 20 //TBBUTTON
tbb(5 * 0) = STD_CUT, 0, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 1) = STD_COPY, 1, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 2) = STD_PASTE, 2, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 3) = STD_UNDO, 3, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 4) = STD_REDOW, 4, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
nButtons = 5
dim tba, 2 //TBADDBITMAP
tba = HINST_COMMCTRL, IDB_STD_SMALL_COLOR
InitCommonControlsEx varptr(ic)
winobj TOOLBARCLASSNAME, "", 0, WS_CHILD | WS_VISIBLE | CCS_VERT
hTool = objinfo_hwnd(stat)
sendmsg hTool, TB_BUTTONSTRUCTSIZE, 20, 0
sendmsg hTool, TB_ADDBITMAP, nButtons, varptr(tba)
sendmsg hTool, TB_ADDBUTTONS, nButtons, varptr(tbb)
stop
| |
|
2016/7/12(Tue) 20:11:58|NO.76160
質問とは関係ないけど
>>dim tbb, 20
は tbb(0)〜tbb(19) までだよ?
(自動拡張されるんだっけ?)
|
|
2016/7/12(Tue) 20:46:50|NO.76162
すみません
dim tbb, 25でした
|
|
2016/7/12(Tue) 23:41:35|NO.76166
ツールバー(コモンコントロール)はデフォルトで上端(縦だと左端?)に2ピクセルのハイライト表示されるみたいですね。
ウインドウスタイルにCCS_NODIVIDER(0x0040)を追加すれば、これを表示させない事が可能です。
|
|
2016/7/13(Wed) 07:36:08|NO.76176
ありがとうございます
解決しました
こんな簡単なことだったとは…
私の調査不足でした。
#include "comctl32.as"
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define HINST_COMMCTRL 0xFFFFFFFF
#define IDB_STD_SMALL_COLOR 0x00000000
#define IDB_STD_LARGE_COLOR 0x00000001
#define ICC_BAR_CLASSES 0x00000004
#define TB_ADDBITMAP 0x00000413
#define TB_BUTTONSTRUCTSIZE 0x0000041E
#define TB_ADDBUTTONS 0x00000414
#define TBSTYLE_BUTTON 0x00000000
#define TBSTATE_ENABLED 0x00000004
#define TBSTATE_WRAP 0x00000020
#define CCS_VERT 0x00000080
#define CCS_NODIVIDER 0x00000040
#define STD_CUT 0x00000000
#define STD_COPY 0x00000001
#define STD_PASTE 0x00000002
#define STD_UNDO 0x00000003
#define STD_REDOW 0x00000004
#define TOOLBARCLASSNAME "ToolbarWindow32"
screen 0, 640, 480
dim ic, 2 //INITCOMMONCONTROLSEX
ic = 8, ICC_BAR_CLASSES
dim tbb, 20 //TBBUTTON
tbb(5 * 0) = STD_CUT, 0, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 1) = STD_COPY, 1, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 2) = STD_PASTE, 2, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 3) = STD_UNDO, 3, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
tbb(5 * 4) = STD_REDOW, 4, TBSTATE_ENABLED | TBSTATE_WRAP | (TBSTYLE_BUTTON << 8), 0, 0
nButtons = 5
dim tba, 2 //TBADDBITMAP
tba = HINST_COMMCTRL, IDB_STD_SMALL_COLOR
InitCommonControlsEx varptr(ic)
winobj TOOLBARCLASSNAME, "", 0, WS_CHILD | WS_VISIBLE | CCS_VERT | CCS_NODIVIDER
hTool = objinfo_hwnd(stat)
sendmsg hTool, TB_BUTTONSTRUCTSIZE, 20, 0
sendmsg hTool, TB_ADDBITMAP, nButtons, varptr(tba)
sendmsg hTool, TB_ADDBUTTONS, nButtons, varptr(tbb)
stop
それにしても、2ピクセルのハイライト表示なんて何のためにあるんでしょうね?
| |
|
2016/7/13(Wed) 23:48:31|NO.76190
>>それにしても、2ピクセルのハイライト表示なんて何のためにあるんでしょうね?
今はフラットなインターフェイスが主流ですが、以前は3D(浮き上がったように見える)が主流でした。
これはその時代の名残かと。
|
|
2016/7/14(Thu) 19:34:48|NO.76193
なるほど
WinAPIっていろいろ引きずってますね
回答、ありがとうございます
|
|