>266 >283

シンプルなテストアプリを作ってやってみたところ、一部に、よく判らない動作が
おきているようです…。

Form2 に pop手続きを作り、そこで、以下のように記述。
タイマーはForm2を自動で閉じるための物です。(ShowWindow(Handle, SW_HIDE);を記述)

procedure TForm2.pop;
begin
 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
  SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
 Timer1.Enabled := True;
end;

Form1の呼び出し側では、同じくタイマーで、一定間隔で自動的に、Form2.pop; を呼んで
Form2を表示。

この作りで、Form1が、アクティブ、非アクティブ、最小化、いずれの状態でも
Form2は表示され、かつ他ののアプリの邪魔をしないという、期待通りの動作をします。

ところが、Form1が非アクティブかつForm2が表示されている間に、Form2をクリックすると、
1) Form2がアクティブ化、Form1が非アクティブのままトップに表示。
2) タイマーでForm2が、消えると同時に、Form1は、元の位置(アクティブの後ろ)へ。
3) 次のForm2.pop;で、Form2が表示されると同時に、Form1も非アクティブのままトップへ。
4) タイマーでForm2が閉じると、今度はForm1が非アクティブのまま最上面に残ります。
これ以降は、Form1がトップに出たまま、Form2が表示/非表示を繰り返します。

どうしてこんなことになるのか・・・。