CDialogBar 使用 方法

原创 2007年10月10日 19:15:00

1.创建对话框资源:在对话框资源编辑器内生成一个Dialog资源,并将其风格(Style)属性必须设置为Child,不能设置为OverlappedPopup,否则运行肯定出错;至于边界属性则随用户自己喜欢,一般都是选择None。其余属性也随用户选择,一般没有特殊要求还是选择默认的好。

2.自己派生一个继承于CDialogBar的类,注意此时由于ClassWizard没有把CDialogBar列出来,所以只好自己手动编写.h和.cpp,然后加上必要的处理函数,如:

class CmyDlgWnd : public CDialogBar 
{
public:
 CmyDlgWnd(CWnd *pParent=NULL);
 
 virtual ~CmyDlgWnd();
  //{{AFX_VIRTUAL(CmyDlgWnd)
 protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 //}}AFX_VIRTUAL
// Implementation
protected:
 
 // Generated message map functions
 //{{AFX_MSG(myDlgWnd)
  // NOTE: the ClassWizard will add member functions here
 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

3.假设在对话框添加了一个按钮,现在要响应,可以手动编写处理函数:

.h:

afx_msg void OnClose();

.cpp:

BEGIN_MESSAGE_MAP(CmyDlgWnd, CDialogBar)
 //{{AFX_MSG_MAP(CmyDlgWnd)
  // NOTE: the ClassWizard will add message map macros here
 //}}AFX_MSG_MAP

 ON_BN_CLICKED(IDC_CLOSE,OnClose)
END_MESSAGE_MAP()

4.同上,如果想添加关联变量,可以这样做:

.h:

CString  m_edit;

.cpp:

void CmyDlgWnd::DoDataExchange(CDataExchange* pDX)
{
 CDialogBar::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(Csql)
 DDX_Text(pDX, IDC_EDIT1, m_edit);
 //}}AFX_DATA_MAP
}

5.处理完毕后,在CMainFrame中添加:


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ...

//创建控制条    
 if(!m_wndDlg.Create(this,IDD_DIALOG2,CBRS_LEFT,100))
  return -1;
 //停泊控制条

 m_wndDlg.EnableDocking(CBRS_ORIENT_HORZ);
 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 EnableDocking(CBRS_ALIGN_ANY);
 DockControlBar(&m_wndToolBar);
 DockControlBar(&m_wndDlg);
 }

6.注意此时对话框控制条并不能响应消息,因为消息被CMainFrame截获,因此要想办法把消息转发给CDialogBar,方法就是重载OnCmdMsg,具体的消息转发知识理论将在下次专题中推出:

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
  if(CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
  return TRUE;
  return m_wndDlg.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

 

以上就是一种处理方法,还有一种方法是:(转载),该方法可以

提供ClassWizard帮助,比较好

 

10分钟内完成 MFC对话条CDialogBar编程

关于CDialogBar的编程          今天编程过程中,涉及到了CDialogBar的编程,在网上看了一些资料,虽然看明白了,但是写的不是很透明,如果对于一个初学者来说,肯定会头疼,下面,...
  • kjxyzhaobo_01
  • kjxyzhaobo_01
  • 2014年07月06日 20:40
  • 689

CDialogBar的创建和使用

CDialogBar的创建和使用     一个朋友让我看一个关于DialogBar的程序,问题是在一个DialogBar中添加一个Tree Control控件,在初始化函数OnInit...
  • heary29
  • heary29
  • 2015年02月02日 17:32
  • 436

CDialogBar的创建和使用

http://blog.csdn.net/ljt350740378/article/details/6433141 CDialogBar的创建和使用 一个朋友让我看一个关于DialogBar的...
  • mituan1234567
  • mituan1234567
  • 2014年02月12日 16:20
  • 342

关于CDialogBar的编程

【转】关于CDialogBar的编程         今天编程过程中,涉及到了CDialogBar的编程,在网上看了一些资料,虽然看明白了,但是写的不是很透明,如果对于一个初学者来说,肯定会...
  • adu285041555
  • adu285041555
  • 2013年02月22日 10:50
  • 890

CDialogBar使用方法

以前曾经使用了CDialogBar,但是总结的不够,这里做了一些总结,有的地方还是走不通,不够希望想学习的仔细研读。 原文地址:http://hi.baidu.com/flying5/blog/it...
  • zengweicdut
  • zengweicdut
  • 2013年05月02日 13:59
  • 499

CDialogBar的使用方法

[转载自: http://blog.csdn.net/franksunny/archive/2006/01/06/572357.aspx] 一、创建DialogBar的派生类 首先,创建对话框...
  • mituan1234567
  • mituan1234567
  • 2014年02月12日 16:15
  • 344

CDialogBar的创建和使用 (转载自百度文库)

一个朋友让我看一个关于DialogBar的程序,问题是在一个DialogBar中添加一个Tree Control控件,在初始化函数OnInitDialog中使用InsertItem添加一项,结果运...
  • sha_jinhao
  • sha_jinhao
  • 2013年01月17日 13:51
  • 754

CDialogBar(对话条)和CReBar(伸缩条)的编程

对话条是工具栏和无模式对话框相结合的产物,对话条和对话框类似,包含有标准的Windows控件,并且可以通过创建对话框模板来表示对话条。 伸缩条功能很强大,我们可以在伸缩条中直接增加CToolBar,...
  • sun51sun
  • sun51sun
  • 2013年04月25日 17:12
  • 751

状态栏总在CDialogBar上方的问题解决方法

状态栏总在CDialogBar上方的问题解决方法 场景: 一个VC单文档工程中在文档底部创建一个CDialogBar, 并且要求CDialogBar不能被拖放停靠,  这就是要实现如图...
  • cay22
  • cay22
  • 2013年02月22日 16:40
  • 1030

第7条:避免使用终结方法

第7条:避免使用终结方法(finalizer)缺点    终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要使用它的。使用终结方法会导致行为不稳定,降低性能,以及可移植性...
  • Jing_Unique_Da
  • Jing_Unique_Da
  • 2015年11月12日 11:30
  • 1084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CDialogBar 使用 方法
举报原因:
原因补充:

(最多只允许输入30个字)