タイトル : 複数画面へのCreatePopupMenuを使用したメニュー作成 投稿日 : 2008/09/25(Thu) 17:44 投稿者 : ぼた
2つの画面(Form1とForm2)にCreatePopupMenu APIを使用しプルダウンメニューを作成したいと 考えております。まずはForm1に下記手順にて作成を行いました。 1.CreatePopupMenuを定義しメニューを作成 2.メニュー選択のイベントを取得するためにForm1をサブクラス化 変更前の値 = SetWindowLong(Form1.hwnd, _ GWL_WNDPROC, AddressOf ウインドウプロシージャ関数) 3.TrackPopupMenuを使用しメニューを表示 4.メニューが表示され項目をクリックするとウインドウプロシージャ関数が呼ばれ WM_COMMAND(メニュー項目が選択されたメッセージ)が来たら選択された項目を取得 と大雑把ですが普通の手順だと思います。 これをForm2にもまったく同じメニューを表示したいと思い以下の手順を追加しました。 1.Form2を開く時にForm1のサブクラス化を解除し、Form2をサブクラス化する 2.Form2を閉じるときに、Form2のサブクラス化を解除し、Form1をサブクラス化する 上記変更で、Form1でも2でも問題無く動作することができました。 しかし、ソース上から実行後、テストを行いVBの停止ボタンを押すとVBが終了してしまうのです。 停止ができる場合もありますが、その後実行するとほぼ100%落ちます。 いろいろ手順などを変えましたがメニュー選択時のメッセージをフックできない不具合が発生 しましうまくいきません。 手順のミスや、考え方のミス等ありましたらご教授いただきたいと思います。 以上 よろしくお願いします。 環境:Windows2000Pro(SP4) + VB6(SP6) |