作成中のアプリで処理の実行結果をMessageBoxで通知する処理を行っているのですが、あるタイミングで(何を契機とするのかはまだ不明です、長時間実行しているとまれに発生します)MessageBoxが表示される位置がデスクトップの中央ではなく右下の方へずれていく現象に悩んでいます。「TApplicationのMessageBoxメソッドはWindowsのMessageBoxAPIと同様であり、その表示位置は指定不可」と理解していたのですが。。。
この現象について何か情報をお持ちの方はご指摘をお願いします。
MessageBoxは使ったことは無いので全然、解決策には
なりませんし、回答にもなってません。m(__)m
私はもっぱらMessageDlgです。
私は、これでそのような現症は今のところ経験ありません。
MessageDlgでも同じ事は可能と思いますが現症は同じになり
ますでしょうか?
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;
ツイート | ![]() |