请教一句代码CWnd *pWnd = (CWnd*)pMap->LookupPermanent(hWnd)这句话是什么意思呀?LookupPermanent函数使用的列子有没有?
解决方案 »
- vs2008 MFC中怎么在左边的子窗口添加树型控件?
- =WM_CTLCOLOR??
- PostQuitMessage和ExitProcess的区别是什么?
- 求助!!mfc调用自己写的DLL
- 请问如何实现纳秒级的sleep?
- 在用CSocket时怎样得到客户的IP,回就给分,谢谢大家,没分了
- 同一个对象(字符串)的size两次结果不一样
- 又一个不相关的问题,但是很有意思,请各位发言
- 如何让我的程序在win2000任务栏管理器中不显示?
- CString和CTime的转换
- 如何理解OpenGL的拾取机制的实现原理
- 如何实现javascript中var obj = myCOM.getArray后obj[i].a,obj[i].b的操作
LookupPermanent网上有无数例子。
MFC在创建窗口时,总是把窗口的句柄(HWND)作键,窗口的CWnd的object的内存地址存到一个叫
m_permanentMap的CHandleMap的成员变量里。>>请教一句代码CWnd *pWnd = (CWnd*)pMap->LookupPermanent(hWnd)
的意思大概是判断:m_permanentMap这个Map里有没有登记过 某个hWnd和CWnd,如果
登记了就怎么怎么反之则怎么怎么。
如果你需要这样的判断,LookupPermanent()就派上了用场。
比如,下面的ASSERT,一定会顺利通过。int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
... CHandleMap* pMap = afxMapHWND();
ASSERT(pMap != NULL);
CObject* p;
ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
(p = pMap->LookupTemporary(m_hWnd)) != NULL);
ASSERT((CWnd*)p == this); // must be usreturn 0;
}