List Control with OLE Drag '& Drop | CodeGuru

List Control with OLE Drag ‘& Drop

Features This extended list control allow OLE drag and drop between list controls. The programmer can enable/desable local drag and drop of list items inside the same control, automatic scrolling and the removing of dragged items from the source list. Control Usage Initialize the OLE libraries in the application InitInstance member function: BOOL CDdDemoApp::InitInstance() { […]

Written By
CodeGuru Staff
CodeGuru Staff
Nov 9, 2000
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Features

This extended list control allow OLE drag and drop between list controls. The programmer can enable/desable
local drag and drop of list items inside the same control, automatic scrolling and the removing of
dragged items from the source list.

Control Usage

  1. Initialize the OLE libraries in the application InitInstance member function:
  2. BOOL CDdDemoApp::InitInstance()
    {
     AfxEnableControlContainer();
    #ifdef _AFXDLL
     // Call this when using MFC in a shared DLL
     Enable3dControls();
    #else
     // Call this when linking to MFC statically
     Enable3dControlsStatic();
    #endif
    
     //-------------------------
     // Initialize OLE libraries
     //-------------------------
     if (!AfxOleInit())
      return FALSE;
    
  3. Insert the #include “DDListCtrl.h” in the dialog C++ file which contains the List Ctrls.
  4. In the OnInitDialog member function of the dialog, initialize and customize the list controls initialization according to the following template:
  5. BOOL CDdDemoDlg::OnInitDialog()
    {
     CDialog::OnInitDialog();
    
     //.................................
    
     //---------------------------->
     // 1 - Subclass the list controls
     //----------------------------
     m_listVars.SubclassDlgItem(IDC_LIST_VAR, this);
     m_listRows.SubclassDlgItem(IDC_LIST_ROWS, this);
     m_listCols.SubclassDlgItem(IDC_LIST_COLS, this);
     m_listData.SubclassDlgItem(IDC_LIST_DATA, this);
     m_listPages.SubclassDlgItem(IDC_LIST_PAGES, this);
    
     //--------------------------------------------------------------
     // 2 - Initialize the List view controls
     //--------------------------------------------------------------
     CString s(TCHAR('M'),29);
     int len = m_listVars.GetStringWidth(s)+15;
     LV_COLUMN lvC;
     lvC.mask = LVCF_FMT | LVCF_WIDTH;
     lvC.fmt  = LVCFMT_LEFT;  // Left-align column
     lvC.cx   = len;          // Width of column in pixels
     if (m_listVars.InsertColumn(0,&lvC) == -1)
      return FALSE;
    
     m_listVars.DeleteAllItems();
    
     m_listVars.SetLocalDD(FALSE);   // Disable local Drag&Drop
     m_listVars.SetScrolling(FALSE); // and auto scrolling
    
     // Create a column for the row variables list view control.
     if (m_listRows.InsertColumn(0,&lvC) == -1)
      return FALSE;
    
     m_listRows.DeleteAllItems();
    
     // Create a column for the column variables list view control.
     if (m_listCols.InsertColumn(0,&lvC) == -1)
      return FALSE;
    
     m_listCols.DeleteAllItems();
    
     // Create a column for the data variables list view control.
     if (m_listData.InsertColumn(0,&lvC) == -1)
      return FALSE;
    
     m_listData.DeleteAllItems();
    
     // Create a column for the page variables view control.
     if (m_listPages.InsertColumn(0,&lvC) == -1)
      return FALSE;
    
     m_listPages.DeleteAllItems();
    
     //------------------------------------------
     // 3 - Set the content of the list view controls
     //------------------------------------------
     CWordArray aVars;
     int size = m_pSelectInfo->m_asNames.GetSize();
     aVars.SetSize(size);
     // Initially the list of available variables contains all variables
     for (int i=0; i<size; i++)
      aVars[i] = i;
    
     // Fill the list of variables
     m_pData->FillListCtrl(m_listVars, aVars);
     m_pData->FillListCtrl(m_listRows, m_pSelectInfo->m_aRowsVar);
     m_pData->FillListCtrl(m_listCols, m_pSelectInfo->m_aColsVar);
     m_pData->FillListCtrl(m_listData, m_pSelectInfo->m_aDataVar);
     m_pData->FillListCtrl(m_listPages, m_pSelectInfo->m_aPagesVar);
    
     //-----------------------------------------------
     // 4 - Initialize the list controls for Drag&Drop
     //-----------------------------------------------
     m_listVars.Initialize();
     m_listRows.Initialize();
     m_listCols.Initialize();
     m_listData.Initialize();
     m_listPages.Initialize();
    
     return TRUE;
    }
    

Downloads

Download source – 9 Kb

Download demo project – 32 Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.