首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 软件开发 → VC编程 → 文章内容

Office 2000 风格的停泊、智能型菜单

作者:佚名  来源:网上收集  发布时间:2007-3-27 10:15:39
 

Office 2000风格的停泊、智能型菜单
编译:徐景周/(原著:Piero Viano)
下载演示源码

Office 2000风格的停泊、智能型菜单例子运行时图像:
   
译者注:
    由于原文作者所提供例子代码需使用附带RC资源,经本人使用后觉得不够通用,故将部分源码修改并将文章翻译。文中现在所附例子为我最近所作一抓图程序的界面部分。不光Office 2000智能菜单噢!还包括多文档视图的TAB页显示,自绘制菜单等,详情请参看附带实例代码。
    在你的工程文件中使用Office 2000菜单的话(译者:目前仅支持多文档菜单修改,如果要改单文档菜单界面的话,可对文件中的CMultiDocTemplateEx类、CMDIFrameEx类和CMDIFrameEx类进行修改,以适应单文档界面。),请按下面步骤进行: 
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 CWinAppEx6、编辑工程文件中 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 frameRUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CTestMDIView));AddDocTemplate(pDocTemplate);// create main MDI Frame windowCMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame->LoadFrame(IDR_MAINFRAME))return FALSE;m_pMainWnd = pMainFrame;替换成:UINT nID;nID=IDR_MAINFRAME;// create main MDI Frame windowCMainFrame* 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 frameRUNTIME_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)
    第一个函数用来添加当前菜单条有用法。第二个函数决定当前菜单条是否灰色显示,它也可用来修改当前菜单条的用法。如果你想在菜单中存储应用程序中定义的数据的话,可用CMenuEx::GetExtraDataPtr(UINT)来包含进这些数据。
 
[] [返回上一页] [打 印]
  • 上一篇文章:自定义 CRichEditCtrl 控件
  • 下一篇文章:黑客攻击手段之偷梁换柱

  • 相关文章:
  • Office 2007简体中文版的破解方法
  • 微软证实Mac Office 2008存在安全隐患
  • [组图]Java中使用JCOM操作Office对象
  • [图文]用C#实现office2003风格的菜单组件
  • [图文]如何实现Office式样的扁平组合框
  • [图文]Office 2000 风格的停泊、智能型菜单
  • Office 2003的翻译服务
  • [图文]轻轻松松地移植--把Office中的
  • [图文]实现商业价值 实战Office InfoPath2003表单
  • [图文]Office使用心得:Word
  • [图文]实用技巧:用好Office Word 2003的比较功能
  • [组图]实战Office InfoPath2003表单
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号