タイトル | : 複数画面へのCreatePopupMenuを使用したメニュー作成 |
記事No | : 13059 |
投稿日 | : 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)
|