平时,我们用的自定义消息都是ON_MESSAGE消息,但是这种消息无法获取指定的控件ID,所以,下面我要自定义的是ON_NOTIFY消息。可以指定控件进行消息响应。
第一步:定义消息
#define WM_NOTIFY WM_USER+100
第二步:定义该消息的发送
(也就是当程序执行到哪一处时,就要是用该消息发送内容的位置)
NMHDR nmhdr ; nmhdr.hwndFrom = this->m_hWnd; nmhdr.idFrom = 0; nmhdr.code = WM_NOTIFY; ::SendMessage(GetParent()->GetSafeHwnd() , WM_NOTIFY ,(WPARAM)nmhdr.idFrom , (LPARAM)&nmhdr);
第三步:在使用的位置进行声明、使用
1:定义该消息
BEGIN_MESSAGE_MAP(CSliderInfoDlg, CDialogEx) ON_NOTIFY(WM_NOTIFYU , IDC_SLIDER_Type , &CSliderInfoDlg::OnNotifyMessage) END_MESSAGE_MAP()
2:声明
afx_msg void OnNotifyMessage ( NMHDR* pNMHER, LRESULT *pResult );//获取按钮控件的消息
3:使用
void CSliderInfoDlg::OnNotifyMessage(NMHDR* pNMHER, LRESULT *pResult) { CString strInfo , strInfo2; int n = m_SliderType.GetPos(); strInfo.Format(L"n = %d",n); TRACE("n = %d\r\n",n); m_edit.SetWindowTextW(strInfo); }