读书人

mfc真的公开了所有的源代码么?解决办

发布时间: 2012-01-14 20:02:35 作者: rapoo

mfc真的公开了所有的源代码么?
我用source insight建了个工程,里面包含了vc安装目录下
\VC98\MFC\ 下的所有文件

想看下 CWnd 的以下函数的实现
CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
void EndPaint(LPPAINTSTRUCT lpPaint);
void ValidateRect(LPCRECT lpRect);
void ValidateRgn(CRgn* pRgn);

结果都只能找到原型,找不到实现,以上只是举例,其他只有原型,没有实现的函数还很多,所以问下,mfc真的公开了所有的源代码么?

[解决办法]
是公开的,如果你安装在默认位置,源代码就在 Program Files\Microsoft Visual Studio 8\VC\atlmfc\src里,但是如果某些函数特别简单而且是 inline 实现,比如你上面说的 BeginPaint,就在 Program Files\Microsoft Visual Studio 8\VC\atlmfc\include 目录的 inl文件里。
比如 BeginPaint在 afxwin2.inl里,代码如下:
_AFXWIN_INLINE CDC* CWnd::BeginPaint(LPPAINTSTRUCT lpPaint)
{ ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::BeginPaint(m_hWnd, lpPaint)); }
_AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
{ ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }
上面说的都是以VS2005为例子。

读书人网 >VC/MFC

热点推荐