0

私は主に、実行時にロードされる Carbon バンドル内で wxWidgets を使用してプラグインをプログラムします。プラグインが実行されているホスト アプリケーションは、ネイティブ ウィンドウ ハンドル ( WindowRef) を提供します。これを使用して、カスタムの wxWidgets ベースの GUI クラスを追加できます。

wxWidgets クラスでネイティブ ウィンドウ ハンドルを使用するには、すべてのカプセル化wxTopLevelWindowを行うラッパー クラス を作成する必要がありました。WindowRefこれまでのところ、これはかなりうまく機能していwxGLCanvasますが、ネイティブ ウィンドウ ハンドルのウィンドウ クラスが " kFloatingWindowClass" 型ではない場合、特定の状況下で垂直方向のマウス オフセットが発生しました。wxPanel全体wxGlCanvasに情報パネル ( ) を表示し、ユーザーが情報パネルを非表示にすると、マウス オフセットがなくなり、問題を回避できます。

今私の質問:

  1. この動作の「簡単な」説明はありますか?
  2. パネル自体を使用せずに、特定のメソッド呼び出しを使用して情報パネル効果を模倣することは可能ですか? Update()関連するすべてのコンポーネントの組み合わせと 呼び出しをいくつか試しRefresh()ましたが、これまでのところどれも機能しませんでした。を使用しても、wxSizerここでは役に立ちませんでした。

プラグイン アプリケーションで使用されるウィンドウ階層:

wxCustomTopLevelWindow (ホスト アプリケーションによって提供される WindowRef)
 wxPanel (すべてのアプリケーション パネルの親ウィンドウ)
  wxPanel (アプリケーション情報パネル)
  wxPanel (アプリケーションのメインパネル)
   wxPanel (opengl メインパネル)
    wxGlCanvas (メインの OpenGL キャンバス)

何か案は?どんな助けでも大歓迎です。

4

1 に答える 1

0

座標系の不一致ですか?Mac OS X API の中には、原点として左上を使用するもの (正の y が下に行く) と、左下を使用するもの (正の y が上に行く) があります。

画面の垂直中央付近では誤差が小さいため、これは断続的に見えることがあります。中心から遠いほど、座標は非常に不正確に見えます (実際、画面の反対側にあります)。

wxPanel全体wxGlCanvasに情報パネル ( ) を表示し、ユーザーが情報パネルを非表示にすると、マウス オフセットがなくなり、問題を回避できます。

画面の中央にこのパネルをポップアップ表示し、マウスで閉じていた場合、これは厄介な問題である可能性があります。

于 2010-03-21T21:36:33.660 に答える