CMFCShellListCtrl Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CMFCShellListCtrl Class.
The CMFCShellListCtrl
class provides Windows list control functionality and expands it by including the ability to display a list of shell items.
Syntax
class CMFCShellListCtrl : public CMFCListCtrl
Members
Public Methods
Name | Description |
---|---|
CMFCShellListCtrl::DisplayFolder | Displays a list of items that are contained in a provided folder. |
CMFCShellListCtrl::DisplayParentFolder | Displays a list of items that are contained in the folder that is the parent of the currently displayed folder. |
CMFCShellListCtrl::EnableShellContextMenu | Enables or disables the shortcut menu. |
CMFCShellListCtrl::GetCurrentFolder | Retrieves the path of the current folder. |
CMFCShellListCtrl::GetCurrentFolderName | Retrieves the name of the current folder. |
CMFCShellListCtrl::GetCurrentItemIdList | Returns the PIDL of the current list control item. |
CMFCShellListCtrl::GetCurrentShellFolder | Returns a pointer to the current Shell folder. |
CMFCShellListCtrl::GetItemPath | Returns the textual path of an item. |
CMFCShellListCtrl::GetItemTypes | Returns Shell item types that are displayed by the list control. |
CMFCShellListCtrl::IsDesktop | Checks if the currently selected folder is the desktop folder. |
CMFCShellListCtrl::OnCompareItems | The framework calls this method when it compares two items. (Overrides CMFCListCtrl::OnCompareItems.) |
CMFCShellListCtrl::OnFormatFileDate | Called when the framework retrieves the file date displayed by the list control. |
CMFCShellListCtrl::OnFormatFileSize | Called when the framework converts the file size of a list control. |
CMFCShellListCtrl::OnGetItemIcon | Called when the framework retrieves the icon of a list control item. |
CMFCShellListCtrl::OnGetItemText | Called when the framework converts the text of a list control item. |
CMFCShellListCtrl::OnSetColumns | Called by the framework when it sets the names of the columns. |
CMFCShellListCtrl::Refresh | Refreshes and repaints the list control. |
CMFCShellListCtrl::SetItemTypes | Sets the type of items displayed by the list control. |
Remarks
The CMFCShellListCtrl
class extends the functionality of the CMFCListCtrl Class by enabling your program to list Windows shell items. The display format that is used is like that of a list view for an Explorer window.
A CMFCShellTreeCtrl object can be associated with a CMFCShellListCtrl
object to create a complete Explorer window. Then, selecting an item in the CMFCShellTreeCtrl
will cause the CMFCShellListCtrl
object to list the contents of the selected item.
Example
The following example demonstrates how to create an object of the CMFCShellListCtrl
class and how to display the parent folder of the currently displayed folder. This code snippet is part of the Explorer sample.
CMFCShellListCtrl m_wndList;
CRect rectDummy (0, 0, 0, 0);
// The this pointer points to CExplorerView class which extends the CView class.
m_wndList.Create (WS_CHILD | WS_VISIBLE | LVS_REPORT, rectDummy, this, 1);
m_wndList.DisplayParentFolder ();
Inheritance Hierarchy
Requirements
Header: afxshelllistCtrl.h
CMFCShellListCtrl::DisplayFolder
Displays a list of items that are contained in the provided folder.
virtual HRESULT DisplayFolder(LPCTSTR lpszPath);
virtual HRESULT DisplayFolder(LPAFX_SHELLITEMINFO lpItemInfo);
```
### Parameters
[in] `lpszPath`
A string that contains the path of a folder.
[in] `lpItemInfo`
A pointer to a `LPAFX_SHELLITEMINFO` structure that describes a folder to display.
### Return Value
`S_OK` if successful; `E_FAIL` otherwise.
## <a name="cmfcshelllistctrl__displayparentfolder"></a> CMFCShellListCtrl::DisplayParentFolder
Updates the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object to display the parent folder of the currently displayed folder.
virtual HRESULT DisplayParentFolder();
### Return Value
`S_OK` if successful; `E_FAIL` otherwise.
## <a name="cmfcshelllistctrl__enableshellcontextmenu"></a> CMFCShellListCtrl::EnableShellContextMenu
Enables the shortcut menu.
void EnableShellContextMenu(BOOL bEnable = TRUE);
### Parameters
[in] `bEnable`
A Boolean that specifies whether the framework enables the shortcut menu.
## <a name="cmfcshelllistctrl__getcurrentfolder"></a> CMFCShellListCtrl::GetCurrentFolder
Retrieves the path of the currently selected folder in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
BOOL GetCurrentFolder(CString& strPath) const;
### Parameters
[out] `strPath`
A reference to a string parameter where the method writes the path.
### Return Value
Nonzero if successful; 0 otherwise.
### Remarks
This method fails if there is no folder selected in the `CMFCShellListCtrl`.
## <a name="cmfcshelllistctrl__getcurrentfoldername"></a> CMFCShellListCtrl::GetCurrentFolderName
Retrieves the name of the currently selected folder in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
BOOL GetCurrentFolderName(CString& strName) const;
### Parameters
[out] `strName`
A reference to a string parameter where the method writes the name.
### Return Value
Nonzero if successful; 0 otherwise.
### Remarks
This method fails if there is no folder selected in the `CMFCShellListCtrl`.
## <a name="cmfcshelllistctrl__getcurrentitemidlist"></a> CMFCShellListCtrl::GetCurrentItemIdList
Returns the PIDL of the currently selected item.
LPITEMIDLIST GetCurrentItemIdList() const;
### Return Value
The PIDL of the current item.
## <a name="cmfcshelllistctrl__getcurrentshellfolder"></a> CMFCShellListCtrl::GetCurrentShellFolder
Gets a pointer to the currently selected item in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
const IShellFolder* GetCurrentShellFolder() const;
### Return Value
A pointer to the [IShellFolder Interface](https://msdn.microsoft.com/library/windows/desktop/bb775075) for the selected object.
### Remarks
This method returns `NULL` if no object is currently selected.
## <a name="cmfcshelllistctrl__getitempath"></a> CMFCShellListCtrl::GetItemPath
Retrieves the path for an item.
BOOL GetItemPath( CString& strPath,
int iItem) const;
### Parameters
[out] `strPath`
A reference to a string that receives the path.
[in] `iItem`
The index of the list item.
### Return Value
`TRUE` if successful; `FALSE` otherwise.
### Remarks
The index supplied by `iItem` is based on the items currently displayed by the [CMFCShellListCtrl Class](../Topic/CMFCShellListCtrl%20Class.md) object.
## <a name="cmfcshelllistctrl__getitemtypes"></a> CMFCShellListCtrl::GetItemTypes
Returns the type of items displayed by the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
SHCONTF GetItemTypes() const;
### Return Value
A [SHCONTF](https://msdn.microsoft.com/library/windows/desktop/bb762539) value that contains the type of items listed in the `CMFCShellListCtrl`.
### Remarks
To set the type of items listed in a `CMFCShellListCtrl`, call [CMFCShellListCtrl::SetItemTypes](#cmfcshelllistctrl__setitemtypes).
## <a name="cmfcshelllistctrl__isdesktop"></a> CMFCShellListCtrl::IsDesktop
Determines if the folder that is displayed in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object is the desktop folder.
BOOL IsDesktop() const;
### Return Value
`TRUE` if the displayed folder is the desktop folder; `FALSE` otherwise.
## <a name="cmfcshelllistctrl__oncompareitems"></a> CMFCShellListCtrl::OnCompareItems
[!INCLUDE[cpp_fp_under_construction](../Token/cpp_fp_under_construction_md.md)]
virtual int OnCompareItems( LPARAM lParam1,
LPARAM lParam2,
int iColumn);
### Parameters
[in] `lParam1`
[in] `lParam2`
[in] `iColumn`
### Return Value
### Remarks
## <a name="cmfcshelllistctrl__onformatfiledate"></a> CMFCShellListCtrl::OnFormatFileDate
The framework calls this method when it must convert the date associated with an object into a string.
virtual void OnFormatFileDate( const CTime& tmFile,
CString& str);
### Parameters
[in] `tmFile`
The date associated with a file.
[out] `str`
A string that contains the formatted file date.
### Remarks
When a [CMFCShellListCtrl Class](../Topic/CMFCShellListCtrl%20Class.md) object displays the date associated with a file, it must convert that date to a string format. The `CMFCShellListCtrl` uses this method to make that conversion. By default, this method uses the current locale to format the date into a string.
## <a name="cmfcshelllistctrl__onformatfilesize"></a> CMFCShellListCtrl::OnFormatFileSize
The framework calls this method when it converts the size of an object to a string.
virtual void OnFormatFileSize( long lFileSize,
CString& str);
### Parameters
[in] `lFileSize`
The size of the file that the framework will display.
[out] `str`
A string that contains the formatted file size.
### Remarks
When a [CMFCShellListCtrl Class](../Topic/CMFCShellListCtrl%20Class.md) object needs to display the size of a file, it needs to convert the file size into a string format. The `CMFCShellListCtrl` uses this method to make that conversion. By default, this method converts the file size from bytes to kilobytes and then uses the current locale to format the size into string.
## <a name="cmfcshelllistctrl__ongetitemicon"></a> CMFCShellListCtrl::OnGetItemIcon
The framework calls this method to retrieve the icon associated with a shell list item.
virtual int OnGetItemIcon( int iItem,
LPAFX_SHELLITEMINFO pItem);
### Parameters
[in] `iItem`
The item index.
[in] `pItem`
A `LPAFX_SHELLITEMINFO` parameter that describes the item.
### Return Value
The index of the icon image if successful; -1 if the function fails.
### Remarks
The icon image index is based on the system image list.
By default, this method relies on the `pItem` parameter. The value of `iItem` is not used in the default implementation. You can use `iItem` to implement custom behavior.
## <a name="cmfcshelllistctrl__ongetitemtext"></a> CMFCShellListCtrl::OnGetItemText
The framework calls this method when it must retrieve the text of a shell item.
virtual CString OnGetItemText( int iItem,
int iColumn,
LPAFX_SHELLITEMINFO pItem);
### Parameters
[in] `iItem`
The item index.
[in] `iColumn`
The column of interest.
[in] `pItem`
A `LPAFX_SHELLITEMINFO` parameter that describes the item.
### Return Value
A `CString` that contains the text associated with the item.
### Remarks
Each item in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object may have text in one or more columns. When the framework calls this method, it specifies the column that it is interested in. If you call this function manually, you must also specify the column that you are interested in.
By default, this method relies on the `pItem` parameter to determine which item to process. The value of `iItem` is not used in the default implementation.
## <a name="cmfcshelllistctrl__onsetcolumns"></a> CMFCShellListCtrl::OnSetColumns
The framework calls this method when it sets the names of the columns.
virtual void OnSetColumns();
### Remarks
By default, the framework creates four columns in a [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object. The names of these columns are `Name`, `Size`, `Type`, and `Modified`. You can override this method to customize the number of columns and their names.
## <a name="cmfcshelllistctrl__refresh"></a> CMFCShellListCtrl::Refresh
Refreshes and repaints the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
virtual HRESULT Refresh();
### Return Value
`S_OK` if successful; otherwise an error value.
### Remarks
Call this method to refresh the list of items displayed by the `CMFCShellListCtrl` object.
## <a name="cmfcshelllistctrl__setitemtypes"></a> CMFCShellListCtrl::SetItemTypes
Sets the type of items that are listed in the [CMFCShellListCtrl](../Topic/CMFCShellListCtrl%20Class.md) object.
void SetItemTypes(SHCONTF nTypes);
### Parameters
[in] `nTypes`
A list of item types that the `CMFCShellListCtrl` object supports.
### Remarks
For more information about the list of item types, see [SHCONTF](https://msdn.microsoft.com/library/windows/desktop/bb762539).
## See Also
[Hierarchy Chart](../Topic/Hierarchy%20Chart.md)
[Classes](../Topic/MFC%20Classes.md)
[CMFCListCtrl Class](../Topic/CMFCListCtrl%20Class.md)
[CMFCShellTreeCtrl Class](../Topic/CMFCShellTreeCtrl%20Class.md)