Print Page | Close Window

Update CommandUI in CXTPTaskPaenl

Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Toolkit Pro
Forum Description: Topics Related to Codejock Toolkit Pro
URL: http://forum.codejock.com/forum_posts.asp?TID=3230
Printed Date: 28 April 2024 at 12:42pm
Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com


Topic: Update CommandUI in CXTPTaskPaenl
Posted By: yoavo
Subject: Update CommandUI in CXTPTaskPaenl
Date Posted: 15 November 2005 at 11:58pm

Hi,

Is there a way to handle Update CommandUI message for items in CXTPTaskPanel (as in toolbars and menu items) ?

Yoav.




Replies:
Posted By: Oleg
Date Posted: 16 November 2005 at 2:00am

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


Posted By: Oleg
Date Posted: 16 November 2005 at 2:01am

ps. Don't forget to call

m_wndTaskPanel.SetHotTrackStyle(xtpTaskPanelHighlightItem);

 

to allow pCmdUI->SetChecked();



-------------
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS



Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.04 - http://www.webwizforums.com
Copyright ©2001-2021 Web Wiz Ltd. - https://www.webwiz.net