【问题标题】:handle to current window without use of "this"?不使用“this”处理当前窗口?
【发布时间】: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 标签。

标签: c++ mfc this


【解决方案1】:

只需要将this传递给非成员函数,这样的非成员函数应该有对应的参数。例如:

void nonMember(BlahDlg* dlg) {
  ...
  CClientDC dc(dlg);
  ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多