+ -
当前位置:首页 → 问答吧 → 【MFC消息映射问题请教】

【MFC消息映射问题请教】

时间:2011-12-18

来源:互联网

编程环境:vs2008 MFC对话框类型程序
【问题描述】 这个程序是经过多次修改(我的意思是这个程序不是新建的程序)我像往常一样在Dialog主对话框上添加Slider Control控件,添加完成后双击该控件,希望它生成触发函数(就是通过鼠标滑动该控件上的滑块,希望额能因此调用其他函数,当然这个希望也是非常非常非常之正常),可是郁闷的是运行程序后。我用鼠标滑动此控件上的滑块,确没能得到我希望的效果,也就是说,这个控件对应的消息函数并没有真正的运行。

首先声明:我不是新手,且以前都经常用这些控件,对这些控件的一般性用法没有问题。
  并且通过仔细查找,此消息函数的声明、消息函数与制定控件的关联、消息函数的定义在格式上和语法上没有问题。

【消息函数的声明】
afx_msg void OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult);
【消息函数的关联】
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CScreenVideoDlg::OnNMCustomdrawSlider1)

【消息函数的定义】
void CScreenVideoDlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// 以下自定义代码仅为调试
int i = 0;
i++;
*pResult = 0;
}


最后经过和其他程序的对比,终于发现问题的所在
原来问题出在这个消息函数的关联语句中的ON_NOTIFY,这无疑是个宏,但是非常不幸,这个宏在这个消息函数的关联语句所在的代码中,以灰色显示,而其他程序(以前正常使用Slider Control的程序)的同样控件的消息函数的关联处,该宏是粉色显示(因为,我想大多数人都在使用Vissaix x控件?这个大家能理解吧?)
所以,我觉得这就是问题的所在,因为是灰色的,灰色差不多就是不可用的,也就是说程序跑起来,我无乱怎么操作,程序都不会发送消息给这个消息函数的定义体所在代码,也就没有达到我的期望,



想请教大家的是,我怎么才能让这个宏出在粉色显示,而不是我现在的灰色?


好像说的有些罗嗦,大家受累了

作者: likeyuanyuan   发布时间: 2011-12-18

坐等高手指点,

作者: likeyuanyuan   发布时间: 2011-12-18