Codejock Forums Homepage
Forum Home Forum Home > Codejock Products > Visual C++ MFC > Toolkit Pro
  New Posts New Posts RSS Feed - Update CommandUI in CXTPTaskPaenl
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Update CommandUI in CXTPTaskPaenl

 Post Reply Post Reply
Author
Message
yoavo View Drop Down
Senior Member
Senior Member


Joined: 29 February 2004
Location: Israel
Status: Offline
Points: 140
Post Options Post Options   Thanks (0) Thanks(0)   Quote yoavo Quote  Post ReplyReply Direct Link To This Post Topic: Update CommandUI in CXTPTaskPaenl
    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.

Back to Top
Oleg View Drop Down
Admin Group
Admin Group


Joined: 21 May 2003
Location: United States
Status: Offline
Points: 11234
Post Options Post Options   Thanks (0) Thanks(0)   Quote Oleg Quote  Post ReplyReply Direct Link To This Post 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
Back to Top
Oleg View Drop Down
Admin Group
Admin Group


Joined: 21 May 2003
Location: United States
Status: Offline
Points: 11234
Post Options Post Options   Thanks (0) Thanks(0)   Quote Oleg Quote  Post ReplyReply Direct Link To This Post 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
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.04
Copyright ©2001-2021 Web Wiz Ltd.

This page was generated in 0.172 seconds.