ON_COMMAND(id,mwmberFxn)的疑问 请问,这里的id,是不是控件中的id?如果是,那为什么我改了资源中菜单的exit菜单项的id,(原来为IDM_EXIT,我改成IDM_EXIT1),编译照样过,也能执行;而改后面的消息映射表中的IDM_EXIT为IDM_EXIT1,就编译错误. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IDM_EXIT和IDM_EXIT1是相等的//而改后面的消息映射表中的IDM_EXIT为IDM_EXIT1,就编译错误什么错误? 上述ID是莱单项的资源ID,在我的VC2003上,我建立了莱单项Test->TestC,并编辑创建其资源ID为IDC_TEST_C,于是在消息映射表中如下:BEGIN_MESSAGE_MAP(CVCTestNewView, CFormView) //...... ON_COMMAND(IDC_TEST_C, OnTestC)END_MESSAGE_MAP()程序行为良好。再在资源编辑器中修改ID为IDC_TEST_C1,则程序仍可运行,但该莱单项没有可用的事件处理函数,莱单发灰不可用。修改上述消息映射表项,例如:BEGIN_MESSAGE_MAP(CVCTestNewView, CFormView) //...... ON_COMMAND(IDC_TEST_C1, OnTestC)END_MESSAGE_MAP()则程序可以一如预期,完全符合逻辑,和你描述有异。所以,你的疑问,请检查一下是不是有误操作。 BEGIN_MESSAGE_MAP(CHelloApp, CWinApp) //{{AFX_MSG_MAP(CHelloApp) ON_COMMAND(ID_APP_ABOUT1, OnAppAbout) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()ON_COMMAND(ID_APP_ABOUT1, OnAppAbout)资源管理器中菜单项的ID:ID_APP_ABOUT出现的错误是:--------------------Configuration: Hello - Win32 Debug--------------------Compiling resources...Compiling...Hello.cppF:\vc\Hello\Hello.cpp(22) : error C2065: 'ID_APP_ABOUT1' : undeclared identifierError executing cl.exe.Hello.exe - 1 error(s), 0 warning(s)我用的工具是:VC++ 6.0 你得改 rc文件里面的id resource.h里面的id以及代码中的id 另外请教一下ON_COMMAND与函数OnCommand()什么关系.这里很混头,一会儿ON_COMMAND()消息队列,一会儿又OnCommand()通知处理函数.在ON_COMMAND()不是已经指定了处理函数了? ON_COMMAND(id,mwmberFxn)是将id的触发消息分发给函数mwmberFxn处理,和OnCommand()没有关系 你改了菜单面的标识符后,原来旧的标识符在资源文件中仍然存在,所以之前的 ON_COMMAND(IDM_EXIT, OnTestC) 不会报错,如果只是修改消息映射表中的IDM_EXIT为IDM_EXIT1,由于资源文件中不存在IDM_EXIT1的定义,所以报错. 已知一个24位BMP的指针,怎么得到这个位图各个像素点的RGB值? 取消空格 提取数字 求完善一段代码 这个是如果做到的 CView可不可以SendMessage(****)给CFrameWnd? 一大早就来问个问题 运行有点时间后(不定时)电脑出现黑屏,并电源灯都不亮(绿的),红的也不亮??但机还在运行中???? CFile类当中的SeektoEnd()方法的使用,好像无法达到达到文件尾的目的。 在对话框中绘制了几个图形,但在弹出时毫无现示 如何获取QQ聊天对话框的句柄? 研究3天没解决的错误 ◇◆◇ 我来散10分,第五个人进来后结贴 ◇◆◇
什么错误?
//......
ON_COMMAND(IDC_TEST_C, OnTestC)
END_MESSAGE_MAP()程序行为良好。再在资源编辑器中修改ID为IDC_TEST_C1,则程序仍可运行,但该莱单项没有可用的事件处理函数,莱单发灰不可用。修改上述消息映射表项,例如:BEGIN_MESSAGE_MAP(CVCTestNewView, CFormView)
//......
ON_COMMAND(IDC_TEST_C1, OnTestC)
END_MESSAGE_MAP()则程序可以一如预期,完全符合逻辑,和你描述有异。所以,你的疑问,请检查一下是不是有误操作。
//{{AFX_MSG_MAP(CHelloApp)
ON_COMMAND(ID_APP_ABOUT1, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
ON_COMMAND(ID_APP_ABOUT1, OnAppAbout)资源管理器中菜单项的ID:ID_APP_ABOUT出现的错误是:
--------------------Configuration: Hello - Win32 Debug--------------------
Compiling resources...
Compiling...
Hello.cpp
F:\vc\Hello\Hello.cpp(22) : error C2065: 'ID_APP_ABOUT1' : undeclared identifier
Error executing cl.exe.Hello.exe - 1 error(s), 0 warning(s)
我用的工具是:VC++ 6.0
以及代码中的id
是将id的触发消息分发给函数mwmberFxn处理,
和OnCommand()没有关系
ON_COMMAND(IDM_EXIT, OnTestC) 不会报错,
如果只是修改消息映射表中的IDM_EXIT为IDM_EXIT1,由于资源文件中不存在IDM_EXIT1的定义,所以报错.