HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0609
架空天域世界画像ラジオボタン7解決


架空天域世界

リンク

2016/6/9(Thu) 21:02:05|NO.75804

今、画像のラジオボタンが作りたくて、いろいろやってるんですけど、どうしても方法が思いつかなくて困っています。
イメージとしてはトグルボタンの上にアイコン的なのがあって、それが何個か並んでいて、一つだけオンになるような感じのものです。
だれかいい方法を教えてくれないでしょうか。お願いします!m(_ _)m



この記事に返信する


kanamaru

リンク

2016/6/9(Thu) 22:32:57|NO.75810

BM_SETIMAGEが使えないかな?
少し調べただけなのでわかりません。
明日試してみます。
それでダメなら、素直に、ラジオボタンと画像をposでうまく配置するとか。
一つだけオンになるというのはグループ化すればいいと思いますが、方法忘れました。



nori

リンク

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

ボタンの数を変える場所はわかったんですけどサイズって変えられますか?
変えられるのならどうやって変えるんですか?



nori

リンク

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のボタンで作れないでしょうか。



nori

リンク

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

確認するタイミングがなかなかできず、放置になってしまいました。
解決できました。皆様ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.