3

既存の wxToolbar の代わりとして wxAuiToolBar クラスを試しています。

私の初期化は正常に動作しています - 埋め込まれた/ベクトル化された .png ファイルをアイテムのビットマップとして設定することさえできます。これは本当にクールです - しかし、ユーザーがツールバーのサイズを指定できるようにしたいと思いますしたい (16x16、22x22 または 32x32)。これは、各ツールバー項目に対して wxAuiToolBarItem.SetBitmap() を呼び出し、次に wxToolBar.Realize() を呼び出して変更を再描画することを意味すると思います。これを行うためのより良い方法があれば、私を修正してください!

例として、新規/開く/保存/印刷ボタンを備えた標準のファイル ツールバーがあります。これらは、次のようにメンバー wxAuiManager guy に追加されます。

auiFileToolBar = new wxAuiToolbar(pFrame, ID_AUIFILETOOLBAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE);
auiFileToolBar->AddTool(ID_TBI_FILE_NEW, _("New"), wxNullBitmap, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL);
// ... other toolbar items
auiFileToolBar->Realize();
m_AuiManager->AddPane(auiFileToolBar, wxAuiPaneInfo().Name(_T("File")).ToolbarPane().Caption(_T("File")).Layer(10).Top.Gripper(false));

すべての設定が完了したので、フレームに関連付けられたメンバー wxAuiManager (m_AuiManager) を指定して、特定の ToolBarItem を取得するにはどうすればよいでしょうか? または、ツールバーのサイズを変更するより良い方法はありますか?

4

1 に答える 1

1

さて、多分これは2つの部分からなる質問でした:

  1. 作成したwxAuiToolBarItemを取得するにはどうすればよいですか?
  2. 作成したツールバーのサイズを変更する最良の方法は何ですか?

wxAuiToolBar-> FindTool()メソッドを使用して、wxToolBarItemを取得できました。ツールバーをメンバー変数として持っているので、アクセスがかなり簡単になります。コードは次のようになります。

wxAuiToolBarItem *tbi;
tbi = pMainFrame->m_AuiToolbar-FindTool(ID_TBI_FILE_NEW);
// do something with the toolbar item
tbi->SetBitmap(random_bitmap_thingy);

質問の2番目の部分(大きなツールバーと小さなツールバーを切り替えるためのベストプラクティスの質問)については、答えがあるかどうかわかりません。今、私は以下を呼び出すメソッドを持っています:

pMainFrame->m_AuiToolbar->ClearTools();

次に、AddTool()メソッドにパラメーターとして渡された新しいビットマップを使用してm_AuiToolbar-> AddTool()を呼び出します。小さいビットマップと大きいビットマップを問題なく切り替えることができるので、これは機能しているようです。それを行うための最良の方法ですか?わからない。

于 2012-10-29T00:59:20.907 に答える