CDialogBar和Dialog到底有什么区别?

wanghongit 2003-01-09 05:19:00
为什么除了MFC自带的按扭可以实现单击(有BN_CLICKED),其他风格的按扭(没有BN_CLICKED,但有Click,在Dialog上也好用,可在CDialogBar上触发Click事件也不好用)就不行?奥秘藏在哪?
...全文
82 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghongit 2003-01-10
  • 打赏
  • 举报
回复
to zswzwy(←圣骑士!帕迪拉斯!)
我的本来就是从CDialog 继承的
zswzwy 2003-01-09
  • 打赏
  • 举报
回复
// DlgBar.cpp : implementation file
//

#include "stdafx.h"
#include "Painter.h"
#include "DlgBar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgBar dialog


CDlgBar::CDlgBar(CWnd* pParent /*=NULL*/)
: CDialog(CDlgBar::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgBar)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CDlgBar::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgBar)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgBar, CDialog)
//{{AFX_MSG_MAP(CDlgBar)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgBar message handlers
zswzwy 2003-01-09
  • 打赏
  • 举报
回复
#if !defined(AFX_DLGBAR_H__8316A590_527F_11D3_860D_9D4F82E55944__INCLUDED_)
#define AFX_DLGBAR_H__8316A590_527F_11D3_860D_9D4F82E55944__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DlgBar.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CDlgBar dialog

class CDlgBar : public CDialog
{
// Construction
public:
CDlgBar(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CDlgBar)
enum { IDD = IDD_DLGBAR };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlgBar)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CDlgBar)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DLGBAR_H__8316A590_527F_11D3_860D_9D4F82E55944__INCLUDED_)
zswzwy 2003-01-09
  • 打赏
  • 举报
回复
不一定非要从CDialogBar继承.
也可以从CDialog继承.

wanghongit 2003-01-09
  • 打赏
  • 举报
回复
to Pipi0714(皮皮0714) :
我添加时点击CDialogBar了,为什么运行后还是没有按扭?
zhdleo 2003-01-09
  • 打赏
  • 举报
回复
主要的还是这个:
Cwnd->Cdialog
Cwnd->CControlBar->CDialogBar

sinhighly 2003-01-09
  • 打赏
  • 举报
回复
up
Pipi0714 2003-01-09
  • 打赏
  • 举报
回复
你的程序的方法不对:
核对以下;
首先:CDialogBar为他创建类的时候选择CMainFrame然后出现对话矿选择是然后在CMainFrame类中天家你的按牛事件即可。
注意:你在菜单中天家有可能没有你的按牛再天之前你必须电机CDialogBar
demetry 2003-01-09
  • 打赏
  • 举报
回复
TY
isdong 2003-01-09
  • 打赏
  • 举报
回复
都好用,是你程序的问题


两者类的继承关系

Cwnd->Cdialog

Cwnd->CControlBar->CDialogBar

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧