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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0327
ゆうやんモーダルウィンドウを作成してみたのですが・・・。2解決


ゆうやん

リンク

2020/3/27(Fri) 23:06:49|NO.89842

モーダルウィンドウを作成してみたのですが、ウィンドウを閉じると他のウィンドウがアクティブになってしまいます。
他のウィンドウがアクティブにならないようにすることはできますか?

#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 SetWindowLong hwnd,GWL_HWNDPARENT,0 EnableWindow mwin,1 gsel 1,-1 return



この記事に返信する


あらや

リンク

2020/3/28(Sat) 17:38:10|NO.89846

こういう感じでしょうか?

モーダルウィンドウを開いた状態で
ほかのウィンドウをアクティブにしている場合、
モーダルを閉じると取得したウィンドウ(元々アクティブだったウィンドウ)を
アクティブにします。

当然ですが、ほかのウィンドウがアクティブでない場合は
HSPのウィンドウ(ID0)がアクティブになります。

#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{ hFgwin = GetForegroundWindow(); // 閉じるボタンを押した時の最前面のウィンドウハンドル取得 gosub *modal_close return } end stop *modal_close SetForegroundWindow hFgwin; // 最前面ウインドウを取得したハンドルに設定 SetWindowLong hwnd,GWL_HWNDPARENT,0 EnableWindow mwin,1 gsel 1,-1 return



ゆうやん

リンク

2020/3/29(Sun) 09:48:32|NO.89852

すみません。自己解決しました。あらやさんの方法ではダメだったので、
*modal_close のラベルの後に、gsel 0,1を入れたらうまくいきました。

#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



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