|
|
2016/6/9(Thu) 21:02:05|NO.75804
今、画像のラジオボタンが作りたくて、いろいろやってるんですけど、どうしても方法が思いつかなくて困っています。
イメージとしてはトグルボタンの上にアイコン的なのがあって、それが何個か並んでいて、一つだけオンになるような感じのものです。
だれかいい方法を教えてくれないでしょうか。お願いします!m(_ _)m
|
|
2016/6/9(Thu) 22:32:57|NO.75810
BM_SETIMAGEが使えないかな?
少し調べただけなのでわかりません。
明日試してみます。
それでダメなら、素直に、ラジオボタンと画像をposでうまく配置するとか。
一つだけオンになるというのはグループ化すればいいと思いますが、方法忘れました。
|
|
2016/6/10(Fri) 01:22:03|NO.75812
こんな感じかな?
#include "comctl32.as"
#include "user32.as"
#const TBBTNSIZE 24
#const BTTTOTAL 10
#define ICC_BAR_CLASSES $00000004
//style
#define WS_CHILD $40000000
#define WS_VISIBLE $10000000
#define CCS_TOP $00000001
//toolbar
#define TB_CHECKBUTTON $00000402
#define TB_BUTTONSTRUCTSIZE $0000041E
#define TB_GETSTATE $00000412
#define TB_ADDBITMAP $00000413
#define TB_ADDBUTTONS $00000414
#define TBSTYLE_CHECKGROUP $00000006
#define TBSTATE_ENABLED $00000004
;LoadImage
#define LR_LOADFROMFILE $00000010
#define LR_LOADTRANSPARENT $00000020
#define LR_DEFAULTSIZE $00000040
#define LR_LOADMAP3DCOLORS $00001000
#define LR_SHARED $00008000
#define WM_COMMAND $00000111
// 下位ワード取り出しマクロ
#define ctype LOWORD(%1) (%1 & $FFFF)
icx = 8 , ICC_BAR_CLASSES
InitCommonControlsEx varptr(icx)
// アイコンを読み込む場合
;LoadImage 0, "Icon.bmp" , 0 , 0 , 0 , LR_LOADFROMFILE | LR_LOADTRANSPARENT | LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS
;tbadd = 0 , stat
// オブジェクトの作成
pos 0,10
winobj "ToolbarWindow32","" , 0 , WS_CHILD | WS_VISIBLE | CCS_TOP , TBBTNSIZE,ginfo_winy
htb = objinfo_hwnd(stat)
sendmsg htb , TB_BUTTONSTRUCTSIZE , 20
tba = -1 , 0
sendmsg htb , TB_ADDBITMAP , 0 , varptr(tba);アイコンを読み込む場合はコメトアウト
;sendmsg htb , TB_ADDBITMAP , BTTTOTAL , varptr(tbadd);アイコンを読み込む場合
repeat BTTTOTAL
tbb(5*cnt) = cnt,cnt,(TBSTYLE_CHECKGROUP<<8) | TBSTATE_ENABLED , 0 ,0
loop
sendmsg htb, TB_ADDBUTTONS , BTTTOTAL , varptr(tbb)
oncmd gosub *command , WM_COMMAND
pos 0,32
button gosub "0にチェック", *chk0
button gosub "1にチェック", *chk1
stop
*command
if lParam = htb{
wID = LOWORD(wparam)
logmes str(wID)
}
return
*chk0
sendmsg htb, TB_CHECKBUTTON, 0 , 1
return
*chk1
sendmsg htb, TB_CHECKBUTTON, 1 , 1
return

| |
|
2016/6/10(Fri) 16:28:50|NO.75819
ボタンの数を変える場所はわかったんですけどサイズって変えられますか?
変えられるのならどうやって変えるんですか?
|
|
2016/6/10(Fri) 23:28:18|NO.75830
ツールバーで検索するといいかも
#defineに以下を追加
#define CCS_NORESIZE $00000004
#define TB_SETBITMAPSIZE $00000420
#define TB_SETBUTTONSIZE $0000041F
#define ctype MAKELPARAM(%1,%2) (%1 | %2<<16)
以下の変数の値を設定
bitmap_width ;画像の幅
bitmap_height;画像の高さ
button_width ;ボタンの幅
button_height;ボタンの高さ
toolbar_width ;ツールバーの幅
toolbar_height;ツールバーの高さ
winobj を以下のように変更
winobj "ToolbarWindow32","" , 0 , WS_CHILD | WS_VISIBLE | CCS_TOP , TBBTNSIZE,ginfo_winy
↓
winobj "ToolbarWindow32","" , 0 , WS_CHILD | WS_VISIBLE | CCS_NORESIZE , toolbar_width , toolbar_height
以下の命令を追加
sendmsg htb , TB_SETBITMAPSIZE , 0 , MAKELPARAM( bitmap_width , bitmap_height);bitmapのサイズ
sendmsg htb , TB_SETBUTTONSIZE , 0 , MAKELPARAM( button_width , button_height);buttonのサイズ
|
|
2016/6/14(Tue) 19:22:20|NO.75882
ここまで聞いた後で申し訳ないんですけど、できればでいいんで、ボタンを何とかpngでできるようにできませんか?
これだとできないのはわかってます。別の方法で何とかしてpngのボタンで作れないでしょうか。
|
|
2016/6/15(Wed) 02:03:40|NO.75885
picloadで読み込んでから処理
#include "comctl32.as"
#include "user32.as"
#include "gdi32.as"
#const TBBTNSIZE 24
#const BTTTOTAL 10
#define ICC_BAR_CLASSES $00000004
//style
#define WS_CHILD $40000000
#define WS_VISIBLE $10000000
#define CCS_TOP $00000001
#define CCS_NORESIZE $00000004
//toolbar
#define TB_CHECKBUTTON $00000402
#define TB_BUTTONSTRUCTSIZE $0000041E
#define TB_GETSTATE $00000412
#define TB_ADDBITMAP $00000413
#define TB_ADDBUTTONS $00000414
#define TB_SETBITMAPSIZE $00000420
#define TB_SETBUTTONSIZE $0000041F
#define TBSTYLE_CHECKGROUP $00000006
#define TBSTATE_ENABLED $00000004
#define SRCCOPY $00CC0020
#define WM_COMMAND $00000111
#define ctype MAKELPARAM(%1,%2) (%1 | %2<<16)
// 下位ワード取り出しマクロ
#define ctype LOWORD(%1) (%1 & $FFFF)
icx = 8 , ICC_BAR_CLASSES
InitCommonControlsEx varptr(icx)
screen 0
buffer 1
;他で使用する際には、picloadで直接ファイルを指定して下さい
dialog "png|gif|bmp",16,"png|gif|bmp"
picload refstr
; ディスプレイのデバイスコンテキストのハンドル取得
CreateDC "DISPLAY",0,0,0 : Window_DC = stat
; ディスプレイ互換ビットマップオブジェクト作成
CreateCompatibleBitmap Window_DC, ginfo_winx , ginfo_winy : hBitmap = stat
; ディスプレイ互換デバイスコンテキスト作成
CreateCompatibleDC Window_DC : src_DC = stat
; ビットマップをデバイスコンテキストに選択
SelectObject src_DC, hBitmap : old_Bitmap = stat
; HSPウィンドウからビットマップにイメージをコピー
BitBlt src_DC, 0, 0, ginfo_winx , ginfo_winy , hdc, 0, 0, SRCCOPY
; デバイスコンテキストの選択ビットマップを戻す
SelectObject src_DC, Old_Bitmap
; デバイスコンテキストを削除
DeleteDC src_DC
DeleteDC Window_DC
tbadd = 0 , hBitmap
gsel 0,1
// オブジェクトの作成
pos 16,32
winobj "ToolbarWindow32","" , 0 , WS_CHILD | WS_VISIBLE | CCS_NORESIZE , 32*BTTTOTAL , 34
htb = objinfo_hwnd(stat)
sendmsg htb , TB_BUTTONSTRUCTSIZE , 20
sendmsg htb , TB_SETBITMAPSIZE , 0 , MAKELPARAM( 16 , 16);bitmapのサイズ
sendmsg htb , TB_SETBUTTONSIZE , 0 , MAKELPARAM( 32 , 32);buttonのサイズ
sendmsg htb , TB_ADDBITMAP , BTTTOTAL , varptr(tbadd)
sendmsg htb , TB_AUTOSIZE, 0, 0
repeat BTTTOTAL
tbb(5*cnt) = cnt,cnt,(TBSTYLE_CHECKGROUP<<8) | TBSTATE_ENABLED , 0 ,0
loop
sendmsg htb, TB_ADDBUTTONS , BTTTOTAL , varptr(tbb)
onexit *On_Exit
stop
*On_Exit
DeleteObject hBitmap
end
ビットマップオブジェクトに関してはこちらが参考になるかと。
http://chokuto.ifdef.jp/advanced/bitmapobject.html

| |
|
2016/8/29(Mon) 18:36:11|NO.76742
確認するタイミングがなかなかできず、放置になってしまいました。
解決できました。皆様ありがとうございました。
|
|