私は主に、実行時にロードされる Carbon バンドル内で wxWidgets を使用してプラグインをプログラムします。プラグインが実行されているホスト アプリケーションは、ネイティブ ウィンドウ ハンドル ( WindowRef
) を提供します。これを使用して、カスタムの wxWidgets ベースの GUI クラスを追加できます。
wxWidgets クラスでネイティブ ウィンドウ ハンドルを使用するには、すべてのカプセル化wxTopLevelWindow
を行うラッパー クラス
を作成する必要がありました。WindowRef
これまでのところ、これはかなりうまく機能していwxGLCanvas
ますが、ネイティブ ウィンドウ ハンドルのウィンドウ クラスが " kFloatingWindowClass
" 型ではない場合、特定の状況下で垂直方向のマウス オフセットが発生しました。wxPanel
全体wxGlCanvas
に情報パネル ( ) を表示し、ユーザーが情報パネルを非表示にすると、マウス オフセットがなくなり、問題を回避できます。
今私の質問:
- この動作の「簡単な」説明はありますか?
- パネル自体を使用せずに、特定のメソッド呼び出しを使用して情報パネル効果を模倣することは可能ですか?
Update()
関連するすべてのコンポーネントの組み合わせと 呼び出しをいくつか試しRefresh()
ましたが、これまでのところどれも機能しませんでした。を使用しても、wxSizer
ここでは役に立ちませんでした。
プラグイン アプリケーションで使用されるウィンドウ階層:
wxCustomTopLevelWindow (ホスト アプリケーションによって提供される WindowRef) wxPanel (すべてのアプリケーション パネルの親ウィンドウ) wxPanel (アプリケーション情報パネル) wxPanel (アプリケーションのメインパネル) wxPanel (opengl メインパネル) wxGlCanvas (メインの OpenGL キャンバス)
何か案は?どんな助けでも大歓迎です。