VC++2008 初体验(二)--自定义对话框
来源:互联网 发布:淘宝买药提交需求以后 编辑:程序博客网 时间:2024/04/29 13:09
今天学习一下为工具栏添加一个自定义的对话框,是MFC封装好的。。。
一,首先还是先创建一个普通的单文档视图程序,名字叫BinCustomPage其它的基本设置就和上遍文章中的所提到的一样。。。
二, 像上节中提到的一样,
在stdafx.h 中加入下句 #include <afxcontrolbars.h>。
修改 BinCustomPage.h 和.cpp中的CWinApp为CWinAppEx。
修改CMainFrame的父类为CFrameWndEx,这里我看到示例程序是用了以下这句
#define CFrameWnd CFrameWndEx,这样可以省下改很多东西。。挺不错的
三, 为CMainFrame添加三个成员变量
CMFCStatusBar m_wndStatusBar;
CMFCMenuBar m_wndMenuBar;
CMFCToolBar m_wndToolBar;
删除原来的
CToolBar m_wndToolBar;
CStatusBar m_wndStatusBar;
(小样,现在不要你们了)
四, 我们先自己建一个菜单栏
Stardard Toolbar的 ID 为ID_STARDARD_TOOLBAR
Custom 的 ID 为ID_VIEW_CUSTOMIZE
整个菜单的名称为 IDR_MENU1
五,
图表 1
接着修改CMainFrame::OnCreate函数,修改后如下
...{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//这个是用来换肤功能的,这次我们设置为黑色的
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
//允许自定义功能
CMFCToolBar::EnableQuickCustomization();
//创建菜单栏
if(!m_wndMenuBar.Create(this))
...{
TRACE0("Faild to create menubar");
return -1;
}
//设置菜单栏类型
m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle()| CBRS_SIZE_DYNAMIC);
//创建工具栏
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
...{
TRACE0("Failed to create toolbar ");
return -1; // fail to create
}
//设置状态栏
if (!m_wndStatusBar.Create(this))
...{
TRACE0("Failed to create status bar ");
return -1; // fail to create
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
//这个是浮动工具栏的标题
CString strMainToolBarTitle("Standard Toolbar");
m_wndToolBar.SetWindowText(strMainToolBarTitle);
//将工具和菜单栏设置为可以浮动
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
//没有这个,那个自定义的对话框就出不来了
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, _T("Custom..."));
return 0;
}
六 ,为Custom菜单项添加消息响应函数,名称为OnViewCustomize
ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize)
...{
// TODO: Add your command handler code here
//这个是可以为自定义对话框添加属性页,这里我们就不加了
CList<CRuntimeClass* ,CRuntimeClass*> lstCustomPages;
//以下就是传说中MFC内置的对话框类
CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog
(this, TRUE, AFX_CUSTOMIZE_MENU_SHADOWS| AFX_CUSTOMIZE_TEXT_LABELS
|AFX_CUSTOMIZE_MENU_ANIMATIONS, &lstCustomPages);
pDlgCust->Create();
}
七最后效果图
图表 2
- VC++2008 初体验(二)--自定义对话框
- 关于自定义对话框(二)
- VC++2008 初体验(-)
- AlertDialog实现提示框初体验+自定义对话框
- Androidの自定义对话框AlertDialog(二)
- 自定义列表对话框(二)
- VC++深入详解(6):MFC对话框(二)
- 《VC++深入详解》学习笔记 第八章 对话框(二)
- 孙鑫VC++第8章对话框(二)
- InstallShield自定义对话框浅谈(二)
- Java初体验(二)
- Android O体验系列(二)自定义字体
- VC对话框项目-自定义消息的方法
- VC++60 第八章 自定义对话框
- Android对话框(二)进度条对话框ProgressDialog和自定义对话框CustomDialog
- VC++对话框(控件)
- 自定义View初体验(一)
- Delphi2009初体验 - 语言篇 - 体验泛型(二)
- LCM LCD 郁闷到了
- OpenBSD 4.2 安装指南(1)
- vmware上安装FreeBSD7.0
- abbreviation
- 最近
- VC++2008 初体验(二)--自定义对话框
- widget中文技术文档
- Can u Find the Hidden BUG
- 我的技术日记开张了
- 接口 和 抽象 ,static
- 转贴:剖析Delphi中的多态
- Create a Modeless CPropertySheet with Standard Buttons
- 熬不住了丫
- 一只水杯引发的delegate