首先,ClassWizard自己不支持ON_COMMAND_RANGE,所以你在ClassWizard中找不到该消息,它只支持ON_COMMAND,所以你自己添加的时候不要放在那个里面。请看原话:ClassWizard does not support message map ranges, so you must place the macro yourself. Be sure to put it outside the message map //{{AFX_MSG_MAP delimiters.其次:为什么要参数那就有很大的作用。譬如说,我想用户点击IDC_CLIENT0时会显示1,点IDC_CLIENT1时显示2....,如果没有参数那该怎么办呢?所以这时就可通过参数来判断这时这函数是由哪个命令所调用。即使你不需要辨别是那个命令所调用,但是参数仍然需要,这就是MFC所规定的。
1.在消息映射中:
ON_COMMAND_RANGE(IDC_CLIENT0,IDC_CLIENT5,OnClient)
(IDC_CLIENT0,IDC_CLIENT5中间有六个ID,并且他们都是相邻的)
2.在头文件定义中:
afx_msg void OnClient();
3.函数体:
void OnClient()
函数体里面什么都不写,都有错误。
2。afx_msg void OnClient(UINT nID ),瞧,需要带个参数,没有参数怎么知道是那个命令调用它的呢!!!
你瞧你的是不是这样!
1.我的确是放在里面,可是有什么分别呢?
2.为什么OnClient(UINT nID )要带个参数呀,直接的COMMAND命令呀,鼠标点击按纽的操作,我要带什么参数呢?
我以为release和debug只在内存管理上有不同
nID指响应消息的ID号,以方便同一消息,对不同的ID,有不同的处理。
你不带参数,它怎么知道是哪一个控件该响应消息呢?
ON_COMMAND_RANGE(IDC_CLIENT0,IDC_CLIENT5,OnClient)是知道是那个调用阿,但你函数里面你怎么写,你靠什么来判断???想过没有??