Disable/Enable Ribbon Buttons for MFC Feature Pack

来源:互联网 发布:淘宝有没有一元夺宝 编辑:程序博客网 时间:2024/04/29 08:07

When you create the CMFCRibbonButton object you have to specify the associated command ID (see the documentation for the CMFCRibbonButton constructor here). Enabling and disabling of ribbon buttons is then done using the usual command update mechanism in MFC, using the CCmdUI class.

For example, if you have a ribbon button whose command ID is ID_MYCOMMAND and you want to handle this command in your application's view class, you should add these functions to the class:

// MyView.h 
class CMyView : public CView { 
   
// ... 
   
private: 
        afx_msg
void OnMyCommand(); 
        afx_msg
void OnUpdateMyCommand(CCmdUI* pCmdUI); 
        DECLARE_MESSAGE_MAP
() 
}; 

and implement them in the .cpp file:

// MyView.cpp 
void CMyView::OnMyCommand() { 
   
// add command handler code. 
} 
 
void CMyView::OnUpdateMyCommand(CCmdUI* pCmdUI) { 
    BOOL enable
= ...; // set flag to enable or disable the command. 
    pCmdUI
->Enable(enable); 
} 

You should also add ON_COMMAND and ON_UPDATE_COMMAND_UI entries to the message map for the CMyView class:

// MyView.cpp 
BEGIN_MESSAGE_MAP
(CMyView, CView) 
    ON_COMMAND
(ID_MYCOMMAND, &CMyView::OnMyCommand) 
    ON_UPDATE_COMMAND_UI
(ID_MYCOMMAND, &CMyView::OnUpdateMyCommand) 
END_MESSAGE_MAP
() 

For more information on message maps in MFC, refer to TN006: Message Maps in MSDN.

I hope this helps!

原创粉丝点击