はじめまして。
現在ツール系のソフトを制作中なのですが、各種設定をしてもらう際など、1つ目のウィンドウを残したままで二つ目のウィンドウを利用する事があります。
この時、現在は
≪A 新たなウィンドウを開いたとき≫
・screen命令でウィンドウID1を作成
・User32.dllのEnableWindow関数でウィンドウID0を無効化(操作できないようにする)
・画面描画、ユーザが操作
≪B ユーザがOKやキャンセルをクリックした時≫
・先程のEnableWindow関数でウィンドウID0を有効化(元に戻す)
・gselでうぃんどうID1を非表示
・gselで操作先を0に戻す
という操作をしています。
しかし、このやり方ではAlt+F4のキーボード操作や、ウィンドウ右上の×ボタンのクリックなどでウィンドウ0も一緒に消え、ソフト全体が終了してしまいます。
私もonexitを使って上記Bの個所にジャンプする方法を考えましたが、この方法ではタスクマネージャからの終了要求やwindows事態の終了の際に本来のonexitでの処理である保存やメモリ会報などの処理が出来なくなってしまいます。(onexitでのジャンプ先で条件分岐する方法もなしではないと思いますが、さまざまな要因が考えられるのであまり現実的ではないかと思っています。)
これを回避し、「名前を付けて保存」などのダイアログのように、片方のウィンドウだけを閉じるようにする方法が分かる方、教えてください。