Subselection对话框

介绍 通常,当用户可以从预定义的集合中选择一些项目,并且必须同时对它们进行排序时,就会使用类似于上面的对话框。例如,为数据库访问或导出到文件选择一组字段。 CSubSelectionDlg是从CDialog派生的,可以用作您自己的类的基。所包含的下载提供了一个包含所有可能选项的示例(CMySelectionDlg)。您可以创建自己的对话框模板,但是它需要(至少)两个clistbox。 下面是一个将CSubSelectionDlg包含到你的项目中的一步一步的指南: 步骤 步骤1。将csubselectiondll .h和csubselectiondll .cpp这两个文件添加到项目中。 步骤2。用这两个clistbox创建一个新的对话框资源。你可以使一个矿石两个盒子作为“单一”,“多个”或“扩展”的选择。 步骤3。第一个CListBox应该做“排序”。 步骤4。现在调用类向导并将一个CDialog(示例中的CMySelectionDlg)派生类附加到新的对话框模板中。 第5步。现在将新对话框的基类从CDialog更改为CSubSelectionDlg。还需要包含csubselectiondll .h文件。 步骤6。在您的.h文件中包含以下行:Hide  复制Code

//
// tell the constructor about the two CListBoxes
        enum { IDD2 = IDC_SELECTION_LIST1, IDD3 = IDC_SELECTION_LIST2 };
//

并将IDC_SELECTION_LIST1/IDC_SELECTION_LIST2替换为CListbox资源ID的名称。 步骤7。将对话框构造函数更改为包含以下id:复制Code

//
   CMySelection::CMySelection(CWnd* pParent /*=NULL*/)
        : CSubSelectionDlg(CMySelection::IDD,
        CMySelection::IDD2,CMySelection::IDD3, pParent)
       {....
//

步骤8。现在将任何按钮等映射到基类成员。注意:这些映射都是不需要的,但是您将不会获得附加的功能:复制Code

//
   ON_LBN_DBLCLK(IDC_SELECTION_LIST1, OnDblclkSelectionList1)
   ON_LBN_DBLCLK(IDC_SELECTION_LIST2, OnDblclkSelectionList2)
   ON_BN_CLICKED(IDC_MOVEDOWN, OnMovedown)
   ON_BN_CLICKED(IDC_MOVEUP, OnMoveup)
   ON_BN_CLICKED(IDC_EXCLUDE, OnExclude)
   ON_BN_CLICKED(IDC_INCLUDE, OnInclude)
   ON_BN_CLICKED(IDC_SELECTALL, OnSelectAll)
//

第9步。现在您可以覆盖虚拟函数InitListBox1()和InitListBox2(),从而为这些盒子提供一些可用的东西。 现在,请向后倾斜,享受您的项目的最新添加。有关详细信息,请参考示例项目。当然,还有增强的空间,比如拖放、图标支持或属性表。 本文转载于:http://www.diyabc.com/frontweb/news8484.html

原文地址:https://www.cnblogs.com/Dincat/p/13468043.html