【发布时间】:2013-02-13 20:25:25
【问题描述】:
在我的 MFC 应用程序中,我有一个需要访问窗口句柄的非 Dlg 成员函数,但由于它不是成员函数,我不能使用“this”指针。
具体来说,我的意思是:
void BlahDlg::OnBnClickedblah()
{
//whatever
//...
CClientDC dc(this);
//...
//whatever
}
^ 效果很好。但我使用的是非成员函数:
void nonMember()
{
//whatever
//...
CClientDC dc(this); //will not work!
//...
//whatever
}
所以我的问题是:我可以在后一段代码中用什么替换 'this' 以使其具有与前者相同的效果。 p>
【问题讨论】:
-
执行此操作的典型方法是将指针(包含
this的值)传递给非成员函数。 -
除了 Mats:在非公共成员函数的情况下,常见的方法通常是通过将 this 指针作为参数并调用隐藏成员函数。 (例如,为了执行类中实现的线程函数)
-
"this" 是 C++。请去掉 C 标签。