void wxGISToolBar::AddCommand(wxGISCommand* pCmd) { switch(pCmd->GetKind()) { case enumGISCommandMenu: return; case enumGISCommandSeparator: case enumGISCommandCheck: case enumGISCommandRadio: case enumGISCommandNormal: { wxBitmap Bitmap = pCmd->GetBitmap(); if(!Bitmap.IsOk()) Bitmap = wxBitmap(tool_16_xpm); AddTool(pCmd->GetID(), wxStripMenuCodes(pCmd->GetCaption()), Bitmap, wxBitmap(), (wxItemKind)pCmd->GetKind(), pCmd->GetTooltip(), pCmd->GetMessage(), NULL); } break; case enumGISCommandDropDown: { wxBitmap Bitmap = pCmd->GetBitmap(); if(!Bitmap.IsOk()) Bitmap = wxBitmap(tool_16_xpm); AddTool(pCmd->GetID(), wxStripMenuCodes(pCmd->GetCaption()), Bitmap, wxBitmap(), (wxItemKind)enumGISCommandNormal, pCmd->GetTooltip(), pCmd->GetMessage(), NULL); SetToolDropDown(pCmd->GetID(), true); } break; case enumGISCommandControl: { IToolControl* pToolCtrl = dynamic_cast<IToolControl*>(pCmd); if(pToolCtrl) { IToolBarControl* pToolBarControl = pToolCtrl->GetControl(); wxControl* pControl = dynamic_cast<wxControl*>(pToolBarControl); if(pControl) { if(pToolCtrl->HasToolLabel()) { wxString sToolLabel = pToolCtrl->GetToolLabel(); AddLabel(wxID_ANY, sToolLabel, sToolLabel.Len() * 5); } pControl->Reparent(this); AddControl(pControl); //add ctrl to remove map m_RemControlMap[m_CommandArray.size()] = pToolBarControl; } else return; } else return; } break; default: return; } wxGISCommandBar::AddCommand(pCmd); Realize(); }