mfc 比如编辑控件,再没有使用classwizard为它添加一个CEdit对象之前,它有与它关联的对象吗?
如果没有,那为什么可以使用GetDlgItem()等函数获得他的指针呢?若有,那么为什么一个控件可以关联两个对象呢?...
如果没有,那为什么可以使用GetDlgItem()等函数获得他的指针呢? 若有,那么为什么一个控件可以关联两个对象呢?
展开
3个回答
展开全部
Windows API有个跟其同名的函数,返回的是HWND类型的值,也就是句柄。
但是MFC的该函数对其做了封装,返回的是是CWnd*类型。
只要你愿意,关联10个或100个对像都可以。说白了,它是一个指针,指向的"实体"只有一个。
但是MFC的该函数对其做了封装,返回的是是CWnd*类型。
只要你愿意,关联10个或100个对像都可以。说白了,它是一个指针,指向的"实体"只有一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
控件(是Window class)不是CEdit的实例,同样CEdit实例也不是控件。
只不过MFC对它们进行的关联。
只不过MFC对它们进行的关联。
追问
我的意思是这样,你看,控件 关联了一个CEdit的对象是吧?什么时候关联的呢?意思也就是说,既然能用GetDlgItem(),那说明,他已经关联了一个CEdit对象了吧,不然怎么调用成员函数呢,那如果已经关联了, 那为什么还可以用classwizard为它添加一个control类型的,CEdit的对象呢?这不是对应了两个对象了嘛?
追答
WindowsAPI GetDlgItem返的是一个控件句柄。
MFC窗口类的GetDlgItem则返回一个控件类指针,内部实现在隐含生成一个比如CEdit实例。这也可称为动态生成,或后期绑定。
在Windows中一个控件标识就是一个句柄,至于把它关联几个对象,只要MFC语法允许,又有什么不可。(打比方,多个指针可以指向同一个对象)。
推荐你看一下候杰的《MFC技术内幕》等一系列的书。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每一个控件都有一个句柄和ID,根据这个可以使用getdlgitem()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询