您的位置:首页 > 编程语言 > C语言/C++

[VC++]CToolBar按钮不能响应ON_UPDATE_COMMAND_UI?

2006-11-09 14:26 981 查看
[VC++]CToolBar按钮不能响应ON_UPDATE_COMMAND_UI?

我们需要重新派生一个新类,来实现CToolBar响应 ON_UPDATE_COMMAND_UI,代码如下:

 




class CMyToolBar : public CToolBar ...{


 CWnd *mpOwner ;




public:


 CMyToolBar () ;




public:


 //{{AFX_VIRTUAL(CMyToolBar)


 //}}AFX_VIRTUAL




public:


 virtual ~CMyToolBar () ;


 BOOL Create (CWnd *pParentWnd, CWnd *pOwnerWnd =NULL,


  DWORD dwStyle =WS_CHILD | WS_VISIBLE | CBRS_SIZE_DYNAMIC | CBRS_FLYBY | CBRS_TOP | CBRS_TOOLTIPS | TBSTYLE_FLAT,


  UINT nID =AFX_IDW_TOOLBAR


 ) ;




protected:


 //{{AFX_MSG(CMyToolBar)


 //}}AFX_MSG


 afx_msg void OnUpdateToolBar (CCmdUI *pCmdUI) ;




 DECLARE_MESSAGE_MAP ()


} ;






BEGIN_MESSAGE_MAP (CMyToolBar, CToolBar)


 //{{AFX_MSG_MAP(CMyToolBar)


 //}}AFX_MSG_MAP


 ON_UPDATE_COMMAND_UI_RANGE (0x0000, 0xffff, OnUpdateToolBar) // See TN031


END_MESSAGE_MAP ()






CMyToolBar::CMyToolBar () ...{


 mpOwner =NULL ;


}






CMyToolBar::~CMyToolBar () ...{


}




//-----------------------------------------------------------------------------


BOOL CMyToolBar::Create(CWnd *pParentWnd, CWnd *pOwnerWnd, DWORD dwStyle, UINT nID) 




...{




 if ( CToolBar::Create (pParentWnd, dwStyle, nID) ) ...{


  mpOwner =(pOwnerWnd == NULL ? pParentWnd : pOwnerWnd) ;


  ASSERT ( mpOwner->GetSafeHwnd () != NULL ) ;


  ASSERT_KINDOF (CWnd, mpOwner);


  GetToolBarCtrl ().SetOwner (mpOwner) ;


  return (TRUE) ;


 }


 return (FALSE) ;


}




//-----------------------------------------------------------------------------




void CMyToolBar::OnUpdateToolBar (CCmdUI *pCmdUI) ...{


 pCmdUI->DoUpdate (mpOwner, FALSE) ;


}





 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  command vc++ ui null class