从哪里才能得到MFC的实现源代码?(VS的MFC文件夹下只有部分扩展代码)

koolfoo 2003-12-20 02:34:58
从哪里得到MFC的源代码?比如偶在VS的afxwin.h中得到了Cmenu的头文件,但却找不到它的具体实现文件,对应的应该有个afxwin.cpp吧?但却没有,MS已经把它做成.lib了,没法看到。
那在哪里才能得到它的实现文件的?
在VS的MFC文件夹里有部分.cpp文件,但都是对MFC的扩展,没有最初的实现函数。
比如:
/////////////////////////////////////////////////////////////////////////////
// CMenu

class CMenu : public CObject
{
DECLARE_DYNCREATE(CMenu)
public:

// Constructors
CMenu();

BOOL CreateMenu();
BOOL CreatePopupMenu();
BOOL LoadMenu(LPCTSTR lpszResourceName);
BOOL LoadMenu(UINT nIDResource);
BOOL LoadMenuIndirect(const void* lpMenuTemplate);
BOOL DestroyMenu();

// Attributes
HMENU m_hMenu; // must be first data member
HMENU GetSafeHmenu() const;
operator HMENU() const;

static CMenu* PASCAL FromHandle(HMENU hMenu);
static void PASCAL DeleteTempMap();
BOOL Attach(HMENU hMenu);
HMENU Detach();

// CMenu Operations
BOOL DeleteMenu(UINT nPosition, UINT nFlags);
BOOL TrackPopupMenu(UINT nFlags, int x, int y,
CWnd* pWnd, LPCRECT lpRect = 0);
BOOL operator==(const CMenu& menu) const;
BOOL operator!=(const CMenu& menu) const;

// CMenuItem Operations
BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
UINT GetMenuItemCount() const;
UINT GetMenuItemID(int nPos) const;
UINT GetMenuState(UINT nID, UINT nFlags) const;
int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
UINT nFlags) const;
int GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const;
BOOL GetMenuItemInfo(UINT nIDItem, LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE);
CMenu* GetSubMenu(int nPos) const;
BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
const CBitmap* pBmp);
BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
const CBitmap* pBmp);
BOOL RemoveMenu(UINT nPosition, UINT nFlags);
BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags);
BOOL SetDefaultItem(UINT uItem, BOOL fByPos = FALSE);
UINT GetDefaultItem(UINT gmdiFlags, BOOL fByPos = FALSE);

// Context Help Functions
BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
DWORD GetMenuContextHelpId() const;

// Overridables (must override draw and measure for owner-draw menu items)
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

// Implementation
public:
virtual ~CMenu();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
};

上面是CMenu的头文件内容。
请问到哪里才能得到MFC的实现文件?
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluebohe 2003-12-21
  • 打赏
  • 举报
回复
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\Include\AFXWIN1.INL(1004):_AFXWIN_INLINE CMenu::~CMenu()
这个不是么?
beyondtkl 2003-12-20
  • 打赏
  • 举报
回复
Searching for '~CMenu'...
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\Include\AFXWIN.H(1152): virtual ~CMenu();
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\Include\AFXWIN1.INL(1004):_AFXWIN_INLINE CMenu::~CMenu()
beyondtkl 2003-12-20
  • 打赏
  • 举报
回复
TO
回复人: bluebohe(薄荷) ( ) 信誉:127 2003-12-20 15:56:00 得分:0


查找~CMenu会找到两个,一个是头文件,一个是实现文件,MFC的源代码不是可以找到一部分,而是全部都可以找到,MFC是开源的!所以你跟踪程序的时候可以跟踪到MFC的实现内部

偶咋的找不到?


ahao 2003-12-20
  • 打赏
  • 举报
回复
MFC的源码都在那儿,这都会找不到?
bluebohe 2003-12-20
  • 打赏
  • 举报
回复
实在不行的话你写一个小程序,比如 CMenu menu;menu.CreateMenu();
调试,F11跟踪进去,就找到了
bluebohe 2003-12-20
  • 打赏
  • 举报
回复
查找~CMenu会找到两个,一个是头文件,一个是实现文件,MFC的源代码不是可以找到一部分,而是全部都可以找到,MFC是开源的!所以你跟踪程序的时候可以跟踪到MFC的实现内部

我的机器现在没有VC,你搜索所有后缀名的文件,一般找析构函数就找到了(当然有的类没有析构函数除外)
vcforever 2003-12-20
  • 打赏
  • 举报
回复
在你的MFC目录下的SRC下可以找到一部分,好象不是全部!
vcforever 2003-12-20
  • 打赏
  • 举报
回复
好象是找不到,微软的原代码保护的很好,网上好象没见过
不过楼主可以看一下《深入浅出MFC》,第三章中的MFC六大技术仿真
或许对楼主有帮助,之中针对MFC的六大核心技术进行了深入的剖析和仿真

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧