我从CStatic继承了控件CMyLabel,并映射消息ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
//...
afx_msg void OnClicked();
//...
void CMyLabel::OnClicked()
{
TRACE0("[CClickLabel]OnClicked...\n");
//m_funClick是我定义的回调函数,在外部指定
//typedef void (*ClickFunc)(CWnd *);
//ClickFunc m_funClick; if(m_funClick){
m_funClick(this);
}else{
#ifdef _DEBUG
TRACE0("******Undefined callback function.*******\n");
#endif
//如果没有定义回调函数,我想调用界面中指定的响应函数。
}
}
现在我在窗口中添加了一个static, CMyLabel m_labelTest.
双击static添加消息处理函数afx_msg void OnStnClickedLabelTest();
现在我想在上面m_funClick没有指定的时候调用OnStnClickedLabelTest函数,改如何传递这个消息啊。
//...
afx_msg void OnClicked();
//...
void CMyLabel::OnClicked()
{
TRACE0("[CClickLabel]OnClicked...\n");
//m_funClick是我定义的回调函数,在外部指定
//typedef void (*ClickFunc)(CWnd *);
//ClickFunc m_funClick; if(m_funClick){
m_funClick(this);
}else{
#ifdef _DEBUG
TRACE0("******Undefined callback function.*******\n");
#endif
//如果没有定义回调函数,我想调用界面中指定的响应函数。
}
}
现在我在窗口中添加了一个static, CMyLabel m_labelTest.
双击static添加消息处理函数afx_msg void OnStnClickedLabelTest();
现在我想在上面m_funClick没有指定的时候调用OnStnClickedLabelTest函数,改如何传递这个消息啊。
ON_STN_CLICKED(IDC_MODIFY_GAME_PATH, OnStnClickedLabelTest)我在子类中加入了ON_CONTROL_REFLECT(BN_CLICKED, OnClicked),所以每次单击控件的时候都是调用这个OnClicked了,而不调用我添加的OnStnClickedLabelTest函数。
现在我想在窗体中单击static控件时能调用OnStnClickedLabelTest而不是OnClicked。
那你可以在对话框类中截获按钮的点击事件进行处理
例如:
BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)
{
if((pMsg->hwnd == m_CalcTimePos.m_hWnd) && (pMsg->message == WM_KEYDOWN))
{
COleDateTime calcTime = m_CalcTimePos.GetDate();
COleDateTimeSpan span = calcTime - m_NowTime;
int nDays = span.GetTotalDays();
m_TimeSlider.SetPos(span.GetTotalMinutes());
return 0;
}