关于VC里的CMapPtrToPtr的一个疑问

捕鲸叉 2013-07-03 05:17:39
请问下面代码行m_TimerIdSimuRamPtrMap.GetNextAssoc(pos, (void*&)nID, (void*&)(pThis));
里的(void*&)是什么意思?指针的引用?为什么要这样用



static VOID __stdcall TimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime);
static CMapPtrToPtr m_TimerIdSimuRamPtrMap;

bool CSimuRam::Extend()
{
m_nExtendTimerID = ::SetTimer(NULL, 1, 50, TimerProc);
m_TimerIdSimuRamPtrMap.SetAt((void*&)m_nExtendTimerID, this);
return true;
}

VOID __stdcall CSimuRam::TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
CSimuRam* pThis = NULL;
int nID;
POSITION pos = m_TimerIdSimuRamPtrMap.GetStartPosition();
while(pos)
{
m_TimerIdSimuRamPtrMap.GetNextAssoc(pos, (void*&)nID, (void*&)(pThis));
if (nID == iTimerID)
break;
}

if (pThis == NULL)
{
ASSERT(FALSE);
return;
}

if (pThis->m_nCurrentPos < pThis->m_nMaxStroke - pThis->m_nUpperDeadBand)
{
pThis->m_nCurrentPos += float(pThis->m_nRaiseSpeed) * 50 / 1000; //50ms
if (pThis->m_nCurrentPos >= pThis->m_nMaxStroke - pThis->m_nUpperDeadBand)
{
pThis->m_nCurrentPos = pThis->m_nMaxStroke - pThis->m_nUpperDeadBand;
::KillTimer(NULL, iTimerID);
}
}
}

...全文
74 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2013-07-04
  • 打赏
  • 举报
回复
void* 的引用, 为什么这么用得看你的 GetNextAssoc 函数是怎么写的了.

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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