我遇到了家庭絲帶按鈕的奇怪行爲。
我已經在帶有帶控件的Office模板的Visual Studio 2010中創建了標準MFC應用程序。但是,如果我雙擊位於上部位置的Home Ribbon按鈕,應用程序將關閉。
你能告訴我,如果它是標準的MFC應用程序處理程序的行爲,我可以如何改變它?
我看過Prevent double click on MFC-Dialog button,但不能應用到我的情況(更清楚地 - 我不知道如何將雙擊處理程序添加到功能區主頁按鈕)。MFC絲帶首頁按鈕關閉雙擊的應用程序
1
A
回答
0
CMFCRibbonApplicationButton不從CWnd派生所以不能處理WM_LBUTTONDBLCLK消息。 一個解決方案是從CMFCRibbonBar派生。
class CCustomRibbonBar : public CMFCRibbonBar
{
// ...
protected:
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
};
BEGIN_MESSAGE_MAP(CCustomRibbonBar, CMFCRibbonBar)
ON_WM_LBUTTONDBLCLK()
END_MESSAGE_MAP()
void CCustomRibbonBar::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CMFCRibbonBaseElement* pHit = HitTest(point);
if (pHit->IsKindOf(RUNTIME_CLASS(CMFCRibbonApplicationButton)))
{
// the user double-clicked in the application button
// do what you want here but do not call CMFCRibbonBar::OnLButtonDblClk
return;
}
CMFCRibbonBar::OnLButtonDblClk(nFlags, point);
}
另一種解決方案:覆蓋的PreTranslateMessage在CMainFrame類;
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if ((WM_LBUTTONDBLCLK == pMsg->message) && (pMsg->hwnd == m_wndRibbonBar))
{
CPoint point(pMsg->pt);
m_wndRibbonBar.ScreenToClient(&point);
CMFCRibbonBaseElement* pHit = m_wndRibbonBar.HitTest(point);
if (pHit && pHit->IsKindOf(RUNTIME_CLASS(CMFCRibbonApplicationButton)))
{
// do what you want but do not call CMDIFrameWndEx::PreTranslateMessage
return TRUE; // no further dispatch
}
}
return CMDIFrameWndEx::PreTranslateMessage(pMsg);
}
0
- 派生自己的派生類CMFCRibbonApplicationButton。
- 爲CMFCRibbonApplicationButton創建消息處理程序:: OnLButtonDblClk
- 提供您自己的雙擊實現。如果什麼都不應該發生,就把身體留空。
- 在您的CMainFrame中,您可以找到CMFCRibbonApplicationButton m_MainButton的定義。用你的實現替換類名稱。
相關問題
- 1. Codename one:應用程序應該關閉雙擊後退按鈕
- 2. 應用程序關閉按鈕單擊
- 3. HtmlHelp()關閉我的MFC應用程序
- 4. 關閉iOS電源按鈕關閉應用程序關閉
- 5. 後退按鈕關閉應用程序
- 6. Android按鈕Onclick關閉應用程序
- 7. 如何關閉按鈕上的.exe應用程序點擊
- 8. MFC應用程序無聲關閉
- 9. Android應用程序關閉後點擊按鈕
- 10. 應用程序關閉並點擊約按鈕
- 11. 應用程序強制關閉按鈕單擊?
- 12. 應用程序關閉點擊谷歌標誌在按鈕
- 13. 關閉firefox應用程序(alt + F4或關閉按鈕)
- 14. 長按iPhone應用程序中的首頁按鈕
- 15. 如何在C#windows應用程序中單擊關閉按鈕時阻止應用程序關閉?
- 16. iPhone應用程序點擊主頁按鈕關閉應用程序,而不是暫停
- 17. 在按一下按鈕,關閉應用程序的Java GUI
- 18. 當我按下按鈕應用程序的力量關閉? Android
- 19. 按下後退按鈕時的Android關閉應用程序
- 20. 當用戶按Home按鈕時關閉Android應用程序
- 21. 按下按鈕時強制關閉應用程序錯誤
- 22. 當我按下按鈕時,應用程序強制關閉
- 23. 點擊一個按鈕關閉在模擬器上運行的應用程序
- 24. 如何在單擊C#上的按鈕後關閉表單應用程序
- 25. 雙擊按鈕
- 26. 的Android後退按鈕的應用程序沒有關閉
- 27. 按鈕振動使Android應用程序的力量關閉
- 28. 後退按鈕仍然關閉我的應用程序
- 29. PhoneGap的處理後退按鈕不關閉應用程序
- 30. 關閉CCommanBar的按鈕不退出應用程序