首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

帮一下忙吧,大侠们,该如何处理

2012-01-29 
帮一下忙吧,大侠们谁能给我解释一下下面这段程序:voidCHandleMap::RemoveHandle(HANDLEh){//makesuretheha

帮一下忙吧,大侠们
谁能给我解释一下下面这段程序:

void   CHandleMap::RemoveHandle(HANDLE   h)
{
//   make   sure   the   handle   entry   is   consistent   before   deleting
CObject*   pTemp   =   LookupTemporary(h);
if   (pTemp   !=   NULL)
{
//   temporary   objects   must   have   correct   handle   values
HANDLE*   ph   =   (HANDLE*)((BYTE*)pTemp   +   m_nOffset);     //   after   CObject
ASSERT(ph[0]   ==   h   ||   ph[0]   ==   NULL);
if   (m_nHandles   ==   2)
ASSERT(ph[1]   ==   h);
}
pTemp   =   LookupPermanent(h);
if   (pTemp   !=   NULL)
{
HANDLE*   ph   =   (HANDLE*)((BYTE*)pTemp   +   m_nOffset);     //   after   CObject
ASSERT(ph[0]   ==   h);
//   permanent   object   may   have   secondary   handles   that   are   different
}
//   remove   only   from   permanent   map   --   temporary   objects   are   removed
//     at   idle   in   CHandleMap::DeleteTemp,   always!
m_permanentMap.RemoveKey((LPVOID)h);
}

怎么看也看不懂啊,我在作位图操作时总是能遇到:ASSERT(ph[1]   ==   h);   这一句断言错误。帮下吧,我找几天也找不出原因啊???????

[解决办法]
从哪抄了这么个 代码 你只贴了部分 也不知道是干什么的

不过粗看 后认为你把 ph[1] 改成 ph[0] 也许就可以了
[解决办法]
你应该在自己的代码中查找错误。

热点排行