0
我需要重寫CMFCRibbonSlider類的事件WM_LBUTTONUPVisual C++如何重寫parant類的事件處理程序?
class CMyRibbonSlider : public CMFCRibbonSlider
{
public:
virtual void OnLButtonUp(CPoint point); // need this event handler!
};
void CMyRibbonSlider::OnLButtonUp(CPoint point)
{
AfxMessageBox(_T("Works!"))
return;
}
使用CMyRibbonSlider對象大型機類
class CMainFrame : public CMDIFrameWndEx
{
....
CMyRibbonSlider* SliderLine;
}
當CMFCRibbonSlider控制apears和我點擊左側mousebutton,什麼都不會發生。我做錯了什麼?
編輯:
初始化
CArray<CMFCRibbonBaseElement*, CMFCRibbonBaseElement*> ar;
m_wndRibbonBar.GetElementsByID(ID_SLIDER2, RibbonElementsArray);
m_wndRibbonBar.GetElementsByID(ID_START_BTN, ar);
RibbonElementsArray.Append(ar);
m_wndRibbonBar.GetElementsByID(ID_STOP_BTN, ar);
RibbonElementsArray.Append(ar);
m_wndRibbonBar.GetElementsByID(ID_SLIDER_LINE, ar); //HERE!
RibbonElementsArray.Append(ar);
m_wndRibbonBar.GetElementsByID(IDC_STATIC_TT, ar);
RibbonElementsArray.Append(ar);
Slider = DYNAMIC_DOWNCAST(CMFCRibbonSlider, RibbonElementsArray[0]);
btnStart = DYNAMIC_DOWNCAST(CMFCRibbonButton, RibbonElementsArray[1]);
btnStop = DYNAMIC_DOWNCAST(CMFCRibbonButton, RibbonElementsArray[2]);
SliderLine = (CMyRibbonSlider*)DYNAMIC_DOWNCAST(CMFCRibbonSlider, RibbonElementsArray[3]); //and HERE!
TmpLable = DYNAMIC_DOWNCAST(CMFCRibbonLabel, RibbonElementsArray[4]);
也是我在大型機級別的這些事件處理程序和他們的工作:
ON_UPDATE_COMMAND_UI(ID_SLIDER_LINE, &CMainFrame::OnUpdateSliderLine)
ON_COMMAND(ID_SLIDER_LINE, &CMainFrame::OnSliderLine)
SliderLine-> GETPOS()也返回右邊的滑塊所以我覺得初始化是正確的...
'CMyRibbonSlider * SliderLine;' - 這一切?只有指針? – mvidelgauz
代碼需要更多的上下文。既然你說'CMyRibbonSlider'控件出現了,你不能只有一個指向它的指針。它也需要在某個時候建造。該代碼非常重要,因爲您的[消息映射](https://msdn.microsoft.com/en-us/library/0x0cx6b1.aspx)。 – IInspectable
Ofcourse它不僅是一個指針。我添加了一些代碼。 –