一个超难的问题! 解决后立马给分!
void CProgramView::OnTest()
{
CWnd *pWnd = AfxGetMainWnd()->GetWindow(GW_CHILD);
BOOL bResult = ::CreateCaret(pWnd->m_hWnd,(HBITMAP)NULL,10,22);
//这里bResult == 1;
mHandle = CreateThread(NULL,0,MyFunc,(CWnd *)pWnd,CREATE_SUSPENDED,&mID);
}
DWORD WINAPI MyFunc(LPVOID lpParameter)
{
CWnd *pWnd = (CWnd *)lpParameter;
BOOL bResult = CreateCaret(pWnd->m_hWnd,(HBITMAP)NULL,10,22);
//这里bResult == 0
POINT pt;
pt.x = 100;
pt.y = 100;
pWnd->SetCaretPos(pt);
pWnd->ShowCaret();
return 0;
}
为什么在线程里调用CreateCaret就不成功呢?那么我应该怎样在一个线程中显示一个Caret呢?