- ベストアンサー
呼び出したフォームが最前面に表示されない
いつもお世話になっております。 現在、医療システムの保守・メンテナンス業務を行っております。 先日、顧客より通常展開される画面上で入力した事項に対する、 チェック機能を追加し、チェックに引っかかった場合は、 新たな画面を起動して、その画面上で警告メッセージを表示すると共に、 チェックに対する修正を加えられるようにしたいとの要望を受けました。 現在、対応中ですが、どうしてもその画面が最前面に表示されません。 開発元に問い合わせれば済む話なのですが、基本的に回答が遅い為、 できることならこちら側で対処したいと思っております。 現在まで、社員の方の意見や本、インターネットで調べ「SetWindowsPos」等を試みましたが成功しませんでした。 元のシステムの仕様に問わず、100%最前面にフォームを表示させる 方法がございましたら、ご教授頂けますようお願い申し上げます。 なお、端末はWindows NT4.0、言語はVB5です。現在、プログラマーとして 生計をたてておりますが、経験が浅いため、知恵をお借りしたく 存知ます。何卒よろしくお願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 試みましたが成功しませんでした。 SetWindowsPosを利用しますね。どういうふうに「成功しませんでした」なんでしょうか? VB5とのことですから、SPなどが適応していないのかな? Shell32.dllがVer4.71以降なら、Shellオブジェクトの「全ウィンドウを最小化」が利用できるかも?(Minimize.All) その上で、必要なウィンドウだけ「元のサイズに」「アクティブ」にでどうでしょうか。
その他の回答 (1)
- khazad-lefty
- ベストアンサー率44% (296/668)
AttachThreadInputを併用する必要があるみたいです。 下記リンクはC++ですが、 API使用の経験があるのであれば 「SDK版」のサンプルから VBへのコンバートはそう難しいことではないかと思います。
お礼
今朝、ご回答頂いたにも関わらず、お礼ならびに返答が 大変遅くなりましたこと、深くお詫び申し上げます。 先ほど、ご回答を拝見いたしました。 ご質問させていただきました件ですが、フォームをモーダルで 呼び出し、SetForegroundWindowを用いることで、解決されました。 このような事を口に出せる立場ではないことは充分承知致して おりますが、最後に、ご教授頂きましたこと、 改めて感謝致しますと共に、この度の失礼、お詫び申し上げます。
お礼
夜分遅くにご回答頂いたにも関わらず、今に至るまで お礼どころか、何の返答も返さず、大変申し訳ございません。 深く、お詫び申し上げます。 先ほど、ご回答を拝見いたしました。 ご質問させていただきました件ですが、フォームをモーダルで 呼び出し、SetForegroundWindowを用いることで、解決されました。 お礼が遅いだけでなく、折角ご教授頂きましたことを 無視する結果となり、本当に申し訳ございません。 改めまして、お詫び申し上げます。