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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1108
雪月夜oncmdとonkeyの動作2解決


雪月夜

リンク

2013/11/8(Fri) 19:16:55|NO.58025

こんばんは、もしくはこんにちは
質問なんですが、まず以下のプログラムを実行してみて下さい。

;緑画面 *gm1 color ,255:boxf *gm1keydown oncmd goto *gm1ivent,$100 stop *gm1ivent if wparam=13{ goto *gm2 } goto *gm1keydown ;黄画面&入力ボックス *gm2 color 255,255:boxf pos 200,200:input pname,200,30,50 *gm2keydown onkey goto *gm2ivent stop *gm2ivent if wparam=13{ clrobj 0 goto *gm1 } goto *gm2keydown
最初に緑の画面が出てる状態でエンターキーを押すと、黄色の画面に変わり入力ボックスが表示されます
そこでまたエンターキーを押すと緑の画面に戻りますが、再度エンターキーを押しても処理が行われず、黄色の画面に変わりません
緑→黄→緑→黄・・・と延々と変化し続けるようにしたいのですが、どうすれば良いでしょうか?
一応、15行目をコメントアウトして17行目を「oncmd goto *gm2ivent,$100」とすれば理想の動作は実現できますが、出来れば入力ボックスは外さないようにしたいです
回答よろしくお願いします



この記事に返信する


暇人

リンク

2013/11/8(Fri) 20:44:50|NO.58027

oncmdとonkeyだとonkeyが優先されて
二回目以降は*gm2iventと*gm1が繰り返されてる

>*gm2ivent
> if wparam=13{
の下辺りに

onkey 0
を入れてonkeyを一時停止すれば良い

他の方法として現在どっちの画面になってるかを変数に記憶して
エンター押されたら現在の画面と違う方の画面になるようにすれば良い

>15行目をコメントアウトして17行目を「oncmd goto *gm2ivent,$100」とすれば理想の動作は実現できますが、出来れば入力ボックスは外さないようにしたいです
oncmdじゃ無く両方onkeyにしてしまえば良い話だが・・・

;緑画面 *gm1 color ,255:boxf onkey goto *gm1ivent stop *gm1ivent if wparam=13{ goto *gm2 } stop ;黄画面&入力ボックス *gm2 color 255,255:boxf pos 200,200:input pname,200,30,50 onkey goto *gm2ivent stop *gm2ivent if wparam=13{ clrobj 0 goto *gm1 } stop



雪月夜

リンク

2013/11/8(Fri) 22:06:40|NO.58029

おお、ちゃんと動作します!
実はonkeyやoncmdというものをよく分かってませんでしたが、暇人さんのおかげで疑問が解決しました

>oncmdじゃ無く両方onkeyにしてしまえば良い話だが・・・
その発想はありませんでした
ウィンドウメッセージを用いるoncmdの方が、いろいろ応用が利いて便利だと思いましたので・・・
思考が大分偏っていたようです

解決にチェックさせてもらいます、返答どうもありがとうございました



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