- UID
- 3181
- 积分
- 162
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-3-20
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2002-4-29 02:58:52
|
显示全部楼层
多线程有一点改进,但是还是不行!在autocad中,见内
//处理消息
MSG *pMsg=new MSG;
GetMessage(pMsg,NULL,NULL,PM_NOREMOVE);
if(pMsg!=NULL)
{
TranslateMessage(pMsg);
PostMessage(pMsg->message,pMsg->wParam,pMsg->lParam);
}
将上面代码加在自己写的窗体类的函数showinfo的最后可以刷新。
但是在autocad下还是没有实现,我是在鼠标钩子写的,如下:
BOOL filterMouse(MSG *pMsg)//鼠标钩子函数
{
CShowInfoThread *pThread=NULL;
if(pMsg->message==WM_MOUSEMOVE)
{
CPoint pt;//pMsg->pt;
::GetCursorPos(&pt);
pThread=new CShowInfoThread(m_TipWnd,"kjhsjk\ngjshj\n",pt);
if (pThread == NULL)
return FALSE;
ASSERT_VALID(pThread);
pThread->m_pThreadParams = NULL;
if (!pThread->CreateThread(CREATE_SUSPENDED))
{
delete pThread;
return FALSE;
}
VERIFY(pThread->SetThreadPriority(THREAD_PRIORITY_IDLE));
pThread->ResumeThread();
return FALSE;
}
else if(pMsg->message == WM_RBUTTONDOWN)
{
if(pThread!=NULL)
pThread->ExitInstance();
acedRemoveFilterWinMsg(filterMouse);
m_TipWnd->ShowWindow(SW_HIDE);
return TRUE;
}
return FALSE; // continue*
}
上面用了一个线程,跟上面那贴一样。这里我用MGS参数的pt及用函数::GetCursorPos获取点后传入,窗体所在的位置都不对,不知为什么?而且在acad下还是只有一个框,麻烦大家帮我看看。 |
|