78 lines
2.7 KiB
C
78 lines
2.7 KiB
C
|
// 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__
|