有効にした直後、Explorerの裏側に隠れてしまうことがあります。
これを回避させたいのですが、方法がわかりません。
どのようにしたらよいか教えていただきたいです。
・備考
>>input a,"ジャンプ先の番号を入れてください","0","たいとる"
というコマンドに対し
のようなウィンドウを表示して、
┌────────────────┐ │たいとる │ ├────────────────┤ │ジャンプ先の番号を入れてください│ │ │ │ │ │[0 ]│←第3パラメータが初期値 │[キャンセル] 「OK]│ └────────────────┘
・OKを押された場合、aに入力内容を代入、システム変数statに0を代入
・キャンセルを押された場合、aに入力内容を代入、システム変数statに-1を代入
という処理を行うプログラムです。
もちろんこれ単体では何も動きませんが、
*func_input sbuf=exstr(param(1)) sbuf1=exstr(param(2)) sbuf2=exstr(param(3)) //param(0)→第一パラメータ //param(1)→第二パラメータ //のように解析済みなので変数にそのまま代入 if sbuf2!"":sbuf2+=" - " //タイトルが入力されていた場合はその後に文字列を加えるのでハイフンを追加 EnableWindow mwindowhwnd,0 EnableWindow consschwnd,0 //ここで、メインウィンドウとデバッグ用コンソールウィンドウ(?)を無効にする if inputflag(0)=0{ //まだinput用ウィンドウが作られていない場合 screen ginfo(25),400,230,2 inputflag(1)=ginfo(3) syscolor 15 boxf pos 10,10 winobj "static", "", , $50000000,380,150 inputflag(2)=objinfo(stat,2) GetStockObject 17 //確かフォント指定 sendmsg inputflag(2), $30, stat //確かフォント指定 inputflag(0)=1 //ウィンドウを作ったので objsize 150,30 pos 90,190 button "キャンセル",*func_input3 pos 240,190 button "OK",*func_input2 //ボタンを付ける } gsel inputflag(1) //作ったウィンドウに描画先を指定 sendmsg inputflag(2),$c,,sbuf //スタティックテキスト書き換え pos 10,160 input sbuf1,380,22,1024 //入力ボックス buf=stat //消すときのために title sbuf2+"noh Projector" //タイトルの指定 gsel inputflag(1),1 //ウィンドウの表示 onexit goto *func_input3 //閉じるボタンはキャンセル判定 stop *func_input2 statsub=0 //システム変数statの実体 goto *func_input4 *func_input3 statsub=-1 //構造上stat変数を書き換えることができるので毎回定義し直すために goto *func_input4 *func_input4 varrest(varin(param(0)))=sbuf1 //変数の実体に文字列を代入、変数名や命令名は適当、。 log_add "\ninput question:"+sbuf+" stat:"+statbuf+" input:"+sbuf1 //コンソール(?)に出力 onexit goto *allexit //閉じるボタンの挙動を元に戻す gsel inputflag(1),-1 //入力ウィンドウ非表示 clrobj buf,buf //入力ボックスを消す gsel 0,1 //メインウィンドウをアクティブにする EnableWindow consschwnd,1 //コンソールウィンドウを有効化 EnableWindow mwindowhwnd,1 //メインウィンドウを有効化 SetActiveWindow mwindowhwnd //念押しにメインウィンドウをアクティブにする goto *funcend
これを実行した後、Explorerの裏側にメインウィンドウが隠れてしまうことがあります。
そのようなコードはどこにも書いてないはずなのですが……。
原因と対処方法を知っている人がいましたら、ご教授お願いします。