WEB开发网
开发学院软件开发VC VC6.0实现逆向操作并防止界面闪烁 阅读

VC6.0实现逆向操作并防止界面闪烁

 2008-11-13 19:31:57 来源:WEB开发网   
核心提示: 3.弹出重做数据模块. // 弹出一个Redo数据块int CIUndoEngine::RedoData(LPVOID *ppData, // 用于接收本函数返回的含有最近一个Redo数据的内存块首地址的指针// (注:此内存块交由调用者释放,使用::GlobalFree()函数)DWOR

3.弹出重做数据模块.

// 弹出一个Redo数据块
  int CIUndoEngine::RedoData(
  LPVOID *ppData, // 用于接收本函数返回的含有最近一个Redo数据的内存块首地址的指针
  // (注:此内存块交由调用者释放,使用::GlobalFree()函数)
  DWORD *pSize, // ppData内存块的尺寸(in byte) ,如果不需要此数据可用NULL作为参数
  DWORD *pParam1, // 返回用户对该Redo块的附加信息,如果不需要此数据可用NULL作为参数
  DWORD *pParam2, // 返回用户对该Redo块的附加信息,如果不需要此数据可用NULL作为参数
  int *pIndex // 返回本Redo块的索引,如果不需要此数据可用NULL作为参数
  )
  {
  if (!m_RedoCount)
  return 0;
  // 锁定待弹出的Redo索引信息块的地址
  POSITION pos = m_UndoDataList.FindIndex(m_UndoCount);
  ASSERT(pos);
  LPISEEUNDOINFO lpISeeUndoInfo= (LPISEEUNDOINFO)m_UndoDataList.GetAt(pos);
  ASSERT(lpISeeUndoInfo);
  ASSERT(lpISeeUndoInfo->m_index == m_UndoCount);
  if (!(*ppData))
  return -1;

// 读出用户保存在临时文件中的Undo数据(也即Redo数据)

m_File.Seek((LONG)lpISeeUndoInfo->m_FilePosition, CFile::begin);
  m_File.Read(*ppData, lpISeeUndoInfo->m_DataSize);
  m_UndoCount++; // 可用Undo数据块个数加1
  m_RedoCount--; // 可用Redo数据块个数减1
  if (pSize)
  *pSize = lpISeeUndoInfo->m_DataSize;
  if (pParam1)
  *pParam1= lpISeeUndoInfo->m_UserData1;
  if (pParam2)
  *pParam2= lpISeeUndoInfo->m_UserData2;
  if (pIndex)
  *pIndex = m_RedoCount;// 注:此处的索引是Redo的索引,而不是Undo的
  return 1;
  }

上一页  1 2 3 4  下一页

Tags:VC 实现 逆向

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接