
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:
- Insert the #include “DDListCtrl.h” in the dialog C++ file which contains the List Ctrls.
- In the OnInitDialog member function of the dialog, initialize and customize the list controls initialization according to the following template:
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;
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