MFC的控件ID是如何划分的.

到底是如何划分,又是如何调用的.我在多个窗口创建一个新的radio控件.发现Resource.h里面的ID是一样的.数值也是一样的.好像这就说明他们用的是同一个按钮吧.可... 到底是如何划分,又是如何调用的.
我在多个窗口创建一个新的radio控件.发现Resource.h里面的ID是一样的.数值也是一样的.好像这就说明他们用的是同一个按钮吧.
可是为什么不是全局的.我在一个窗口的代码文档输入IDC只出现的当前窗口的ID.(也就是那种简易开发出现的提示)

是否调用一个控件有两种方式
如果ID不同,则可以根据ID获取控件指针来调用一些函数
如果ID相同,可以绑定变量来调用函数
我主要是想用GetCheckedRadioButton来查看一组radio的选中状态.可是控件是tab控件的子窗口.
你说的这个问题,我以前的确注意过,当时没在意.
现在想用到ID,所以不知道如何解决.
因为我在窗口1新建一个radio,ID序号是4008
窗口2新建一个radio,ID序号也是4008.而且连ID名都一样.
我就想是使用一些函数的时候会被搞混?
刚才我测试GetCheckedRadioButton成功了.也测试了半天.发现必须用当前窗口对象调用该函数才会返回正确的值.
这是否就说明.即使序号一样.只要指定了窗口的对象.就不存在搞混的情况呢?
展开
 我来答
paradise300
推荐于2017-11-26 · TA获得超过3560个赞
知道大有可为答主
回答量:2589
采纳率:84%
帮助的人:499万
展开全部

一个控件,只能有一个ID,而且当你添加一个控件时,IDE(集成开发环境)会以控件名加一个序号来自动生成ID,如IDC_EDIT1,当你改变这个IDC_EDIT1改成IDC_EDIT_YEAR时,IDE又会将修改的ID值也保存,这样,当你打开Resources.h文件时,就会发现,#define后面的ID名称不同,序号(真正的ID号)相同的情况,如

#define IDC_EDIT1 1001 
#define IDC_EDIT_YEAR 1001

这样子,两个名称都指向同一个序号,调用均是可行的。而真实的ID(序号)是唯一的。

追问
追问了,字太多...所以改成补充,麻烦回答下,谢谢
追答
你指的情况,就是在你某个对话框类中定义控件的成员变量吧?如果只是从GetDlgItem函数着手,应该是可以从其它对话框访问到的。
我刚才做了个高难,在两个窗口中,分别建立两个编辑框,然后在Resours.h中把两个的序号改成相同,在两个窗口类中,分别创建成员变量,然后按正常的方式访问,结果是行得通的。
这就是说,它不管你的序号多少,但只要保证你#define出来的这个名称唯一即可,而且访问是全局都可以用ID名称来访问到,不会出现局部访问的情况。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式