在MFC(Microsoft Foundation Classes)中,如果你需要在不同的线程中获取窗口句柄,你可以使用`AfxGetMainWnd()`函数。这个函数返回应用程序的主窗口句柄,它是一个全局函数,可以在任何线程中调用。
以下是如何在MFC应用程序的不同线程中获取窗口句柄的示例:
```cpp
// 假设你有一个主窗口类名为CMyMainWnd
// 在你的工作线程中,你可以这样获取主窗口句柄:
HWND hWnd = AfxGetMainWnd()->GetSafeHwnd();
// 使用hWnd进行需要的操作,比如发送消息到主窗口等
```
这里使用`GetSafeHwnd()`而不是直接调用`GetHwnd()`是因为`GetSafeHwnd()`会返回一个安全的句柄,即使在窗口销毁之后也不会导致访问非法的内存。
请注意,如果你在非UI线程中需要操作UI元素,你需要确保操作是在UI线程中完成的,因为Windows GUI操作必须在创建该窗口的线程中执行。你可以通过发送消息到UI线程或者使用`PostMessage`、`SendMessage`等方法来实现这一点。以下是一个示例:
```cpp
// 在工作线程中发送消息到主窗口
PostMessage(hWnd, WM_COMMAND, (WPARAM)IDYOURCOMMAND, 0);
// 或者,如果你需要等待消息处理完成
SendMessage(hWnd, WM_COMMAND, (WPARAM)IDYOURCOMMAND, 0);
```
在这里,`IDYOURCOMMAND`是你想要发送的消息ID,你需要替换成你自己的命令ID。`WM_COMMAND`是MFC中常用的消息,用于处理命令消息。