tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 複数画面への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)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。