我正在使用MFC功能包,並且在功能區欄上有一些按鈕,CMFCRibbonButton的實例。問題是我想在某些條件下啓用和禁用其中的一些,但是在運行時。我怎樣才能做到這一點?因爲沒有具體的方法...我聽說解決方案是在運行時附加/分離事件處理程序,但我不知道如何...禁用/啓用MFC功能包的功能區按鈕
4
A
回答
13
當您創建CMFCRibbonButton
對象時,您必須指定關聯的命令ID(請參閱CMFCRibbonButton
構造函數here的文檔)。然後使用MFC中的常用命令更新機制,啓用和禁用功能區按鈕,使用CCmdUI
類。
舉例來說,如果你有一個功能區按鈕,其命令ID是ID_MYCOMMAND
,你想在你的應用程序的視圖類來處理這個命令,你應該添加這些功能類:
// MyView.h
class CMyView : public CView {
// ...
private:
afx_msg void OnMyCommand();
afx_msg void OnUpdateMyCommand(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
};
並加以實施在.cpp文件:
// 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);
}
你也應該補充ON_COMMAND
和ON_UPDATE_COMMAND_UI
條目消息映射爲CMyView
類:
// MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_MYCOMMAND, &CMyView::OnMyCommand)
ON_UPDATE_COMMAND_UI(ID_MYCOMMAND, &CMyView::OnUpdateMyCommand)
END_MESSAGE_MAP()
有關MFC中消息映射的更多信息,請參閱MSDN中的TN006: Message Maps。
我希望這有助於!
2
ChrisN給出了一個非常完美的答案。您可以通過從here下載VS2008 Sample Pack並打開MSOffice2007Demo解決方案,看到完全如何實現的示例。
運行示例時,請查看功能區「視圖」選項卡中的「縮略圖」複選框,該選項已禁用。
這由CMSOffice2007DemoView::OnUpdateViewThumb
控制,其調用pCmdUI->Enable(FALSE);
。您可以在運行時更改此設置以呼叫TRUE
或FALSE
分別啓用/禁用按鈕。
相關問題
- 1. 禁用功能區按鈕
- 2. 禁用功能區按鈕
- 3. 禁用按鈕的功能
- 4. 如何啓用/禁用Outlook中的功能區按鈕
- 5. 啓用/禁用Word 2007中的功能區按鈕Addin
- 6. 啓用由Excel/PPT禁用的內置Office功能區按鈕
- 7. 功能「按鈕被禁用」
- 8. 從窗體啓用/禁用功能區按鈕
- 9. 在自定義功能區Outlook中啓用禁用按鈕
- 10. 使用功能區按鈕
- 11. 啓用/禁用基於單選按鈕的功能按鈕
- 12. 使用XML功能區的動態功能區按鈕大小
- 13. 以編程方式添加到SharePoint 2010功能區後禁用功能區按鈕功能區
- 14. 如何在功能區加載後啓用功能區按鈕vb.net
- 15. 重構的啓用/禁用按鈕切換功能
- 16. JQuery按鈕啓用和禁用點擊後的CSS功能
- 17. 禁用按鈕功能(Wx Widgets)
- 18. ASP.NET禁用按鈕並運行功能
- 19. 開關按鈕 - 禁用滑動功能
- 20. ASP禁用按鈕和運行功能
- 21. 自我禁用按鈕,輔助功能
- 22. 點擊後禁用按鈕功能
- 23. 功能區按鈕點擊
- 24. 使用插件禁用功能區按鈕
- 25. 啓用/經由功能/方法禁用按鈕(C#)
- 26. 按鈕在opencv for android中禁用和啓用功能(runOnUiThread)
- 27. 功能啓用和禁用動態按鈕(FileSystemWatcher)
- 28. 在後臺啓用按鈕功能
- 29. 使用按鈕啓動/停止功能
- 30. jQuery功能啓用分區