2012-01-09 27 views
0

私はwxWidgetアプリケーションを持っています。そして、私のMainFrameのどこかに、新しいフレームを作成し、それにShowを呼び出します。しかし、ユーザーがこの操作をやり直す場合は、新しいフレームを作成したくありません。私は前のものを活性化したい。私は作成されたフレームへのポインタを格納しますが、アクティベーションクモをどのように彼に送るのか分かりません。私はcreatedFrame-> ProcessEventsでActivatedEventを送信しようとしましたが、意味はありません。wxWidgetsでフレームを手動でアクティブにする方法は?

アクティブ化コマンドをフレームwxWidgetsに送信できますか?

+0

「フレームをアクティブにする」という用語に慣れていないのはどういう意味ですか? – ravenspoint

+0

wxWidgetsのフレームは単純なウィンドウです。フレームをアクティブにすると、そのウィンドウにフォーカスが移動します。ウィンドウがバックグラウンドにある場合、OSはそれを現在アクティブなウィンドウとして表示します。私はWinApi経由でそれを行うことができますが、この方法はWindowsのみであり、wxWidgetsのクロスプラットフォームアプローチを使用したいのですが、wxWidgetsでサポートされているかわかりません。私は2.8.12 wxWidgetsを使用してBTW私は –

答えて

0

、ウィンドウのフォーカスをつかむ方法のSetFocus(呼び出し)

wxFrame * pFrame = new wxFrame(...); 

... 

pFrame->SetFocus(); 

http://docs.wxwidgets.org/stable/wx_wxwindow.html#wxwindowsetfocus

するために、あなたはこれをしたい私はなぜだろうか?それは少し奇妙です!通常は、ユーザーがウィンドウをクリックすると、これをOSに委ねます。実際、wxFrameはフォーカスを得ることはほとんどありません。なぜなら、それができることはほとんどないからです(何もありません)。通常は、フレームに含まれるウィジェットの1つがフォーカスを取得します。たとえば、テキストコントロールを使用して、ユーザーが入力を開始できるようにします。

これは本当にやりたいことでしょうか?その場合の手順は次のようになります:

フレーム
  • のクライアント領域を占有するwxPanelを作成します。
  • +0

    pFrame-> SetFocus();私のために働く。ありがとう! –

    +0

    BTW。私のアプリケーションでは、3-5項目のリストがあります。ユーザーがリストアイテムをクリックすると、詳細情報を含む新しいフレームが表示されます。そして、アプリケーションのロジックによって、2つの詳細フレームを表示することができます。そして、ユーザーがリストアイテムを再度クリックし、詳細フレームが閉じられていない場合 - SetFocus()を呼び出すと、フレームがアプリケーションの前面に表示されます。 –

    関連する問題