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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0209
MSX68000テキストボックスやボタンを消す方法8解決


MSX68000

リンク

2021/2/9(Tue) 15:38:15|NO.92232

 久しぶりの書き込みになります。

 今作っているゲームは、冒頭で自分の名前を入力するシステムで、input命令でテキストボックスを出し、また入力完了にbutton命令を使うのも判ります。

 だがこの後、このテキスト入力部分はほとんど使わないので、画面から消したいのですが、その方法が判りません。

1.オブジェクトは存在していても、見た目を完全に消す(VisualBASICではこういうパラメータ変更が出来ましたよね)
2.座標を画面外に動かす(プチコンのスプライトみたいに)
3.別命令でオブジェクト自体を完全に削除する(必要になったらまた新設する)

 もし3つのどれも出来なければ

4.テキストボックスとボタンを持つ別画面をscreen命令で常時またはその都度新設し(screen命令の使い方は覚えました)、入力が必要なとき時だけgmode命令でそっちを出してまた引っ込める

 になると思うのですが、どれを使う事になるのでしょう?



この記事に返信する


沢渡

リンク

2021/2/9(Tue) 17:42:25|NO.92233

1のやり方なら、ShowWindowを使えば良いのではないでしょうか。
詳しい説明はこちらで↓
http://chokuto.ifdef.jp/urawaza/api/ShowWindow.html

#include "user32.as" a="" input a h_inp=objinfo(stat,2) button gosub "隠す",*hide button gosub "表示",*show stop *hide ShowWindow h_inp,0 //隠す SW_HIDE=0 return *show ShowWindow h_inp,5 //表示 SW_SHOW=5 return



FULLMSX

リンク

2021/2/9(Tue) 18:57:50|NO.92234

好みにもよりますが私はgselコマンドで初期設定などを隠しています。



f(危険地域出張多発中)

リンク

2021/2/10(Wed) 11:56:43|NO.92237

clrobjが一番簡単なんじゃね?



MSX68000

リンク

2021/2/24(Wed) 13:36:11|NO.92337

 プログラムをいろいろ考えたりしていて、この書き込みをうかkり忘れていました。
スンマセン。

 で入力方法ですが結局、最初の質問の4の方法で、入力専用ウインドウを出して使う事が
何とか出来ました。

 で、新たな技術上の質問なんですが…

質問1
 ウインドウの右上の「×」を表示させないオプションは、HSPにありますか?
(プレイヤーに消されるとゲーム進行が止まってしまう)

質問2
 入力は2バイト日本語も可能ですが、1バイト文字と2バイト日本語と、
プレイヤーが操作出来るだけでなく、HSPのプログラムから強制的に切り替えたり
一方のモードを禁止できますか?
(日本語入力後、2バイト文字のままゲームを進めると、プログラム実行画面の外で
 日本語変換が働いてしまうので、操作しにくく感じてしまう)



沢渡

リンク

2021/2/24(Wed) 14:44:23|NO.92338

質問1ですが、このような形ではどうでしょうか。

#include "user32.as" #const SC_SIZE 0xF000 #const SC_CLOSE 0xF060 #const SC_MAXIMIZE 0xF030 #const SC_MINIMIZE 0xF020 #const SC_RESTORE 0xF120 #const WS_SYSMENU 0x80000 #define b_not(%1) ((%1)^0xFFFFFFFF) //全ビットを反転する GetSystemMenu hwnd,0 h_sysmenu=stat //システムメニューのハンドル RemoveMenu h_sysmenu,SC_CLOSE,0 //システムメニューから「閉じる」を削除。これで右上の[X]も無効になる。 //以下は必要なら RemoveMenu h_sysmenu,SC_RESTORE,0 //「元のサイズに戻す」を削除 RemoveMenu h_sysmenu,SC_SIZE,0 //「サイズ変更」を削除 RemoveMenu h_sysmenu,SC_MAXIMIZE,0 //「最大化」を削除 RemoveMenu h_sysmenu,SC_MINIMIZE,0 //「最小化」を削除 //以下はタイトルバー上のボタン自体を消したいのなら実行。 GetWindowLong hwnd,-16 SetWindowLong hwnd,-16,stat&b_not(WS_SYSMENU) onexit gosub *dummy //右上の[X]を消してもALT+F4等なら閉じられるので、 //「終了」ボタン以外の方法では終わらせられないようにする button goto "終了",*exit stop *exit end *dummy return



MSX68000

リンク

2021/2/25(Thu) 09:46:29|NO.92344

 前回のレスを書く前に頂いたレスと、ちょっと情報がすれ違ってしまいました。

 f(危険地域出張多発中)さんからclrobj命令を教えてもらったので、それを使ったら
設定したテキストボックスとボタンをどちらも消せたので、これをうまく使って、
入力専用ウインドウを個別設定するのでなく、ゲーム本番用のウインドウにテキスト
ボックスとボタンを組み込み、入力し終えたらすぐ消す事が出来ました。
これに伴い、入力専用ウインドウの右上の「×」を消したい必要も発展的解消しました。

 あと引き続き、[NO.92337]の質問2(1バイト文字と2バイト日本語)についての
アドバイスがあれば、お待ちしています。



こいる

リンク

2021/2/25(Thu) 10:41:22|NO.92345

1バイト文字や2バイト日本語というのは、IMEのオンオフのことでしょうか?

それでしたら、下記のスクリプトでIMEをオンにできないようにできます。
操作先のウィンドウに対してなので、複数のウィンドウを使う場合は注意してください。
参考: http://www.hspcenter.com/hsptvm/archives/2006/03/post_1.html

#uselib "imm32.dll" #func ImmAssociateContext "ImmAssociateContext" sptr,sptr ImmAssociateContext hwnd,0



MSX68000

リンク

2021/2/28(Sun) 09:09:42|NO.92366

>こいるさん

 ありがとうございます。そっちもちょっと試してみます。



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