You can add it easy:
class CUITaskPanel : public CXTPTaskPanel { class CTaskPanelCmdUI; public: CUITaskPanel(); virtual ~CUITaskPanel();
DECLARE_MESSAGE_MAP()
afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM); void OnUpdateCmdUI(CWnd* pTarget, BOOL bDisableIfNoHndler);
};
CUITaskPanel::CUITaskPanel() {
}
CUITaskPanel::~CUITaskPanel() {
}
BEGIN_MESSAGE_MAP(CUITaskPanel, CXTPTaskPanel) ON_MESSAGE(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI) END_MESSAGE_MAP()
class CUITaskPanel::CTaskPanelCmdUI : public CCmdUI { public: // re-implementations only virtual void Enable(BOOL bOn); virtual void SetCheck(int nCheck); virtual void SetText(LPCTSTR lpszText);
public: CXTPTaskPanelGroupItem* m_pItem; };
void CUITaskPanel::CTaskPanelCmdUI::Enable(BOOL bOn) { m_bEnableChanged = TRUE;
ASSERT(m_pItem != NULL);
m_pItem->SetEnabled(bOn); }
void CUITaskPanel::CTaskPanelCmdUI::SetCheck(int nCheck) { ASSERT(nCheck >= 0 && nCheck <= 2); // 0 =>off, 1 =>on, 2 =>indeterminate ASSERT(m_pItem != NULL);
m_pItem->SetItemSelected(nCheck); }
void CUITaskPanel::CTaskPanelCmdUI::SetText(LPCTSTR lpszCaption) { ASSERT(m_pItem != NULL);
m_pItem->SetCaption(lpszCaption); }
LRESULT CUITaskPanel::OnIdleUpdateCmdUI(WPARAM wParam, LPARAM) { if (GetSafeHwnd() && (GetStyle() & WS_VISIBLE)) { CWnd* pTarget = GetOwner();
if (pTarget != NULL) OnUpdateCmdUI(pTarget, (BOOL)wParam); } return 0L; }
void CUITaskPanel::OnUpdateCmdUI(CWnd* pTarget, BOOL bDisableIfNoHndler) { CTaskPanelCmdUI state; state.m_pOther = this;
for (int i = 0; i < GetGroupCount(); i++) { CXTPTaskPanelGroup* pGroup = GetAt(i); for (state.m_nIndex = 0; (int)state.m_nIndex < pGroup->GetItemCount(); state.m_nIndex++) { CXTPTaskPanelGroupItem* pItem = pGroup->GetAt(state.m_nIndex); state.m_nID = pItem->GetID(); state.m_pItem = pItem; if (CWnd::OnCmdMsg(0, MAKELONG((int)CN_UPDATE_COMMAND_UI, WM_COMMAND + WM_REFLECT_BASE), &state, NULL)) continue; // allow the toolbar itself to have update handlers if (CWnd::OnCmdMsg(state.m_nID, (int)CN_UPDATE_COMMAND_UI, &state, NULL)) continue; // allow the owner to process the update state.DoUpdate(pTarget, bDisableIfNoHndler); } }
// update the dialog controls added to the toolbar UpdateDialogControls(pTarget, bDisableIfNoHndler);
}
------------- Oleg, Support Team CODEJOCK SOFTWARE SOLUTIONS
|