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它不仅是一个指针。我添加了一些代码。 –