【MFC】在DOC/View格局中创建CDialogBar
来源:互联网 发布:qq飞车皮皮虾辅助源码 编辑:程序博客网 时间:2024/06/06 18:34
1 . 新建一个对话框 ,style选择child
2. 用Class Wizard创建一个以CDialog为基类的新的类
3. 注释掉cpp文件中构造函数中的//: CDialog(CMYDIalogBar::IDD, pParent),并将其中出现的CDialog全部更换为CDialogBar
3. 自定义消息ON_MESSAGE(WM_INITDIALOG, OnInitDialog ),(WM_INITDIALOG可以使用系统的消息ID),h文件中:
afx_msg LONG OnInitDialog(UINT,LONG);
cpp文件中:
LONG CMYDIalogBar::OnInitDialog(UINT wParam, LONG lParam)
{
BOOL bRet = HandleInitDialog(wParam, lParam);
if (!UpdateData(FALSE))
{
TRACE0("Warning: UpdateData failed during dialog init./n");
}
return bRet;
}
4.自定义成员函数
virtual BOOL Create(CWnd* pParent, UINT nIDTemplate, UINT nStyle, UINT nID);
BOOL CMYDIalogBar::Create(CWnd* pParent, UINT nIDTemplate, UINT nStyle, UINT nID)
{
// TODO: Add your specialized code here and/or call the base class
BOOL bReturn = CDialogBar::Create(pParent, nIDTemplate, nStyle, nID);
if(bReturn)
{
//m_bmButton.AutoLoad(IDC_BUTTON_BITMAP, this);
//这里可以完成一些初始化的工作,如果在动态创建此CDialogBar的时候。
}
return bReturn;
}
5. 在CMainFrm.h,cpp中的使用:
在h文件中定义一个实体的对象dlgBar,在cpp文件中用Create()函数创建:
if (!dlgBar.Create(this, IDD_MY_DIALOGBAR,
CBRS_TOP| CBRS_GRIPPER |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
IDD_VIEW_DIALOGBAR))
{//IDD_VIEW_DIALOGBAR为自己定义的消息ID
TRACE0("Failed to create dialog bar m_wndDlgBar/n");
return -1; // fail to create
}
dlgBar.EnableDocking( CBRS_ALIGN_RIGHT|CBRS_FLOAT_MULTI|CBRS_ALIGN_TOP);
EnableDocking(CBRS_ALIGN_ANY);
CRect rect;//工具栏的窗口区域
DWORD dw;//工具栏的风格
UINT n;//工具栏的风格
// get MFC to adjust the dimensions of all docked ToolBars
// so that GetWindowRect will be accurate
RecalcLayout(TRUE);
m_wndToolBar.GetWindowRect(&rect);//获取工具栏窗口区域
rect.OffsetRect(1,0);
dw=m_wndToolBar.GetBarStyle();//取工具栏的风格
n = 0;
n = (dw&CBRS_ALIGN_TOP)?AFX_IDW_DOCKBAR_TOP : n;//顶端
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;//底端
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;//左边
n = (dw&CBRS_ALIGN_RIGHT && n==0)?AFX_IDW_DOCKBAR_RIGHT : n;//右边
// When we take the default parameters on rect, DockControlBar will dock
// each Toolbar on a separate line.By calculating a rectangle, we
// are simulating a Toolbar being dragged to that location and docked.
DockControlBar(&m_wndToolBar,n,&rect);
rect.OffsetRect(200,0);
DockControlBar(&dlgBar,n,&rect);
在消息映射中手动添加:
ON_COMMAND_EX(IDD_VIEW_DIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(IDD_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
6. 对于CDialogBar上面的其他控件的响应,在View中完成
- 【MFC】在DOC/View格局中创建CDialogBar
- MFC中app doc view类区别
- MFC中MFC中 Doc 和 View之间的交互
- MFC创建MDI程序一个Doc对应多个View
- 在View中获得Doc指针
- MFC--CDIALOGBAR
- (转)MFC中app doc view类区别
- MFC 中 Doc View Mainframe app 指针相互引用
- MFC中app、doc、view类区别与联系
- MFC中Doc类获取View类的方法
- mfc doc view 记录备忘
- MFC学习04---DOC 的两种操作(在DOC 中定义,在视图中显示)
- 创建MFC类,基类列表里找不到CDialogBar
- 创建MFC类,基类列表里找不到CDialogBar
- 在VC6中使用CDialogBar类
- MFC Doc/View结构实现ActiveX控件
- MFC 获取App,Doc,MainFrame,View指针
- mfc的CDialogBar
- 我的日记 (第十三篇 顾此失彼!) 12:34 2007-12-30
- 第七課 言葉
- Python 编写的分析网速程序
- 面向对象、面向过程和面向数据库建模
- 将一个受限用户提升为管理员
- 【MFC】在DOC/View格局中创建CDialogBar
- BinaryStream二进制流的使用注意点
- 传说中的迅雷IM低调上线
- 百度CFO王湛生逝世 李彦宏高度评价其贡献
- 在Sql Server 2000中启动作业管理
- BinaryStream二进制流的使用注意点2
- 使用telnet登陆smtp服务发邮件(带身份验证)
- 利用StreamWrite流和StreamRead流通过RijndaelManaged对称加密算法
- 堆与栈