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帮助,比较好

 

MFC入门应用

-
  • 1970年01月01日 08:00

CDialogBar的使用方法

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

CDialogBar的创建和使用

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

另类的CDialogBar——可停靠对话框的实现方法

本文大部分思路来自于《VISUAL C++ 6.0 MFC 类库参考手册》一书!          CDialogBar在MFC中就是提供控制条形式的非模态对话框。          其使用过程很...
  • txg703003659
  • txg703003659
  • 2012-05-10 06:12:42
  • 5266

CDialogBar

 Dialog Bar类似一个静态的附在框架窗口上的对话框,由于Dialog Bar可以使用资源编辑器进行编辑所以使用起来就很方便,在设计时就可以对Dialog Bar上的子窗口进行定位。用于显示一些...
  • mynote
  • mynote
  • 2005-02-24 10:09:00
  • 1387

多工具条编程秘技

对于一个应用程序来说,用户界面始终是至关重要的问题之一,因为它不仅决定了用户使用的方便程度,而且还能增加用户对软件的信赖程度。下面就如何利用VC++ 6.0编写带有多个工具条的应用程序的问题,谈一点自...
  • mynote
  • mynote
  • 2005-02-24 10:04:00
  • 1242

Windows程序运行原理

1.        Windows应用程序操作系统,计算机硬件之间的相互关系    Windows程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式,不由事件...
  • yyw610879290
  • yyw610879290
  • 2014-07-18 19:32:06
  • 983

内容来至(http://blog.csdn.net/dadaadao/rss/list)

dadaadao的专栏 [转]Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV PS:请参...
  • sinat_25348435
  • sinat_25348435
  • 2016-04-22 11:15:03
  • 2175

详解MFC框架窗口、文档和视图

详解MFC框架窗口、文档和视图 2012-01-09 16:38 1002人阅读 评论(0) 收藏 举报 文档mfc框架buttonnullclass   尽管窗口、文档和视图...
  • worldy
  • worldy
  • 2013-10-04 23:49:51
  • 4183

界面(1):对话框和菜单 打印和按钮等杂项

Q请教高手,图形对话框的问题T我做了一个图象的界面,对话框的,在OnPaint中 画上背景图案,然后用Invalidate 方法刷新每个控件,但是控件并没有完全显示出来,特别是CCtrlList 等控...
  • vcmute
  • vcmute
  • 2005-10-31 17:04:00
  • 3995
收藏助手
不良信息举报
您举报文章:CDialogBar 使用 方法
举报原因:
原因补充:

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