2023/10/20

MessageBoxの表示位置

 その昔、まだPCモニターが小さくてモニターに限られたアプリしか稼働させていない時代にはMessageBoxがモニターの中央表示されてもそれ程違和感はなかったです。しかし、徐々に大きくなりうちでは43型4Kモニターを使ってますが、基本的にモニター右側にはEdgeが稼働してて、左側に諸々動かし、更に仮想デスクトップも利用してたりと事情が変わってきてます。左隅で稼働してるアプリがモニター中央にいきなりダイアログボックスを表示しても小さいものだと気が付かずに延々と待つ事もあったりしますので自分のアプリは何とかしたいと思ってました。もう随分前にTARGETの作者さんに要望した事もありましたがスルーされてました。まあ、既にたまに検証的に比べたりするのに使う程度になったTARGETはスルーされても問題ないです。

アイビー先生はここ最近だと思うけど、この問題を問合わせると何やら回答を始めるんですが途中で「間違えました。この問題には回答できませんので話題を変えましょう」って感じになります。グーグル先生に問合わせ参考になりそうなサイトの記事もブックマークしてあり、そろそろ、それを参考に実装しなきゃな~っと眺めながら一応もう一度と検索掛けてたらGitHubにMessageBoxEx.csというのを発見!そもそもオリジナルのMessageBox.Showにも第一引数にIWin32Windows ownerというのがあるんですが、この役割が微妙でMessageBoxExではこれを指定するとそのownerの中央に表示する様に出来てます。

プロジェクトにクラスとして追加して、プロジェクト全体で置換実行したらエラーが一杯出たのですが、MessageBoxEx.cs自体も置換対象でやっちまいました😅

追記 2023/10/21 11:09
出所検索するのに苦労しそうな気がして補足します。GitHubで探すと違う同名のものが存在していてそれがヒットする感じでした。

Parent centered MessageBox dialog in C#
が正規のタイトルな所から参考にしました。直リンク貼るのが問題有るか無いか不明なので避けてみました。

0 件のコメント:

コメントを投稿