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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1001
BLUENOIR-Zwei-からふるおぶじぇくとモジュールに関しての質問です14解決


BLUENOIR-Zwei-

リンク

2012/10/1(Mon) 16:44:54|NO.49657

下のサイトにあるからふるおぶじぇくとモジュールの背景色をRBG値で変更する方法と、チェックボックスの値をリアルタイムで取得する方法を教えていただけないでしょうか?
http://blog.livedoor.jp/leearu/archives/29032438.html

よろしくお願いします。



この記事に返信する


甘酒

リンク

2012/10/1(Mon) 17:24:04|NO.49658

逆にこちらが聞こう。
>>チェックボックスの値をリアルタイムで取得する方法を教えていただけないでしょうか?
chkboxをリファレンスで確認したのか?
>>下のサイトにあるからふるおぶじぇくとモジュールの背景色をRBG値で変更する方法
カラフルオブジェクトモジュールを使ったことがないので予測だが、ヘルプは見てないのか?



y.tack

リンク

2012/10/1(Mon) 17:47:39|NO.49659

知識浅くて申し訳ないんですけど
>>チェックボックスの値をリアルタイムで取得する方法を教えていただけないでしょうか?
普通は無限ループして
無限ループの中で値を眺め続けるかんじだと思います
少なくても僕はそうしてます

リアルタイムで取得するAPIはあるかもしれませんが
おまじないだらけな気がしますし
無限ループの中で眺め続ける方が応用きくと思ってます



y.tack

リンク

2012/10/1(Mon) 18:01:38|NO.49660

>>下のサイトにあるからふるおぶじぇくとモジュールの背景色をRBG値で変更する方法
ちょっとURL覗きましたが
HELPないかんじですね
サンプルはあってちょっとコメントあるくらいな印象です

僕はここの色変えるサンプル試してみましたが
こっちもありです
こっちのが処理簡単そうなイメージです
http://lhsp.s206.xrea.com/hsp_object2.html

どっちにしろ(僕も完全に動作を理解できてる訳ではありませんが^^)
ある程度、他人の書いたモジュールを読まないと
質問の動作。は実現できなさそうです

これこれのオブジェクトのIDでこれこれの色にしたい
設置するオブジェクトのパラメータはコレ
って指定すれば、回答得られそうではありますが^^



y.tack

リンク

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)いじったりしてたなぁ



cats

リンク

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

色コード一覧です
http://www.finitojapan.com/cltable.html



y.tack

リンク

2012/10/1(Mon) 19:00:01|NO.49667

>>チェックボックスの値をリアルタイムで取得する方法
> ループがダメならoncmdを使うという手もあります。
おわっ割と長年HSPやってますが、知りませんでした
もらっときます メモメモ

と言いつつHDL先生で「oncmd」で質問したら
全然理解出来ないダメな僕



y.tack

リンク

2012/10/1(Mon) 19:09:31|NO.49670

oncmd でHDL先生に聞いたら
>既に登録されているウィンドウメッセージが指定された場合は、以前の登録が無効になります。
って言われたんですけど

複数のchkboxを設置する場合
どんなかんじなんですか?

gotoで飛んだ後、chkboxで設定した値をifで調べるかんじですか?



y.tack

リンク

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



BLUENOIR-Zwei-

リンク

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

このスクリプトのように普通にボタンを設置して〜って方法はできませんよね?



y.tack

リンク

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
>このスクリプトのように普通にボタンを設置して〜って方法はできませんよね?
きちんとスクリプト読んでないので理解出来ない〜

そしてまさかの使ってるモジュール違いました発言 爆



BLUENOIR-Zwei-

リンク

2012/10/1(Mon) 20:57:11|NO.49680

皆さんありがとうございました。
y.tackさんのスクリプトで解決しました。



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の洗い出しは設計に似ていると思っています
ちょっと僕の腕ではきちんと回答出来ないかもしれませんが
やりたいことを洗い出すのは重要だと思います
やりたいことを洗い出していたら解決策を思いつくこともありますし



y.tack

リンク

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の値が反映される変数を指定しているのでしょうか?
そしてどこでデフォルトの値を設定しているのでしょうか?



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