前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么添加窗口小工具_vc可视化编程

怎么添加窗口小工具_vc可视化编程

作者头像
全栈程序员站长
发布2022-11-08 10:13:55
5660
发布2022-11-08 10:13:55
举报
文章被收录于专栏:全栈程序员必看

原文地址:http://www.cnblogs.com/carekee/articles/1751805.html

(转载者注)推荐在MFC中加入BCG,而不是适用BCG建立工程,因为BCG对中文的支持不是很好,到时候会很麻烦。

本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003( 在VC6.0下同样适用)。

  1,将BCG/BCGCBPro目录路径添加到“项目属性->C/C++ ->常规 ->附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性->链接器 ->常规 ->附加库目录”中(如果先安装VC,再安装BCG就不用设置,因为BCG已经集成到了编译器中)。

  2,确保在CWinApp派生类(设为CMyApp)的InitInstance()成员函数中调用AfxOleInit();

  3,在ExitInstance()函数中添加:

  CleanState();   BCGCBProCleanUp();

  4,在stdafx.h中添加

  #include “bcg/BCGCBProInc.h”

  5,为CMyApp添加基类,如下:

  class CMyApp:public CWinApp,public CBCGPWorkspace

  6,设置个性化的数据在注册表中的存放位置和需要个性化的特性。在CMyApp::InitInstance()函数中添加:

  SetRegistryBase(_T(“Settings”));

  InitMouseManager();   InitContextMenuManager();   InitKeyboardManager();

  7,将CMDIFrameWnd 修改为 CBCGPMDIFrameWnd,注意MainFrm.h和MainFrm.cpp中的所有CMDIFrameWnd都要改。

  8,将CMDIChildWnd改成CBCGPMDIChildWnd,.h和.cpp中的都要改。

  9,将CToolBar m_wndToolBar修改成CBCGPToolBar m_wndToolBar,并在你的CMainFrame类中添加一个CBCGPMenuBar类型的成员m_wndMenuBar,如下示:

  CBCGPMenuBar m_wndMenuBar; // New menu bar   CBCGPToolBar m_wndToolBar; // Application toolbar

  10,为使菜单条生效并且可停靠,在CMainFrame::OnCreate()函数中添加以下内容:

if (!m_wndMenuBar.Create (this)){ TRACE0(“Failed to create menubar\n”); return -1; // fail to create }

m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY |

CBRS_SIZE_DYNAMIC);

m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY); DockControlBar (&m_wndMenuBar);

  说明:你可以在你的应用程序中使用多个CBCGPToolBar,它们对应的位图将会自动地合并在一张位图上,然而,你只可以使用一个CBCGPMenuBar对象。

  至此基本设置已经完成,此时你的程序应该可以正常地编译运行。下面介绍如何为应用程序设置不同的风格。

  1,在菜单栏上添加一个弹出菜单,在其中添加一个菜单项,上面的文字分别为”Office 2003″,”Office 2007(blue)”,”Office 2007(black)”,”Office 2007(silver)”,”Office 2007(aqua)”,对应的菜单项ID分别为ID_VIEW_APPLOOK_2003,ID_VIEW_APPLOOK_2007_1,,ID_VIEW_APPLOOK_2007_2,ID_VIEW_ APPLOOK_2007_3,ID_VIEW_APPLOOK_2007_4。

  2,为这五个菜单添加消息响应:

在MainFrm.cpp文件中,添加消息映射(在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间):

ON_COMMAND_RANGE(ID_VIEW_APPLOOK_2003, ID_VIEW_APPLOOK_2007_4, OnAppLook)

在CMainFrame类中添加OnAppLook函数声明:

afx_msg void OnAppLook(UINT id);

添加其方法实现:

void CMainFrame::OnAppLook(UINT id){ CWaitCursor wait;

CBCGPVisualManager2007::SetCustomColor ((COLORREF)-1);

switch (id){ case ID_VIEW_APPLOOK_2003:CBCGPVisualManager::SetDefaultManager(

RUNTIME_CLASS (CBCGPVisualManager2003)); break;

case ID_VIEW_APPLOOK_2007_1:

CBCGPVisualManager2007::SetStyle (CBCGPVisualManager2007::VS2007_Aqua);

CBCGPVisualManager::SetDefaultManager ( RUNTIME_CLASS (CBCGPVisualManager2007));

break;

} RedrawWindow (NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);

}

Office 2007其它的风格样式切换类似ID_VIEW_APPLOOK_2007_1,在此省略。

  3,运行时请确保程序能够找到Bin目录下的相关DLL,否则切换风格时会失败。

  注:本文参考了BCGSoft中的相关文档(Developer Area/Getting Started),在此基础上有所省略与补充。其实我也只是刚用BCG,在使用过程中也遇到了不少麻烦,所以写下这篇笔记以供参考。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184461.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月8日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文地址:http://www.cnblogs.com/carekee/articles/1751805.html
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档