非アクティブFormから開くForm2を"Enter"で閉じるには?

解決


ネオ800  2005-04-10 00:29:54  No: 120775  IP: [192.*.*.*]

お世話になります。
VB初心者&独学でどうしても解けない問題があり、是非、お知恵をお貸し頂けたらと思います。

アラームを作ろうと思い、下記のようなプログラムを作りました。(簡略版)
指定した時間になるとForm2が開かれ、Form2に貼られた"閉じる"ボタンで閉じるという単純なものです。

ここで問題が発生したのですがアプリケーションがアクティブ(選択されている)状態ですとForm2もアクティブ状態になり"Enterキー"で閉じることが出来ます。
しかし、Form1がアクティブ状態ですと開くForm2も非アクティブ状態で開かれ、タスクバーが点滅し、"Enterキー"で閉じる事が出来ません。
結果、一度マウスでクリックしてアクティブにしてからではないと閉じれません。

SetActiveWindow、SetForegroundWindow、SetForcusなどでForm1、2をアクティブしても見た目はアクティブになっていますが、そのままの状態では"Enterキー"で閉じることが出来ません。

メインForm1が非アクティブ状態でもForm2を開いた時に、"Enterキー"だけで閉じる方法は無いでしょうか…。

まとまりの無い文章で難解かと思いますが、宜しく御願いします。
(VB6.0、Windows2000)


*Form1*
Private Sub Form_Load()
  Me.Timer1.Interval = 500
End Sub

Private Sub Timer1_Timer()
  If Format(Now, "hh:mm:ss") = "12:00:00" Then
    Form2.Show
  End If
End Sub


*Form2*
Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub Form_Load()
  Form2.Command1.Caption = "閉じる" 
End Sub

編集 削除
ネオ800  2005-04-10 00:34:38  No: 120776  IP: [192.*.*.*]

文章に誤りがありました。
訂正致します。

【誤】
しかし、Form1がアクティブ状態ですと開くForm2も非アクティブ状態で開か...          ~~~~~~~~~~~~~~~~        

【訂正】
しかし、Form1が非アクティブ状態ですと開くForm2も非アクティブ状態で開か...         ~~~~~~~~~~~~~~~~~

編集 削除
ネオ800  2005-04-10 16:51:59  No: 120777  IP: [192.*.*.*]

いろいろと調べた結果、OSの仕様だそうです。
回避するにはレジストリ値の変更が必要だという事で諦めます。

編集 削除
はまち  2005-04-10 18:52:07  No: 120778  IP: [192.*.*.*]

SetWindowPosでForm2を全てのウィンドウの手前に表示する属性を与えるとか
mouse_evetn関数でForm2が手前になる手順を再現してやるとか
いろいろ手はありそうだけど。

編集 削除
ネオ800  2005-04-11 09:18:34  No: 120779  IP: [192.*.*.*]

mouse_event関数で見事に実現できました!!
半ば諦めかけていた暗闇に一筋の光が差し込んだ感じでした。
有難う御座いましたm(_ _)m

編集 削除
kara  2005-04-11 11:52:46  No: 120780  IP: [192.*.*.*]

すでに解決されているようですが、以下の記事が参考になると思います
http://techtips.belution.com/ja/vc/0012/

編集 削除