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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1005
弘中dialogのような強制アクティブ(点滅する)のウィンドウを作りたい6解決


弘中

リンク

2020/10/5(Mon) 21:46:18|NO.91548


dialog "aaaa"
以上のようなプログラムを実行したときに、dialogが表示されると思いますが
dialogが表示されている時にメインウィンドゥをクリックするとdialogのウィンドウが
点滅(?)して、dialogウィンドウが強制的にアクティブになるかと思います。
この他のウィンドウをクリックしても任意の強制的にアクティブにさせる方法は
hspで実装すること出来ますか?
inputオブジェクトとOK/キャンセルボタンを持ったウィンドウを作ってそのウィンドウに入力後
OKまたはキャンセルボタンを押さないとメインウィンドウに戻れないように作りたいです。

よろしくお願いします。



この記事に返信する


窓月らら

リンク

2020/10/5(Mon) 23:08:43|NO.91550

どうぞ。

#include "user32.as" onexit goto *close // [X]で割り込み // 親ウィンドウ screen 0,640,480,0,(ginfo_dispx-640)/2,(ginfo_dispy-512)/2 m_hwnd=hwnd // 親ウィンドウのハンドルを保存 objsize 200,40: pos 16,16: button goto "子ウィンドウを開く",*subwin stop *subwin // 子ウィンドウ screen 1,320,150,8,(ginfo_dispx-320)/2,(ginfo_dispy-250)/2 s_hwnd=hwnd // 子ウィンドウのハンドルを保存 SetWindowLong hwnd,-8,m_hwnd // 子ウィンドウにする EnableWindow m_hwnd,0 // 親ウィンドウを無効にする pos 16,16: mes "これは子ウィンドウです。" objsize 128,32: pos 100,100: button goto "OK",*subwin_ok stop *subwin_ok gsel 1,-1 // 子ウィンドウを非表示 EnableWindow m_hwnd,1 // 親ウィンドウを有効にする stop // [X]の割り込み *close if wparam=0 { end } // 親ウィンドウなら終了 goto *subwin_ok // 子ウィンドウ



窓月らら

リンク

2020/10/5(Mon) 23:19:06|NO.91551

s_hwnd=hwnd // 子ウィンドウのハンドルを保存

あ、このサンプルではこれはいらなかったですね。

ウィンドウがいくつになってもこの方法でいけます。
サンプルではgotoだけですが、必要に応じてgosubにします。



弘中

リンク

2020/10/6(Tue) 21:30:00|NO.91553

ありがとうございます。
subwin_okですが、

*subwin_ok gsel 1,-1 // 子ウィンドウを非表示 EnableWindow m_hwnd,1 // 親ウィンドウを有効にする gsel 0,1 // 親ウィンドウを表示 return
gsel 0,1
を入れて置いた方が良いような気がします。他のウィンドウの下へ行ってしまったり
するようですが、どうでしょうか?

とりあえず解決したので、解決ボタン押しておきます。



窓月らら

リンク

2020/10/6(Tue) 21:38:06|NO.91554

ああなるほど、確かにそうですね。
gsel 0,1 でもいいですが、これは順番の問題なので以下でもokです。

*subwin_ok EnableWindow m_hwnd,1 // 親ウィンドウを有効にする gsel 1,-1 // 子ウィンドウを非表示



ゆうやん

リンク

2020/10/6(Tue) 23:40:13|NO.91555

モーダルウィンドウのことですかね。
自分なりに作ってみたので、よかったらどうぞ。

#include "user32.as" #define GWL_HWNDPARENT -8 screen 1,320,240,4|2 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 button gosub "Close",*modal_close title "モーダルウィンドウ" gsel 0 Button "Open",*open onexit gosub *exit mwin=hwnd title "メインウィンドウ" stop *open gsel 1 SetWindowLong hwnd,GWL_HWNDPARENT,mwin EnableWindow mwin,0 gsel 1,1 stop *exit if wparam=1{ gosub *modal_close return } end stop *modal_close gsel 0,1 SetWindowLong hwnd,GWL_HWNDPARENT,0 EnableWindow mwin,1 gsel 1,-1 return



弘中

リンク

2020/10/7(Wed) 23:15:00|NO.91560

お二方ともありがとうございます。

どちらも、私の希望した動作が確認出来ました、
参考にさせて頂きます。ありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.91548への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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