まず、いくつかのリンク(自分で試してみたい人向け): ProteusVXVSTプラグインをホストのOpenMPTにロードしています。プラグインは問題なく動作しますが、一部のウィンドウメッセージを盗むように見えるため、ホストによって作成されたメニューをクリックしたり、閉じるボタンをクリックしたりしても効果はありません。[閉じる]ボタンをクリックしても「ボタンダウン」アニメーションはトリガーされないため、Windowsはウィンドウアクションに関するメッセージを受信しない可能性があります。Renoiseのような他のVSTホストにはこの問題がないことを知っています(ウィンドウの閉じるボタンをクリックすると問題なく動作します)。したがって、これを回避する方法が必要です。
Proteus VXは、おそらくMFC自身のウィンドウプロシージャを呼び出すのを忘れている(そしておそらくDefWindowProcも呼び出さない)不適合のウィンドウプロシージャをインストールしていると思いますが、それを見つける方法はもちろん、修正する方法もわかりません。プラグインウィンドウを開く前に元のGWL_WNDPROCを保存し、エディターが表示された直後にこのprocを復元しようとしましたが、それは役に立ちません。
編集:プラグインは間違いなく危険なことをしなければなりません。ウィンドウで何かを実行できるようにする前に、元のWindowProcを使用して保存します。
windowProc = GetWindowLongPtr(m_hWnd, GWL_WNDPROC);
プラグインがウィンドウ初期化ビジネスを実行した後、それを復元します。
SetWindowLongPtr(m_hWnd, GWL_WNDPROC, windowProc);
これにより、プラグインGUIを少しいじるまで、自分のメニューとウィンドウの[x]ボタンを使用できます。プラグインは、入力フォーカスを受け取るとすぐにウィンドウプロシージャを再度上書きすると思います。