|
|
2012/10/1(Mon) 17:24:04|NO.49658
逆にこちらが聞こう。
>>チェックボックスの値をリアルタイムで取得する方法を教えていただけないでしょうか?
chkboxをリファレンスで確認したのか?
>>下のサイトにあるからふるおぶじぇくとモジュールの背景色をRBG値で変更する方法
カラフルオブジェクトモジュールを使ったことがないので予測だが、ヘルプは見てないのか?
|
|
2012/10/1(Mon) 17:47:39|NO.49659
知識浅くて申し訳ないんですけど
>>チェックボックスの値をリアルタイムで取得する方法を教えていただけないでしょうか?
普通は無限ループして
無限ループの中で値を眺め続けるかんじだと思います
少なくても僕はそうしてます
リアルタイムで取得するAPIはあるかもしれませんが
おまじないだらけな気がしますし
無限ループの中で眺め続ける方が応用きくと思ってます
|
|
2012/10/1(Mon) 18:01:38|NO.49660
>>下のサイトにあるからふるおぶじぇくとモジュールの背景色をRBG値で変更する方法
ちょっとURL覗きましたが
HELPないかんじですね
サンプルはあってちょっとコメントあるくらいな印象です
僕はここの色変えるサンプル試してみましたが
こっちもありです
こっちのが処理簡単そうなイメージです
http://lhsp.s206.xrea.com/hsp_object2.html
どっちにしろ(僕も完全に動作を理解できてる訳ではありませんが^^)
ある程度、他人の書いたモジュールを読まないと
質問の動作。は実現できなさそうです
これこれのオブジェクトのIDでこれこれの色にしたい
設置するオブジェクトのパラメータはコレ
って指定すれば、回答得られそうではありますが^^
|
|
2012/10/1(Mon) 18:22:21|NO.49662
>>下のサイトにあるからふるおぶじぇくとモジュール
更にちょっと覗いたんですけど
あてずっぽうにサンプルの値書き変えたら
色変わりそうですね
こことか
color $CC,$CC,$CC : boxf
こことか
col = $FF,$ee,$ee, $AA,$33,$44
こことか
objcolor stat, $eeFFee, $008040objcolor stat, crgb($FF,$FF,$ee), crgb($AA,$33,$44)
こことか
objcolor stat, crgb($ee,$FF,$FF), crgb($33,$44,$cc)
こことか
objcolor stat,$FFeeFF,$AA3344
$数値って16進表記なんで
そこが怪しいです
色指定なので16進で記述した方がわかりやすい。みたいなw
なんか質問時、ググった?って聞く人が多いんですけど
ググって何か見つけたけど、使い方がわからない的な質問多いですよね
誰だってちゃんと見なきゃわからない。とは思うんですけど
そういう時は色々数値とか変数の代入とかいじって
遊び感覚で試行錯誤すればいいのかな?
僕も稀に面白そうなモジュールみつけたら少々いじりますね
本筋のスクリプトとは関係なくても
僕がプログラミングを始めた頃は
NET繋がってなくて(一応WIN95だった気がw)
質問は出来ませんでしたが
リファレンス見て(コピペもしましたがw)いじったりしてたなぁ
|
|
2012/10/1(Mon) 18:49:01|NO.49665
>チェックボックスの値をリアルタイムで取得する方法
ループがダメならoncmdを使うという手もあります。
x=1
chkbox "test",x
oncmd *wm_command,$111
stop
*wm_command
mes x
stop
|
|
2012/10/1(Mon) 18:56:34|NO.49666
|
|
2012/10/1(Mon) 19:00:01|NO.49667
>>チェックボックスの値をリアルタイムで取得する方法
> ループがダメならoncmdを使うという手もあります。
おわっ割と長年HSPやってますが、知りませんでした
もらっときます メモメモ
と言いつつHDL先生で「oncmd」で質問したら
全然理解出来ないダメな僕
|
|
2012/10/1(Mon) 19:09:31|NO.49670
oncmd でHDL先生に聞いたら
>既に登録されているウィンドウメッセージが指定された場合は、以前の登録が無効になります。
って言われたんですけど
複数のchkboxを設置する場合
どんなかんじなんですか?
gotoで飛んだ後、chkboxで設定した値をifで調べるかんじですか?
|
|
2012/10/1(Mon) 19:12:29|NO.49673
>gotoで飛んだ後、chkboxで設定した値をifで調べるかんじですか?
申し訳ないです。合ってました
x=1:y=0
chkbox "test_A",x
chkbox "test_B",y
oncmd *wm_command,$111
stop
*wm_command
if x==1:mes "x"
if y==1:mes "y"
stop
|
|
2012/10/1(Mon) 20:23:10|NO.49677
皆さんすいません。
モジュールが違ったみたいです。からふるおぶじぇくとではなく、過去スレにあったモジュールでした。
chkbox2.as
#uselib "gdi32"
#cfunc GetStockObjectChk2 "GetStockObject" int
#func GetObjectAChk2 "GetObjectA" int,int,var
#cfunc CreateFontIndirectAChk2 "CreateFontIndirectA" var
#cfunc CreateSolidBrushChk2 "CreateSolidBrush" int
#func SetBkColorChk2 "SetBkColor" int,int
#func SetTextColorChk2 "SetTextColor" int, int
#define chkbox2(%1,%2) mref bmscr_CHK2,67:GetObjectAChk2 bmscr_CHK2.38,60,LF_CHK2:cxCHK2.CHK2cnt=ginfo(22):cyCHK2.CHK2cnt=ginfo(23):oxCHK2.CHK2cnt=bmscr_CHK2.29:oyCHK2.CHK2cnt=bmscr_CHK2.30:winobj "STATIC","",,0x50000000:hStatic_CHK2.CHK2cnt=objinfo(stat,2):pos cxCHK2.CHK2cnt+17,cyCHK2.CHK2cnt+(oyCHK2.CHK2cnt+abs(LF_CHK2.0))/2-abs(LF_CHK2.0):winobj "STATIC",%1,,0x50000000,oxCHK2.CHK2cnt-17,abs(LF_CHK2.0):sstat=stat:hStatic2_CHK2.CHK2cnt=objinfo(stat,2):pos cxCHK2.CHK2cnt,cyCHK2.CHK2cnt+(bmscr_CHK2.30+13)/2-13:objsize 13,13:chkbox "",%2:cstat=stat:hChk_CHK2.CHK2cnt=objinfo(stat,2):objsize oxCHK2.CHK2cnt,oyCHK2.CHK2cnt:sendmsg hStatic2_CHK2.CHK2cnt,0x30,CreateFontIndirectAChk2(LF_CHK2):CHK2cnt++:pos cxCHK2,cyCHK2+oyCHK2+5
#define ctype RGB_CHK2(%1,%2,%3) (%1|%2<<8|%3<<16)
#define color2(%1,%2,%3) mod_col2_r=%1:mod_col2_g=%2:mod_col2_b=%3
oncmd gosub *WM_CTLCOLORSTATIC,0x138
oncmd gosub *WM_LBUTTONDOWN,0x201
oncmd gosub *WM_LBUTTONUP,0x202
oncmd gosub *WM_MOUSEMOVE,0x200
goto *JUMP_CHK2
*WM_CTLCOLORSTATIC
/*WM_CTLCOLORSTATICメッセージを他にも使う場合はここに処理を追加してください (もし使うならこれをメインソースに含んだ方が早いかも)*/
repeat CHK2cnt
if lparam=hStatic_CHK2.cnt{
;SetBkColorChk2 wparam,0x01// ↓これを消してコメントアウトを二箇所外せば文字以外が透過される
return CreateSolidBrushChk2(RGB_CHK2(mod_col2_r,mod_col2_g,mod_col2_b))
;return GetStockObjectChk2(5);
}
if lparam=hStatic2_CHK2.cnt{
SetBkColorChk2 wparam,RGB_CHK2(mod_col2_r,mod_col2_g,mod_col2_b)//こっちを透過しようとすると黒くなる(重ねてる為?)
SetTextColorChk2 wparam,RGB_CHK2(ginfo(16),ginfo(17),ginfo(18))
return GetStockObjectChk2(5)
}
loop
return
*WM_LBUTTONDOWN
/*WM_LBUTTONDOWNメッセージを他にも使う場合はここに処理を追加してください (これはよく使うと思われるので、もし使うならメインソースに(略) )*/
mxCHK2=lParam&0xFFFF
myCHK2=(lParam>>16)&0xFFFF
repeat CHK2cnt
coxCHK2=cxCHK2.cnt+oxCHK2.cnt
coyCHK2=cyCHK2.cnt+oyCHK2.cnt
if (mxCHK2>=cxCHK2.cnt)&&(mxCHK2<=coxCHK2)&&(myCHK2>=cyCHK2.cnt)&&(myCHK2<=coyCHK2){
sendmsg hChk_CHK2.cnt,0xF3,1,0
}
loop
return
*WM_LBUTTONUP
/*WM_LBUTTONUPメッセージを(以下同文)*/
mxCHK2=lParam&0xFFFF
myCHK2=(lParam>>16)&0xFFFF
repeat CHK2cnt
sendmsg hChk_CHK2.cnt,0xF3,0,0
coxCHK2=cxCHK2.cnt+oxCHK2.cnt
coyCHK2=cyCHK2.cnt+oyCHK2.cnt
if (mxCHK2>=cxCHK2.cnt)&&(mxCHK2<=coxCHK2)&&(myCHK2>=cyCHK2.cnt)&&(myCHK2<=coyCHK2){
sendmsg hChk_CHK2.cnt,0xF2,0,0
if stat&0x01{
sendmsg hChk_CHK2.cnt,0xF1,0x00,0
}else{
sendmsg hChk_CHK2.cnt,0xF1,0x01,0
}
}
loop
return
*WM_MOUSEMOVE
/*WM_MOUSEMOVE(以下同文)*/
mxCHK2=lParam&0xFFFF
myCHK2=(lParam>>16)&0xFFFF
repeat CHK2cnt
coxCHK2=cxCHK2.cnt+oxCHK2.cnt
coyCHK2=cyCHK2.cnt+oyCHK2.cnt
if (mxCHK2>=cxCHK2.cnt)&&(mxCHK2<=coxCHK2)&&(myCHK2>=cyCHK2.cnt)&&(myCHK2<=coyCHK2){
sendmsg hChk_CHK2.cnt,0xF3,1,0
}else{
sendmsg hChk_CHK2.cnt,0xF3,0,0
}
loop
return
*JUMP_CHK2
サンプル
#include "chkbox2.as"
pos 50,50
color 255,0,0//文字色
color2 0,0,255//背景色
font "",13//フォントも指定できる
objsize 100,15
chkbox2 "テスト",a
hChk=cstat//cstatにオブジェクトハンドル
hStatic=sstat//sstatにスタティックテキストのオブジェクトハンドル(文字部分)
button "enable",*e
stop
*e
objenable hChk,0
objenable hStatic,0
このチェックボックスの値ををリアルタイムで取得する方法はないでしょうか?
#include "user32.as"
; 普通にボタンを作成
button "切り替え", *check
hButton = objinfo(stat, 2)
; ボタンのウィンドウスタイルを変更してチェックボックス化
sendmsg hButton, $F4, $3
; チェックボックスにチェックを入れる (BM_SETCHECK)
; 第3パラに 0=チェックあり、1=チェックなし
; (標準のobjprm命令では制御できないため)
sendmsg hButton, $F1, 1
pos , 50
objsize 100, 22
input x
hInput = objinfo(stat, 2)
combox y, , "HSP\n講座\nプログラミング\nサンプル"
hCombox = objinfo(stat, 2)
chkbox "チェックボックス", z
hChkbox = objinfo(stat, 2)
stop
このスクリプトのように普通にボタンを設置して〜って方法はできませんよね?
| |
|
2012/10/1(Mon) 20:38:08|NO.49678
catsさん方式で一応リアルタイムで取得できるみたい
#include "chkbox2.as"
pos 50,50
color 255,0,0//文字色
color2 0,0,255//背景色
font "",13//フォントも指定できる
objsize 100,15
chkbox2 "テスト",a
oncmd *wm_command,$111 ;変更
hChk=cstat//cstatにオブジェクトハンドル
hStatic=sstat//sstatにスタティックテキストのオブジェクトハンドル(文字部分)
button "enable",*e
stop
*wm_command;変更
mes a;変更
stop;変更
*e
objenable hChk,0
objenable hStatic,0
>このスクリプトのように普通にボタンを設置して〜って方法はできませんよね?
きちんとスクリプト読んでないので理解出来ない〜
そしてまさかの使ってるモジュール違いました発言 爆
|
|
2012/10/1(Mon) 20:57:11|NO.49680
皆さんありがとうございました。
y.tackさんのスクリプトで解決しました。
|
|
2012/10/1(Mon) 21:13:45|NO.49683
解決済みなんですけど疑問点を
>このスクリプトのように普通にボタンを設置して〜って方法はできませんよね?
; 普通にボタンを作成
; ボタンのウィンドウスタイルを変更してチェックボックス化
; チェックボックスにチェックを入れる (BM_SETCHECK)
chkbox "チェックボックス", z
とありますが
設置したいのはチェックボックス化したbuttonですか?
更にチェックも入れたいですか?
それとも普通のチェックボックスですか?
それと
oncmd gosub *WM_CTLCOLORSTATIC,0x138
oncmd gosub *WM_LBUTTONDOWN,0x201
oncmd gosub *WM_LBUTTONUP,0x202
oncmd gosub *WM_MOUSEMOVE,0x200
はどういう関係なんですか?
これらのコマンドで設置したオブジェクトにメッセージを送りたいってことですか?
そして設置するオブジェクトはchkbox2.asのモジュールの動作を受け継ぎたいのですか?
ちょっとやりたいことをTODO的に洗い出して欲しいですね
TODOの洗い出しは設計に似ていると思っています
ちょっと僕の腕ではきちんと回答出来ないかもしれませんが
やりたいことを洗い出すのは重要だと思います
やりたいことを洗い出していたら解決策を思いつくこともありますし
|
|
2012/10/1(Mon) 21:54:46|NO.49684
設置したいのはチェックボックス化したbuttonですか?
更にチェックも入れたいですか?
それとも普通のチェックボックスですか?
と、さっき書きましたが
3種類chkbox作ろうか。と思いましたが挫折しました
とりあえず
> それとも普通のチェックボックスですか?
は試行錯誤いらないんですけど
> 設置したいのはチェックボックス化したbuttonですか?
> 更にチェックも入れたいですか?
の2種類のチェックボックスは
; 普通にボタンを作成
button "切り替え", *check
hButton = objinfo(stat, 2)
; ボタンのウィンドウスタイルを変更してチェックボックス化
sendmsg hButton, $F4, $3
; チェックボックスにチェックを入れる (BM_SETCHECK)
; 第3パラに 0=チェックあり、1=チェックなし
; (標準のobjprm命令では制御できないため)
sendmsg hButton, $F1, 1
のどこでchkboxの値が反映される変数を指定しているのでしょうか?
そしてどこでデフォルトの値を設定しているのでしょうか?
|
|