Chinaunix首页 | 论坛 | 博客
  • 博客访问: 536911
  • 博文数量: 576
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5020
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(576)

文章存档

2011年(1)

2008年(575)

我的朋友

分类:

2008-10-14 14:50:35

1、在资源里的字符串表中新增二字符串:一、ID_SHOWFULL ,32792,显示完全菜单。二、ID_INTMODE,32794,打开/禁止智能菜单模式。

2、将OffMenu文件夹中每一个.cpp和.h文件包含井你的工程文件中。 

3、编辑工程文件中的 MainFrm.h (主框架头文件) : 

将原类的声明从:

class CMainFrame : public CMDIFrameWnd

改为:

#include "MDIFrmEx.h"
#include "ToolBarEx.h"

class CMainFrame : public CMDIFrameEx

接着将类中的工具条类从 CToolBar 改为 CToolbarEx:

CToolbar m_wndToolBar;

变量声明为:

CToolbarEx m_wndToolBar;

4、编辑工程文件中的 MainFrm.cpp (主框架文件): 

改变其中消息映射从:

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

变成:

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameEx)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameEx)

接着将 CMainFrame::OnCreate 中的:

if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

变为:

if (CMDIFrameEx::OnCreate(lpCreateStruct) == -1)

5、编辑工程文件中 MyApp.h (应用类头文件):

改变其中的类声明从:

class CTestMDIApp : public CWinApp

变为:

#include "WinAppEx.h"

class CTestMDIApp : public CWinAppEx

6、编辑工程文件中 MyApp.cpp (应用类文件):

将其中的消息映射从:

BEGIN_MESSAGE_MAP(CTestMDIApp, CWinApp)

变为:

#include "DocTplEx.h"

BEGIN_MESSAGE_MAP(CTestMDIApp, CWinAppEx)

接着将 CMyApp::InitInstance() 中的下面代码从:

	CMultiDocTemplate* pDocTemplate;
	pDocTemplate = new CMultiDocTemplate(
		IDR_TESTMDTYPE,
		RUNTIME_CLASS(CTestMDIDoc),
		// custom MDI child frame
		RUNTIME_CLASS(CChildFrame), 
		RUNTIME_CLASS(CTestMDIView));
	AddDocTemplate(pDocTemplate);

	// create main MDI Frame window
	CMainFrame* pMainFrame = new CMainFrame;
	if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
		return FALSE;
	m_pMainWnd = pMainFrame;
	
替换成:

	UINT nID;
	nID=IDR_MAINFRAME;

	// create main MDI Frame window
	CMainFrame* pMainFrame = new CMainFrame;
	if (!pMainFrame->LoadFrame(nID))
		return FALSE;
	m_pMainWnd = pMainFrame;

	CMultiDocTemplateEx* pDocTemplate;
	pDocTemplate = new CMultiDocTemplateEx(
		IDR_TESTMDTYPE,
		RUNTIME_CLASS(CTestMDIDoc),
		// custom MDI child frame
		RUNTIME_CLASS(CChildFrame), 
		RUNTIME_CLASS(CTestMDIView),
		&nID,1);
	AddDocTemplate(pDocTemplate);

	CWinAppEx::InitInstance();
	
7、接下来就可以编释并运行你的程序了。 

如果你想自己掌控智能菜单的话,可直接重载CmenuBar类中的下面涵数既可: 

WORD CMenuBar::IncMenuUsage(CMenuEx *pParent, 
                            UINT pos, 
                            WORD curusage)

BOOL CMenuBar::EvaluateIfGrayed(CMenuEx *pParent, 
                                UINT pos, 
                                WORD &curusage, 
                                int iMed, 
                                int iRange)

--------------------next---------------------

阅读(298) | 评论(0) | 转发(0) |
0

上一篇:欢迎阅读我的文章

下一篇:Figures

给主人留下些什么吧!~~