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

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

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



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