MessageBoxの表示位置について


aver  2006-02-18 13:47:55  No: 20082

作成中のアプリで処理の実行結果をMessageBoxで通知する処理を行っているのですが、あるタイミングで(何を契機とするのかはまだ不明です、長時間実行しているとまれに発生します)MessageBoxが表示される位置がデスクトップの中央ではなく右下の方へずれていく現象に悩んでいます。「TApplicationのMessageBoxメソッドはWindowsのMessageBoxAPIと同様であり、その表示位置は指定不可」と理解していたのですが。。。
この現象について何か情報をお持ちの方はご指摘をお願いします。


Syake  2006-02-18 19:48:54  No: 20083

MessageBoxは使ったことは無いので全然、解決策には
なりませんし、回答にもなってません。m(__)m

私はもっぱらMessageDlgです。
私は、これでそのような現症は今のところ経験ありません。
MessageDlgでも同じ事は可能と思いますが現症は同じになり
ますでしょうか?


MessageBox拉致  2006-02-18 20:19:07  No: 20084

private
    procedure WMSpecial(var Msg: TMessage); Message WM_APP;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Handle, WM_APP, 0, 0);
  Application.MessageBox('おしっこチャウで〜', 'はしっこ', MB_OKCANCEL + MB_DEFBUTTON2);
  PostMessage(Handle, WM_APP, 0, 0);
  Application.MessageBox('きらら、はえぬき、どまんなか〜', 'どまんなか', MB_OKCANCEL + MB_DEFBUTTON1);
end;

//--------{}<>=() := ''?%&#$!"~?!(**)--------//

procedure TForm1.WMSpecial(var Msg: TMessage);
var
  hW: HWND;
  R: TRect;
  X, Y: Integer;
begin
  hW := FindWindow('#32770', 'どまんなか');
  if hW <> 0 then begin
    GetWindowRect(hW, R);
    X := (Screen.Width-(R.Right-R.Left)) div 2;
    Y := (Screen.Height-(R.Bottom-R.Top)) div 2;
    SetWindowPos(hW, HWND_TOPMOST, X, Y, 0, 0, SWP_NOSIZE);
  end;
  hW := FindWindow('#32770', 'はしっこ');
  if hW <> 0 then begin
    GetWindowRect(hW, R);
    X := Screen.Width-(R.Right-R.Left);
    Y := Screen.Height-(R.Bottom-R.Top);
    SetWindowPos(hW, HWND_TOPMOST, X, Y, 0, 0, SWP_NOSIZE);
  end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加