我有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