精华内容
下载资源
问答
  • cdialogbar
    2021-05-20 11:46:15

    (1)创建Dialog后将其设置为ToolWindow,其它和CDialogBar要求一样

    (2)在OnCreat里添加代码

    if (!m_Bar.Create(this, IDD_HISTOGRAM,CBRS_LEFT , ID_VIEW_HISTOGRAM))

    {

    TRACE0("Failed to create dialog bar/n");

    return -1;      // fail to create

    }

    CString Caption;

    Caption.Format("%s","Histogram");

    m_Bar.SetWindowText(Caption);

    CRect rFrame;

    GetWindowRect(rFrame);

    int x = rFrame.right - 340;

    int y = rFrame.top + 90;

    FloatControlBar(&m_HistogramBar, CPoint(x, y), CBRS_ALIGN_TOP);

    (3)有时候使用FloatControlBar会出现错误,将

    m_Bar.EnableDocking(CBRS_ALIGN_BOTTOM   |   CBRS_ALIGN_RIGHT);

    EnableDocking(CBRS_ALIGN_ANY);

    要添加在FloatControlBar之前,问题就可以解决了!

    更多相关内容
  • CDialogBar

    2010-04-21 20:09:44
    具体说明如何创建CDialogBar的程序,以及工具栏的自定义,状态栏的自定义,定时功能,启动和暂停计时器等。
  • 介绍从CToolBar继承的 CPaletteBar CToolBar m_wndToolBar CStyleBar m_wndStyleBar CPaletteBar m_wndPaletteBar CDialogBar m_wndDlgBar
  • CDialogBar的创建和使用

    2012-10-18 16:58:36
    CDialogBar的创建和使用 一个朋友让我看一个关于DialogBar的程序,问题是在一个DialogBar中添加一个Tree Control控件,在初始化函数OnInitDialog中使用InsertItem添加一项,结果运行后,始终在DialogBar中显示不出来...
  • 创建 可改变大小Dialogbar 例子,vc6.0下编译
  • CDialogBar 记录

    2021-12-01 16:45:13
    CDialogBar 记录 使用CDialogBar需要CFrameWnd,这个示例展示了在对话框中使用CDialogBar

    CDialogBar 记录

    使用CDialogBar需要CFrameWnd,这个示例展示了在对话框中使用CDialogBar

    DialogBar相比Dialog有很多优势。因CDialogBar继承于CControlBar,因此其可以Docking在窗口一边,而把CView挤压开,但是 CDialogBar 的使用并不是很容易,因为 MFC 里面并没有提供直接可以使用的CDialogBar,我们需要自己动手,打造自己的完美的 DialogBar。

    在CDialogBar编程之前,我们首先要明确一点,CDialogBar是CControlBar派生出来的,而CControlBar又是从CWnd派生出来的,所以CDialogBar并不是从CDialog派生出来的,这点一定注意,它是从CWnd间接派生出来的!明确这一点之后,我们开始写一个CDialogBar的程序。在CDialogBar创建完成之后,我们看上去效果好像和一个CToolBar一样,因此呢,在显示过程中,也有类似CToolBar在窗口中的设置。

    官方文档

    https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cdialogbar-class?view=msvc-150
    在这里插入图片描述

    Windows-classic-samples/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFile/

    https://github.com/microsoft/windows-classic-samples/tree/main/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFile

    https://docs.microsoft.com/zh-cn/samples/microsoft/windows-classic-samples/mfcapturetofile/
    在这里插入图片描述

    https://github.com/microsoft/windows-driver-samples/tree/master/usb/usbview

    55

    当创建一些简单的形如只包含了一些BUTTON的DialogBar的时候,是不需要从CDialogBar派生,因为CDialogBar本身就是从CControlBar派生而来,它可以接收任何的通告消息。
    然而,在一下的诸多较为复杂的情形下,我们就需要利用CDialogBar派生出自己的类了(子控件是指用作子窗口的控件------个人理解)。
    · dialogbar包含了具有drop-down属性的COMBOBOX;
    · dialogbar包含了treeview或者tree控件,listview, list控件;
    · dialogbar包含了ActiveX控件;
    诸如上面所说的任何较为复杂的情形下,我们都应该对Dialogbar进行派生,以便在派生的类中对其他的控件进行初始化。因为在ClassWizard并没有支持以CDialogBar为基类的派生。所以我们必须自己手动完成该派生过程。这篇文章就是要阐述如何将CDialog的派生类转换为CDialogBar的派生类。
    在开始正题之前,有必要说明一点:CDialogBar类是从CControlBar类派生而来的,而CControlBar类则是从CWnd类派生而来,所以CDialogBar并非CDialog的派生类。

    66

    step1: 创建一个SDI工程
    step2:project->Add to project->Components and controls->Visual C++ Components
    选择Dialog Bar,按Insert
    step3:资源管理器中多了一个缺省名为CG_IDD_MYDIALOGBAR的对话框资源在上面添加
    你想使用的控件(IDC_BUTTON1,一个按钮。按Ctrl+W,提示你需要将资源和类绑定,选择已 有的类,把它绑定到CMainFrame.
    step4:在ClassWizard的object ID列表框中出现“IDC_BUTTON1",选中它,在ClassName
    列表中选择CMainFrame,添加消息处理函数:
    void CMainFrame::OnButton1()
    {
    MessageBox(“Hellow World!”);
    }
    step5:菜单资源的"查看“下面加入一个ID为CG_ID_VIEW_MYDIALOGBAR,caption为
    My Dialog Bar的项,用来控制DialogBar的显示、隐藏

    77

    VC++

    这里可能有:
    http://www.pcvc.net/
    http://www.vckbase.com/
    http://www.vchelp.net/vchelp/vchelp.asp

    88

    5.增加启动画面 我们可以利用向导增加之后 我们自行设置 启动画面的 style

    project->add to project ->comments controls 添加-> vc++ components -> splash screen 就完成了启动画面的添加

    对于启动时间 画面 我们可以自行在生成的类中设置

    展开全文
  • 对话栏(CDialogBar

    2021-04-28 08:22:52
    对话栏(CDialogBar) 对话栏是工具栏和非模态对话框相结合的产物。MFC为对话栏提供了CDialogBar类,该类派生于CControlBar类。对话栏与对话框类似,包含标准的Windows控件,并且可以通过创建对话模板来表示对话栏。...

    对话栏(CDialogBar)

    对话栏是工具栏和非模态对话框相结合的产物。MFC为对话栏提供了CDialogBar类,该类派生于CControlBar类。对话栏与对话框类似,包含标准的Windows控件,并且可以通过创建对话模板来表示对话栏。
    一:对话栏主要方法
    在这里插入图片描述
    二:对话栏的应用实例
    (l)创建一个基于单文档的应用程序。
    打开VS2019——>新建——>项目
    在这里插入图片描述
    在这里插入图片描述
    把项目设置为使用【多字符集】

    (2):添加资源——>新建一个IDD_DIALOGBAR
    在这里插入图片描述
    (3):在DialogBar中添加控件
    在这里插入图片描述
    (4):使用类向导添加变量声明CDialogBar m_wndDialogBar
    在这里插入图片描述
    (5):在MainFrm.cpp文件的OnCreate函数中创建CDialogBar对象,代码如下:

    if (!m_wndDialogBar.Create(this, IDD_DIALOGBAR, CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY, IDD_DIALOGBAR))
    	{
    		TRACE0("未能创建DIALOGBAR\n");
    		return -1;      // 未能创建
    	}
    

    (6):使用类向导添加OnupdataButton方法:

    void CMainFrame::OnupdataButton(CCmdUI* pCmdUI)
    {
    	// TODO: 在此处添加实现代码.
    	pCmdUI->Enable(TRUE);
    }
    

    (7):添加消息映射激活DialogBar上的按钮

    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    	ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnupdataButton)//UPDATE_COMMAND_UI就是更新命令用户接口消息,                                                 
    	ON_UPDATE_COMMAND_UI(IDC_BUTTON2, OnupdataButton)//专门用于处理菜单项和工具条按钮的更新。
    	ON_UPDATE_COMMAND_UI(IDC_BUTTON7, OnupdataButton)
    	ON_UPDATE_COMMAND_UI(IDC_BUTTON3, OnupdataButton)
    END_MESSAGE_MAP()
    

    (8)为“+”,“-”,“*”,“/"按钮设置单击事件,实现对编辑框中数字进行计算的功能,代码如下:
    MainFrm.h头文件中添加

    
    void OnupdataButton(CCmdUI* pCmdUI);
    	afx_msg void OnButton1();
    	afx_msg void OnButton2();
    	afx_msg void OnButton3();
    	afx_msg void OnButton7();
    

    MainFrm.cpp文件中添加

    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    	ON_COMMAND(IDC_BUTTON1, &CMainFrame::OnButton1)
    	ON_COMMAND(IDC_BUTTON2, &CMainFrame::OnButton2)
    	ON_COMMAND(IDC_BUTTON3, &CMainFrame::OnButton3)
    	ON_COMMAND(IDC_BUTTON7, &CMainFrame::OnButton7)
    END_MESSAGE_MAP()
    
    void CMainFrame::OnButton1()
    {
    	// TODO: 在此添加命令处理程序代码
    	CString str1, str2, str3;
    	CMainFrame* pMF = (CMainFrame*)AfxGetMainWnd();
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT1, str1);
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT2, str2);
    	str3.Format("%d", atoi(str1) + atoi(str2));
    	pMF->m_wndDialogBar.SetDlgItemText(IDC_EDIT3, str3);
    }
    
    
    void CMainFrame::OnButton2()
    {
    	// TODO: 在此添加命令处理程序代码
    	CString str1, str2, str3;
    	CMainFrame* pMF = (CMainFrame*)AfxGetMainWnd();
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT1, str1);
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT2, str2);
    	str3.Format("%d", atoi(str1) - atoi(str2));
    	pMF->m_wndDialogBar.SetDlgItemText(IDC_EDIT3, str3);
    }
    
    
    void CMainFrame::OnButton3()
    {
    	// TODO: 在此添加命令处理程序代码
    	CString str1, str2, str3;
    	CMainFrame* pMF = (CMainFrame*)AfxGetMainWnd();
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT1, str1);
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT2, str2);
    	if (atoi(str2) == 0)
    	{
    		MessageBox("除数不能为0!");
    		return;
    	}
    	str3.Format("%d", atoi(str1) / atoi(str2));
    	pMF->m_wndDialogBar.SetDlgItemText(IDC_EDIT3, str3);
    
    	
    }
    
    
    void CMainFrame::OnButton7()
    {
    	// TODO: 在此添加命令处理程序代码
    	CString str1, str2, str3;
    	CMainFrame* pMF = (CMainFrame*)AfxGetMainWnd();
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT1, str1);
    	pMF->m_wndDialogBar.GetDlgItemText(IDC_EDIT2, str2);
    	str3.Format("%d", atoi(str1) * atoi(str2));
    	pMF->m_wndDialogBar.SetDlgItemText(IDC_EDIT3, str3);
    	
    }
    
    

    运行程序结果如图:
    在这里插入图片描述

    下一篇:通用对话框——文件对话框

    展开全文
  • CDialogBar的创建和使用
  • CDialogBar类应用

    2008-02-16 16:18:28
    CDialogBar类应用.rar,CDialogBar类应用,StdAfx.cpp,ListBox.rc,ListBox.vcproj.F312A39CBDD2490.Administrator.user,resource.h,效暜嗾,snap1.bmp,snap.bmp,snap2.bmp,ListBoxDoc.h,ListBox.opt,ListBox.plg,...
  • 创建一个可停靠的CDialogBar可以像CDialog一样添加控件 实现相应功能
  • CDialogBar的创建

    千次阅读 2018-08-25 17:56:55
    创建CDialogBar对话框主要分为如下几个步骤: 一、创建对话框资源; 二、为对话框添加新的派生类; 三、修改派生类; 四、修改初始化函数; 五、在框架类中实现派生类的对象化。 下面我将根...

    此文档基于能巴CDialogBar的使用方法https://www.cnblogs.com/mysunnyday/archive/2012/02/07/2341867.html修改补充。

    创建CDialogBar对话框主要分为如下几个步骤:

    一、创建对话框资源;

    二、为对话框添加新的派生类;

    三、修改派生类;

    四、修改初始化函数;

    五、在框架类中实现派生类的对象化。

    下面我将根据自己实际操作具体讲解一下(VC++ 6.0)

    一、创建对话框资源

               

    2.在资源视图中,添加一个新的对话框,将其名称改为IDD_DATASTATUS。并将其风格(Style)属性设置为Child,边界属性选择None。其余属性选择默认。

     

    二、为对话框添加新的派生类

    注意:在为对话框添加新类时,可能会提示无法创建的情况。此时只需将整个程序编译运行后重新添加即可。

    1. 首先创建一个单文档的MFC应用程序,如图所示  

    三、修改派生类;

    分别在DataStatus.h和.cpp文件中修改继承关系。

    1.在DataStatus.h头文件中,

    将class CDataStatus : public CDialog  改为class CDataStatus : public CDialogBar

    2.在DataStatus.cpp文件中,

     

    将CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/)

    : CDialog(CDataStatus::IDD, pParent)

    {

           //{{AFX_DATA_INIT(CDataStatus)

                  // NOTE: the ClassWizard will add member initialization here

           //}}AFX_DATA_INIT

    }

    改为

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

    将void CDataStatus::DoDataExchange(CDataExchange* pDX)

    {
           CDialog::DoDataExchange(pDX);

           //{{AFX_DATA_MAP(CCurrentCheckDlg)

           ………..

           //}}AFX_DATA_MAP

    }

    改为

    void CDataStatus::DoDataExchange(CDataExchange* pDX)
    {
           //{{AFX_DATA_MAP(CCurrentCheckDlg)
           ………….
           //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CDataStatus, CDialog)修改为BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

    四、修改初始化函数;

    首先在ClassWizard的MessageMap中对消息该CDataStatus类的WM_INITDIALOG消息添加处理函数默认名为OnInitDialog。然后选择editcode进入DataStatus.cpp文件中修改代码。

     

    1、             添加消息映射函数。由于对话框形式的初始化函数消息并未加载到消息映射内,为此我们需要手工添加,要不然代码无法拦截该工具条的初始化消息,形式如下:

    将BEGIN_MESSAGE_MAP(CDataStatus, CDialog)

       //{{AFX_MSG_MAP(CDataStatus)

       .......

       //}}AFX_MSG_MAP

    END_MESSAGE_MAP()

    改为:

    BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

     

       //{{AFX_MSG_MAP(CDataStatus)

     

       .......

     

       ON_MESSAGE(WM_INITDIALOG,OnInitDialog)

     

       //}}AFX_MSG_MAP

     

    END_MESSAGE_MAP()

     

    2、             修改OnInitDialog函数,此函数并未传递参数,但是在这里我们需要让它传递参数,代码如下修改

    将BOOL CDataStatus::OnInitDialog()

    {

       CDialogBar::OnInitDialog();

      

       // TODO: Add extra initialization here

       return TRUE;  // return TRUE unless you set the focus to a control

                  // EXCEPTION: OCX Property Pages should return FALSE

    }

    改为:

    BOOL CDataStatus::OnInitDialog(UINT wParam,LONG lParam)

     

    {

     

       //CDialogBar::OnInitDialog();

     

      

     

       // TODO: Add extra initialization here

     

       BOOL bRet = HandleInitDialog(wParam,lParam);

     

       if (!UpdateData(FALSE))

     

       {

     

              TRACE("InitCDataStatus Failed!");

     

       }

     

       return TRUE;  // return TRUE unless you set the focus to a control

     

                     // EXCEPTION: OCX Property Pages should return FALSE

     

    }

    然后在DataStatus.cpp对CDataStatus::OnInitDialog声明也要做修改

    virtual BOOL OnInitDialog();修改为virtual BOOL OnInitDialog(UINT wParam,LONG lParam);

     

    五、在框架类中实现派生类的对象化。

    1.在MainFrm.h文件里声明实例对象,进行实例化:CDataStatus      m_wndDataStatus;(头文件中需要添加#include "DataStatus.h")

    2.在MainFrm.cpp文件里,在框架类的OnCreate函数内创建对象并将对象绑定对话框资源,本例实例如下:

     

    if (!m_wndDataStatus.Create(this,IDD_DATASTATUS,WS_VISIBLE|WS_CHILD

     

    |CBRS_SIZE_DYNAMIC|CBRS_BOTTOM,IDD_DATASTATUS))

     

           {

     

                  TRACE0("Failed to create CDataStatus bar!");

     

                  return -1;

     

           }

    3.重写框架类的OnCmdMsg虚函数。如果不重写该函数,那么不光DDX功能无法实现,连最基本的OnCommand事件都无法实现。(可能你的MainFrm.cpp里并无OnCmdMsg函数,此时需手动添加。也可以在类向导里添加,添加方式跟步骤四中为WM_INITDIALOG消息添加处理函数默认名为OnInitDialog方式相同。这里介绍手动添加方式)

    1.在.cpp文件里,添加如下代码

    BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)

    {

           // TODO: Add your specialized code here and/or call the base class

           if (m_wndDataStatus.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))

                  return    TRUE;

           return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

    在.h 文件里,对其进行声明,添加如下代码;

    virtual     BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);(可放在virtual void Dump(CDumpContext& dc) const;之后)

     

    然后编译运行,就大功告成。界面如下图:

     

     

     

     

    展开全文
  • 一个完美的CDialogBar实例

    热门讨论 2010-11-03 10:54:10
    一个完美的CDialogBar实例,VC++2008,mfc框架并展示了一个CAD软件的基本界面
  • 这么看来,目前在vc2008 sp1下使用mfc框架,要么使用原始的CFrameWnd+CToolBar、CDialogBar等,要么使用CFrameWndEx+CMFCToolBar、CPaneDialog及CDockablePane等。 vs2008 sp1加入的bcg元素,确实比原来的灵活多了...
  • 1.首先,创建对话框资源:在对话框资源编辑器内生成一个Dialog资源,并将其风格(Style)属性必须设置为Child,不能设置为Overlapped或Popup,否则运行...2.CMainFrame的头文件里添加CDialogBar m_wndDlgBar; 3....
  • 重载CDialogBar::OnUpdateCmdUI void CMyDialogBar ::OnUpdateCmdUI(CFrameWnd * pTarget , BOOL bDisableIfNoHandler ) { CDialogBar : : OnUpdateCmdUI(pTarget, FALSE) ; } 以上两种方法任选一...
  • 在对话框中使用CDialogBar

    热门讨论 2008-12-10 16:51:07
    使用CDialogBar需要CFrameWnd,这个示例展示了在对话框中使用CDialogBar
  • 1.一些常见的原因网上已经提供了,我就不再赘述了 2.我遇到的情况,在vs2012中,无法显示,CMainFrame继承自CFrameWndEx,把它改成CFrameWnd,会遇到一系列编译错误,都很好解决 3.个人的看法:我没有深入研究过为...
  • CDialogBar应用

    2014-10-09 14:04:23
    您可以将 CDialog 类转换 CDialogBar 类使用以下的 9 个步骤:  在类声明中更改从 CDialog 为 CDialogBar 的基类。不要忘记还更改基类 BEGIN_MESSAGE_MAP 在.cpp 文件中。更改该.h 和.cpp 文件中的构造函数。...
  • CDialogBar使用方法

    千次阅读 2013-05-02 13:59:57
    以前曾经使用了CDialogBar,但是总结的不够,这里做了一些总结,有的地方还是走不通,不够希望想学习的仔细研读。 原文地址:http://hi.baidu.com/flying5/blog/item/bc09842d007c2331349bf7c9.html 参考微软技术...
  • MFC--CDIALOGBAR

    2013-05-15 17:10:35
    CDialogBar的创建和使用 一个朋友让我看一个关于DialogBar的程序,问题是在一个DialogBar中添加一个Tree Control控件,在初始化函数OnInitDialog中使用InsertItem添加一项,结果运行后,始终在DialogBar中显示不...
  • CDialogBar的使用方法

    2014-02-12 16:15:29
    其次,创建基于CDialog的派生类:打开ClassWizard,为以上创建的资源添加一个以CDialog为基类的派生类(因为ClassWizard没有将CDialogBar列在基类目录清单中,所以用户只能先以CDialog类派生)。 再次,修改...
  • mfc的CDialogBar

    千次阅读 2012-07-11 12:49:13
     添加一个CDialogBar派生类:在资源中添加一个对话框,再采用类向导来添加类,这里我们找不到CDialogBar作为基类,可以先用CDialog作为基类产生一个,然后把所以的“CDialog”替换为“CDialogBar”。 构造函数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 756
精华内容 302
关键字:

cdialogbar