Custom controlsWindows 2008 R2Windows 2008Win8Windows VistaWindows 7Windows 2003VC++Visual Studio 2010Windows XPMFCBeginnerDevVisual StudioWindowsC++
A Tiny Custom List Control





5.00/5 (7 votes)
A tiny custom list control
Introduction
Preview:
We can insert a listbox
:
We can even insert a dialog:
Using the Code
Create Custom List Control
m_pListCtrl = new CListCtrlCustom();
m_pListCtrl->Create(WS_CHILD | WS_VISIBLE | WS_BORDER, rcListCtrl, this, IDC_STATIC_RECT+1);
The custom list control contains all the CListCtrl
's methods.
Its Extended Methods
//Get extended control
// If the grid has no control, return NULL
CWnd *GetCtrl(int nRow, int nCol);
//Get text normal
// If the grid has no control, return CListCtrl::GetItemText.Or return CWnd::GetWindowText
CString GetText(int nRow, int nCol);
//Add any control to the grid
BOOL SetItemEx(int nItem, int nSubItem, CWnd *pExCtrl);
//Set the row height
BOOL SetRowHeight(int nHeight);
//Register the rectangle setting event
void RegOnSettingRect(LPFUNC_RESIZE_CTRL pfnResizeExCtrl);
The Rectangle Setting Event Callback Function
//Definition
//return TRUE, that means control rectangle has been set.
//Return FALSE, the control will be fill to the grid.
typedef BOOL (CALLBACK *LPFUNC_SETTING_RECT)
(CListCtrlCustom *pListCtrl, CWnd *pCtrl, CRect &rectGrid);
Attention
- The control that will be inserted into the custom list control must set its parent to the custom list control.
- The dialog to be inserted must be set to child style.
Points of Interest
The way I set the row height is not the best way. Can you help me to improve it? See CListCtrlCustom::SetRowHeight(...)
.
Thanks for reading.
History
- 2015/4/20 - Fixed some bugs and made a special control example