mfc 比如编辑控件,再没有使用classwizard为它添加一个CEdit对象之前,它有与它关联的对象吗?

如果没有,那为什么可以使用GetDlgItem()等函数获得他的指针呢?若有,那么为什么一个控件可以关联两个对象呢?... 如果没有,那为什么可以使用GetDlgItem()等函数获得他的指针呢? 若有,那么为什么一个控件可以关联两个对象呢? 展开
 我来答
gdbsvr
2011-11-03 · 超过13用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:34.8万
展开全部
Windows API有个跟其同名的函数,返回的是HWND类型的值,也就是句柄。
但是MFC的该函数对其做了封装,返回的是是CWnd*类型。
只要你愿意,关联10个或100个对像都可以。说白了,它是一个指针,指向的"实体"只有一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bai_lj
2011-11-03 · TA获得超过276个赞
知道小有建树答主
回答量:505
采纳率:77%
帮助的人:281万
展开全部
控件(是Window class)不是CEdit的实例,同样CEdit实例也不是控件。
只不过MFC对它们进行的关联。
追问
我的意思是这样,你看,控件 关联了一个CEdit的对象是吧?什么时候关联的呢?意思也就是说,既然能用GetDlgItem(),那说明,他已经关联了一个CEdit对象了吧,不然怎么调用成员函数呢,那如果已经关联了, 那为什么还可以用classwizard为它添加一个control类型的,CEdit的对象呢?这不是对应了两个对象了嘛?
追答
WindowsAPI GetDlgItem返的是一个控件句柄。
MFC窗口类的GetDlgItem则返回一个控件类指针,内部实现在隐含生成一个比如CEdit实例。这也可称为动态生成,或后期绑定。
在Windows中一个控件标识就是一个句柄,至于把它关联几个对象,只要MFC语法允许,又有什么不可。(打比方,多个指针可以指向同一个对象)。

推荐你看一下候杰的《MFC技术内幕》等一系列的书。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jssnjssf
2011-11-03
知道答主
回答量:9
采纳率:0%
帮助的人:6.9万
展开全部
每一个控件都有一个句柄和ID,根据这个可以使用getdlgitem()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式