當前位置:編程學習大全網 - 網站源碼 - Occ源代碼分析

Occ源代碼分析

可以追溯到mfc提供的源代碼內部。(註意:如果打開mfc源代碼,設置了斷點,但是跟不上,需要更新PDB文件,網上搜壹下。)

打開wincore.cpp文件(d:\ program files \ Microsoft visual studio . net 2003 \ vc7 \ atl MFC \ src \ MFC)。看312行,功能如下:

CWnd * PASCAL CWnd::from handle(HWND HWND)

{

CHandleMap * pMap = afx mapwnd(TRUE);//如果不存在,則創建映射

斷言(pMap!= NULL);

CWnd * pWnd =(CWnd *)pMap-& gt;from handle(hWnd);

# IFN def _ AFX _ NO _ OCC _支持

pWnd-& gt;AttachControlSite(pMap);

#endif

ASSERT(pWnd = = NULL | | pWnd-& gt;m _ hWnd = = hWnd);

返回pWnd

}

斷言被斷言(pWnd = = NULL | | pWnd-& gt;m _ hWnd = = hWnd);也就是說,讀取句柄映射表有兩種可能性:

1您傳入的窗口句柄為空,即窗口對象已生成,但窗口不是用Create創建的。

2.窗口所在的線程不是當前線程,所以讀取映射窗口的指針或者使用FromHandle將指針映射到臨時窗口都不可避免的會出錯。窗口都是線程相關的。

如果不正確地單擊菜單命令,則菜單命令執行的代碼可能包含FromHandle語句。看,壹定是它。

200分。還不明白就問我。壹定要給我。

  • 上一篇:資生堂正品查詢防偽官網,資生堂729開頭是真的嗎
  • 下一篇:我從網上得到壹個源代碼,如何部署到雲服務器上
  • copyright 2024編程學習大全網