MFC里ID怎么设置?

liuchang2859 2005-09-29 05:59:44
有一段别人的程序,我需要加点东西,却不能运行。

在菜单拦上,有一个tools,点击tools,下拉菜单里会出现一些并列的菜单象,比如有菜单ID_CPC,ID_KNN,ID_LM......;
缺省情况是其中一个被check了。
有一个变量m_nModel,标示哪个被 check了,所以相应有IDS_CPC,IDS_KNN,IDS_LM......缺省是m_nModel=IDS_KNN.

原来的程序是每点击某个菜单,他就被check了,原因是:

void CSMDoc::OnToolsKnn()
{
// TODO: Add your command handler code here
m_nModel=IDS_KNN;
CheckSubMenu();
}

void CSMDoc::CheckSubMenu()
{
CMenu* pColorMenu = GetSubMenu(ID_TOOLS_RUN);
switch (m_nModel)
{
case IDS_CPC:
pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_CHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_NB, MF_UNCHECKED);

break;
case IDS_LM:
pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_CHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_NB, MF_UNCHECKED);
break;
// case IDS_CWKNN:
// pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_CHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
//
// break;
case IDS_HCHR:
pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_CHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_NB, MF_UNCHECKED);

break;
// case IDS_VKNN:
// pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_CHECKED);
// pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
//
// break;
case IDS_NB:
pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_NB, MF_CHECKED);

break;
default:

pColorMenu->CheckMenuItem(ID_TOOLS_CPC, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_LM, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_CWKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_HCHR, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_VKNN, MF_UNCHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_KNN, MF_CHECKED);
pColorMenu->CheckMenuItem(ID_TOOLS_NB, MF_UNCHECKED);

break;
}
}

这样用IDS_XX 来表示该把哪个ID_TOOLS_XX check了,现在我想加一个并列的菜单ID_TOOLS_ED,但是却不知道在哪里定义IDS_ED,

在.rc里有这样一段:
STRINGTABLE DISCARDABLE
BEGIN
IDS_MODEL "Model"
IDS_ANALYSE "Analyse"
IDS_CWKNN "ID of cwknn"
IDS_CPC "ID of CPC"
IDS_LM "ID of LM"
END

在resource.h里有所有的ID的定义
我可以在view->resource symbol里可以定义一个新的IDS_ED,但是却不管用,(not in use)不知道为什么?

谢谢!
...全文
488 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2005-09-29
  • 打赏
  • 举报
回复
你新建一个菜单项,就有输入ID的地方,自动为你生成好了。
gunney 2005-09-29
  • 打赏
  • 举报
回复
#define IDS_ED** 任意整数ziji
gunney 2005-09-29
  • 打赏
  • 举报
回复
我也遇到 你直接到资源的头文件里面自己改

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧