| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1418 人关注过本帖
标题:每个类对象都有一个this指针,那程序怎么知道this究竟指向谁呢?(新手问)
取消只看楼主 加入收藏
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:2 
每个类对象都有一个this指针,那程序怎么知道this究竟指向谁呢?(新手问)
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
   
    // TODO: Add your specialized creation code here
    m_btn.Create("按钮",WS_CHILD | WS_VISIBLE| BS_AUTO3STATE,CRect(0,0,100,100),this,123);
    return 0;
}


这是一个很简单的MFC程序,就是在一个单文档应用程序的视图窗口上产生一个按钮,以上是实现代码。
CButton::Create
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
第四个参数应该是这个按钮附属于哪个父窗口的指针。程序中直接用了this,说这个this就直接指向了CTestView。

既然每个类对象产生后都有一个自己的this指针,那在“m_btn.Create("按钮",WS_CHILD | WS_VISIBLE| BS_AUTO3STATE,CRect(0,0,100,100),this,123);
”这行代码的第四个参数中,为什么this就指向CTestView,而不是我的CButton对象m_btn呢?

加入我之前还有定义的其他类对象,this指针岂不更多,我怎么知道用this的时候,this究竟指向谁呢?


另外,在网上搜索时看到一段话:
“读者可能觉得this指针在编程时没有实际意义。实际上,this指针在Windows编程中却是相当有用的。例如,当用其他类的成员函数时,如果想得到主调用函数的对象的句柄(如Window中的窗口、控件、设备或文件等),可以使用this指针。因为在其他类的成员函数中,主调用函数的对象不在作用域内,而this指针可用来作句柄”

怎么理解最后一句话呢?
烦高人详解,提前道声谢了!
搜索更多相关主题的帖子: 指针 对象 
2010-06-22 10:32
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
回复 2楼 cnfarer
能麻烦斑竹说的详细些吗?
2010-06-22 13:53
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
已解决,谢谢斑竹,
2010-06-24 18:09
快速回复:每个类对象都有一个this指针,那程序怎么知道this究竟指向谁呢?(新手 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016603 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved