一个超难的问题! 解决后立马给分!

EmbraceTM 2005-06-02 03:49:00
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呢?
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongfa 2005-06-02
  • 打赏
  • 举报
回复
插入符不用开线程的.
EmbraceTM 2005-06-02
  • 打赏
  • 举报
回复
改成窗口句柄也不行!
我开个线程从串口读数,把串口数显到dc上,SetCaretPos时,为什么它的位置不变?HideCaret函数也不管用了,这是怎么回事呀?
  • 打赏
  • 举报
回复
CWnd *pWnd 得到的是临时指针,不能作为线程参数,改成窗口句柄试试
void CProgramView::OnTest()
{
CWnd *pWnd = AfxGetMainWnd()->GetWindow(GW_CHILD);
ASSERT(pWnd != NULL);
HWND hWnd = pWnd->GetSafeHwnd();

BOOL bResult = ::CreateCaret(hWnd,(HBITMAP)NULL,10,22);
//这里bResult == 1;
mHandle = CreateThread(NULL,0,MyFunc,(LPVOID)hWnd,CREATE_SUSPENDED,&mID);
}

DWORD WINAPI MyFunc(LPVOID lpParameter)
{
HWND hWnd = (HWND)lpParameter;
BOOL bResult = CreateCaret(hWnd,(HBITMAP)NULL,10,22);
//这里bResult == 0

POINT pt;
pt.x = 100;
pt.y = 100;
SetCaretPos(hWnd,pt);
ShowCaret(hWnd);
return 0;
}
younggle 2005-06-02
  • 打赏
  • 举报
回复
CWnd *pWnd = AfxGetMainWnd()->GetWindow(GW_CHILD);
===================================================
确认这个子窗口还存在吗?
也就是说在线程中判断 pWnd->m_hWnd 是否有效
if( ( NULL != pWnd->m_hWnd ) && ::IsWindow(pWnd->m_hWnd) )
{
BOOL bResult = CreateCaret(pWnd->m_hWnd,(HBITMAP)NULL,10,22);
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧