我有Visual Studio 2010 Ultimate SP1,我的项目基于MFC。当我调试方法时,Visual Studio 2010会挂起AttachThreadInput()
当我调试运行我的项目的下一个代码Visual Studio是挂起:
CWnd* _window = CWnd::FromHandle(_hwnd_);
if (_window) {
DWORD nForeThread, nAppThread;
nForeThread = ::GetWindowThreadProcessId(::GetForegroundWindow(), 0);
nAppThread = GetCurrentThreadId();
if (nForeThread != nAppThread)
{
AttachThreadInput(nForeThread, nAppThread, TRUE);
_window->BringWindowToTop();
_window->ShowWindow(SW_RESTORE);
AttachThreadInput(nForeThread, nAppThread, FALSE);
}
else
{
_window->BringWindowToTop();
_window->ShowWindow(SW_RESTORE);
}
}
我对下一行断点:
AttachThreadInput(nForeThread, nAppThread, TRUE);
所以,如果我按F10或F11或F5 button ,那么VS立即挂起。
可能是什么问题?
首先,你不检查返回码,'AttachThreadInput'可能会失败,你应该经常检查。其次,我的猜测是,VS2010(你将附加到你的线程中的线程)做了一些与此调用或输入事件处理不兼容的事情。 –
调用AttachThreadInput后,我无法获得返回值,VS挂起... – Swan911
关于后者,很有可能。所以我问问该怎么做? – Swan911