|
|
// shcombox.h : Shared shell comboboxEx methods
#ifndef __SHCOMBOX_H__
#define __SHCOMBOX_H__
// COMBOITEMEX wrap with string storage.
typedef struct { UINT mask; INT_PTR iItem; TCHAR szText[MAX_PATH] ; int cchTextMax; int iImage; int iSelectedImage; int iOverlay; int iIndent; int iID; // application-specific item identifier.
ULONG Reserved; LPARAM lParam;
} CBXITEM, *PCBXITEM; typedef CBXITEM CONST *PCCBXITEM;
// ADDCBXITEMCALLBACK fAction flags
#define CBXCB_ADDING 0x00000001 // if callback returns E_ABORT, combo population aborts
#define CBXCB_ADDED 0x00000002 // callback's return value is ignored.
// SendMessageTimeout constants
#define CBX_SNDMSG_TIMEOUT_FLAGS SMTO_BLOCK
#define CBX_SNDMSG_TIMEOUT 15000 // milliseconds
#define CBX_SNDMSG_TIMEOUT_HRESULT HRESULT_FROM_WIN32(ERROR_TIMEOUT)
// Misc constants
#define NO_ITEM_NOICON_INDENT -2 // -1 to make up for the icon indent.
#define NO_ITEM_INDENT 0
#define ITEM_INDENT 1
#define LISTINSERT_FIRST 0
#define LISTINSERT_LAST -1
#ifdef __cplusplus
extern "C" { #endif
// General shell comboboxex methods
typedef HRESULT (WINAPI *LPFNPIDLENUM_CB)(LPCITEMIDLIST, void *); typedef HRESULT (WINAPI *ADDCBXITEMCALLBACK)(ULONG fAction, PCBXITEM pItem, LPARAM lParam);
STDAPI AddCbxItemToComboBox(IN HWND hwndComboEx, IN PCCBXITEM pItem, IN INT_PTR *pnPosAdded); STDAPI AddCbxItemToComboBoxCallback(IN HWND hwndComboEx, IN OUT PCBXITEM pItem, IN ADDCBXITEMCALLBACK pfn, IN LPARAM lParam); STDAPI_(void) MakeCbxItem(OUT PCBXITEM pcbi, IN LPCTSTR pszDisplayName, IN void *pvData, IN LPCITEMIDLIST pidlIcon, IN INT_PTR nPos, IN int iIndent); STDAPI EnumSpecialItemIDs(int csidl, DWORD dwSHCONTF, LPFNPIDLENUM_CB pfn, void *pvData);
STDAPI_(HIMAGELIST) GetSystemImageListSmallIcons();
// local drive picker combo methods
STDAPI PopulateLocalDrivesCombo(IN HWND hwndComboEx, IN ADDCBXITEMCALLBACK pfn, IN LPARAM lParam);
// helpers (note: once all dependents are brought into line using the above methods, we can eliminate
// decl of the following:
typedef HRESULT (*LPFNRECENTENUM_CB)(IN LPCTSTR pszPath, IN BOOL fAddEntries, IN void *pvParam);
// File Associations picker combo methods.
STDAPI PopulateFileAssocCombo(IN HWND, IN ADDCBXITEMCALLBACK, IN LPARAM); STDAPI_(LONG) GetFileAssocComboSelItemText(IN HWND, OUT LPTSTR *ppszText); STDAPI_(LRESULT) DeleteFileAssocComboItem(IN LPNMHDR pnmh);
#define FILEASSOCIATIONSID_ALLFILETYPES 20
#define FILEASSOCIATIONSID_FILE_PATH 1 // Go parse it.
#define FILEASSOCIATIONSID_MAX FILEASSOCIATIONSID_ALLFILETYPES
#ifdef __cplusplus
} #endif
#endif __SHCOMBOX_H__
|