使用BCG菜单和工具栏
更新时间:2024-01-20 06:38:01 阅读量: 教育文库 文档下载
- bcg法设计菜单套餐推荐度:
- 相关推荐
一、在对话框中添加菜单资源
1. 先按9.6中将工程变成BCG工程。
2. 添加一个CCmdFrame类。其继承自CBCGPFrameWnd。修改其构造函数为
CCmdFrame(CBCGPDialog* pDlg),为其添加成员变量CBCGPDialog* m_pDlg,添加成员函数void SetMenuBar (CBCGPMenuBar* pMenuBar),添加消息处理函数virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)。 其头文件主要如下:
class CCmdFrame : public CBCGPFrameWnd {
public: CCmdFrame(CBCGPDialog* pDlg);
// Attributes protected: CBCGPDialog* m_pDlg; // Operations public: void SetMenuBar (CBCGPMenuBar* pMenuBar);
// Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CCmdFrame) public: virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); //}}AFX_VIRTUAL
// Implementation protected: virtual ~CCmdFrame(); // Generated message map functions //{{AFX_MSG(CCmdFrame) // NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG DECLARE_MESSAGE_MAP() };
3. 在CCmdFrame类中添加相应的函数。
CCmdFrame::CCmdFrame(CBCGPDialog* pDlg) : m_pDlg (pDlg) {
}
BOOL CCmdFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { ASSERT_VALID (m_pDlg); return m_pDlg->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }
class CMyFrameImpl : public CBCGPFrameImpl { CMyFrameImpl() : CBCGPFrameImpl (NULL) {} friend class CCmdFrame; };
void CCmdFrame::SetMenuBar (CBCGPMenuBar* pMenuBar) { ((CMyFrameImpl&)m_Impl).m_pMenuBar = pMenuBar; }
4. 在***Dlg.h中添加一个CMyMenuBar类。
class CMyMenuBar : public CBCGPMenuBar { virtual BOOL LoadState (LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1) { return TRUE; } virtual BOOL SaveState (LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1) { return TRUE; } };
5. 在.rc中添加菜单资源:
// Menu //
IDR_MENU1 MENU PRELOAD DISCARDABLE BEGIN
POPUP \ BEGIN
MENUITEM \ ID_FILE_NEW MENUITEM \ ID_FILE_OPEN MENUITEM \ ID_FILE_SAVE MENUITEM \ ID_FILE_SAVE_AS MENUITEM SEPARATOR
MENUITEM \ ID_FILE_PRINT MENUITEM \Pre&view\ ID_FILE_PRINT_PREVIEW
MENUITEM \ ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM \File\ ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM \ ID_APP_EXIT END
POPUP \ BEGIN
MENUITEM \ ID_EDIT_UNDO MENUITEM SEPARATOR
MENUITEM \ ID_EDIT_CUT MENUITEM \ ID_EDIT_COPY MENUITEM \ ID_EDIT_PASTE END
POPUP \ BEGIN
MENUITEM \ ID_APP_ABOUT END END
在对话框资源中加入控件:
CONTROL \| NOT WS_VISIBLE,0,0,319,14
也可以通过插入>>资源来创建一个菜单资源,然后加入到工程中,这样就会自动生成相应的.rc文件代码,也不用在Resource.h中添加代码。 6. 在Resource.h中添加相应的资源:
#define IDR_MENU1 1002 #define IDC_MENU_LOCATION 1004 7. 在C***Dlg类中添加相应的成员变量。
CStatic m_wndMenuBarLocation;(在AFX_VIRTUAL中) CMyMenuBar m_wndMenuBar; CCmdFrame *m_pMenuFrame;
8. 在***Dlg.cpp中的DoDataExchange函数中添加:
DDX_Control(pDX, IDC_MENU_LOCATION, m_wndMenuBarLocation)。 在OnInitDialog中加入菜单创建的一些代码: // Create menu bar: m_wndMenuBar.Create (this); m_wndMenuBar.SetControlVisualMode (this);
CMenu menu;
menu.LoadMenu (IDR_MENU1); m_wndMenuBar.CreateFromMenu (menu.GetSafeHmenu (), TRUE, TRUE); m_wndMenuBar.SetBarStyle ( m_wndMenuBar.GetBarStyle () &
~(CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT)); // Set menu bar position and size: CRect rectMenuBar; m_wndMenuBarLocation.GetWindowRect (&rectMenuBar); ScreenToClient (&rectMenuBar); m_wndMenuBar.SetWindowPos (&wndTop, rectMenuBar.left, rectMenuBar.top, rectMenuBar.Width (), rectMenuBar.Height (), SWP_NOACTIVATE); m_pMenuFrame = new CCmdFrame (this); m_pMenuFrame->Create (NULL, _T(\ m_pMenuFrame->ShowWindow (SW_HIDE); m_pMenuFrame->SetMenuBar (&m_wndMenuBar); m_wndMenuBar.SetOwner (m_pMenuFrame); BCGCBProSetTopLevelFrame (m_pMenuFrame); m_wndToolBar.Create (this); m_wndToolBar.SetControlVisualMode (this); m_wndToolBar.LoadToolBar (IDR_TOOLBAR, 0, 0, TRUE /* Locked bar */); m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); m_wndToolBar.SetBarStyle ( m_wndToolBar.GetBarStyle () & ~(CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT)); 9. 完成后编译运行。
二、在对话框中添加工具栏资源。
1. 先按9.6中将工程变成BCG工程。
2. 添加一个CCmdFrame类。其继承自CBCGPFrameWnd。修改其构造函数为
CCmdFrame(CBCGPDialog* pDlg),为其添加成员变量CBCGPDialog* m_pDlg,添加成员函数void SetMenuBar (CBCGPMenuBar* pMenuBar),添加消息处理函数virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)。 其头文件主要如下:
class CCmdFrame : public CBCGPFrameWnd {
public: CCmdFrame(CBCGPDialog* pDlg);
// Attributes protected: CBCGPDialog* m_pDlg; // Operations public: void SetMenuBar (CBCGPMenuBar* pMenuBar);
// Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CCmdFrame) public: virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); //}}AFX_VIRTUAL
// Implementation protected: virtual ~CCmdFrame(); // Generated message map functions //{{AFX_MSG(CCmdFrame) // NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG DECLARE_MESSAGE_MAP() };
3. 在CCmdFrame类中添加相应的函数。
CCmdFrame::CCmdFrame(CBCGPDialog* pDlg) : m_pDlg (pDlg) { }
BOOL CCmdFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { ASSERT_VALID (m_pDlg); return m_pDlg->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }
class CMyFrameImpl : public CBCGPFrameImpl { CMyFrameImpl() : CBCGPFrameImpl (NULL) {}
friend class CCmdFrame; };
void CCmdFrame::SetMenuBar (CBCGPMenuBar* pMenuBar) { ((CMyFrameImpl&)m_Impl).m_pMenuBar = pMenuBar; }
4. 在.rc中创建相应的工具栏资源:
///////////////////////////////////////////////////////////////////////////// //
// Toolbar //
IDR_TOOLBAR TOOLBAR MOVEABLE PURE 16, 15 BEGIN
BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN BUTTON ID_FILE_SAVE SEPARATOR
BUTTON ID_EDIT_CUT BUTTON ID_EDIT_COPY BUTTON ID_EDIT_PASTE SEPARATOR
BUTTON ID_FILE_PRINT SEPARATOR
BUTTON ID_APP_ABOUT END
加入位图资源: // Bitmap //
IDR_TOOLBAR BITMAP MOVEABLE PURE \
在对话框中也加入相应的控件:
CONTROL \| NOT WS_VISIBLE,72,36,241,20
在工程的目录下的res目录中要有一个与该工具栏对应的Toolbar.bmp文件。如下:
也可以在插入>>资源中选择toolbar,然后自己制作相应的工具栏,这样就不用修改.rc文件。在加入自己所添加的资源后,会自动生成相应的.rc代码。也不用在Resource.h中添加代码。
5. 在Resource.h中添加相应的资源:
#define IDR_TOOLBAR 129
#define IDC_TOOLBAR_LOCATION 1005
6. 在C***Dlg类中添加相应的成员变量。
CStatic m_wndToolbarLocation;(在AFX_VIRTUAL中) CBCGPToolBar m_wndToolBar; CCmdFrame *m_pMenuFrame;
7. 在***Dlg.cpp中的DoDataExchange函数中添加:
DDX_Control(pDX, IDC_TOOLBAR_LOCATION, m_wndToolbarLocation); 在OnInitDialog中加入工具栏创建的一些代码: m_pMenuFrame = new CCmdFrame (this); m_pMenuFrame->Create (NULL, _T(\m_pMenuFrame->ShowWindow (SW_HIDE); // Create toolbar:
m_wndToolBar.Create (this);
m_wndToolBar.SetControlVisualMode (this);
m_wndToolBar.LoadToolBar (IDR_TOOLBAR, 0, 0, TRUE /* Locked bar */);
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
m_wndToolBar.SetBarStyle ( m_wndToolBar.GetBarStyle () & ~(CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));
CSize sizeToolBar = m_wndToolBar.CalcFixedLayout (FALSE, TRUE);
// Set ToolBar position and size: CRect rectToolBar;
m_wndToolbarLocation.GetWindowRect (&rectToolBar); ScreenToClient (&rectToolBar);
m_wndToolBar.SetWindowPos (&wndTop, rectToolBar.left, rectToolBar.top, sizeToolBar.cx, sizeToolBar.cy, SWP_NOACTIVATE);
m_wndToolBar.SetOwner (m_pMenuFrame);
// All commands will be routed via this dialog, not via the parent frame: m_wndToolBar.SetRouteCommandsViaFrame (FALSE); 8. 编译后运行。
正在阅读:
使用BCG菜单和工具栏01-20
2017龙岩市质检化学及答案09-10
蔬菜生产技术 教学大纲05-06
(跑跑卡丁车)技术心得 -- 跑跑卡丁车08-08
江西省鹰潭市余江一中2014-2015学年高二下学期期中物理试卷Word版含解析01-01
关于党校培训思想汇报文本08-17
装修工程二次结构监理实施细则01-06
实训四 合同签订10-30
5S管理标识标签标准11-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 工具栏
- 菜单
- 使用
- BCG
- 2012年大兴一摸 物理试卷答案
- 植物保护专业植物病害流行学试题及答案
- 光伏电站设备点检标准
- 九年级地方课程教案
- 我的职业价值观探索 3130104721 刘震 第十一组
- 计算机基础选择题库(一、二级 选看) - 图文
- 社区类APP竞品分析V1.1
- 2019人教版 小学6年级 数学上册 第一单元《分数乘法》学案
- 中级经济法(2016) 第3章 其他主体法律制度 课后作业
- 电子、电气设备制造行业质量管理体系专业审核作业指导书
- 最新ISO13485-2016医疗器械风险管理全套资料(风险管理程序风险管理计划风险管理报告及记录) - 图文
- 仪器设备期间核查表格
- 在外语学习中,如何正确认识英语的听说能力?如何有效实现?
- 民宿合伙经营协议书(律所版)
- 青年社会组织公益创投活动实施方案计划书
- 生物工程毕业论文 - 图文
- 学生顶岗实习手册 b - 图文
- 伯牙绝弦 评课稿
- APV UHT超高温灭菌机操作保养手册
- 新课标人教版七年级历史与社会上册3.1.2用机械种庄稼导学案