MFC下如何知道执行函数的调用者呢?请写一段代码示例,谢谢
时间: 2024-02-20 16:58:56 浏览: 58
mfc中一个函数是如何调用的?
4星 · 用户满意度95%
在 MFC 中,我们可以通过 AfxGetThreadState() 函数获取当前线程的状态,然后通过获取状态中的函数指针来判断调用者。
下面是一个简单的示例代码:
```cpp
void foo()
{
AFX_THREAD_STATE* pState = AfxGetThreadState();
if (pState->m_pCallers != NULL)
{
CString caller = AfxGetAppName();
TRACE(_T("foo() was called by %s\n"), caller);
}
else
{
TRACE(_T("foo() was called by unknown\n"));
}
}
void bar()
{
foo();
}
int main()
{
bar();
return 0;
}
```
在上面的代码中,我们定义了两个函数 `foo()` 和 `bar()`,其中 `bar()` 调用了 `foo()`。在 `foo()` 中,我们通过 `AfxGetThreadState()` 函数获取当前线程的状态,并判断调用者是否存在。如果存在调用者,我们可以通过 `AfxGetAppName()` 函数获取调用者的名称并输出。
在 `main()` 函数中,我们调用了 `bar()`,最终输出的结果将会是:
```
foo() was called by Test.exe
```
这里假设程序名称为 `Test.exe`。如果调用者不存在,则输出 `foo() was called by unknown`。
阅读全文