windows-nt/Source/XPSP1/NT/shell/shell32/ftadv.h
2020-09-26 16:20:57 +08:00

115 lines
3.5 KiB
C++

#ifndef FTADVDLG
#define FTADVDLG
#include "ftdlg.h"
#include "ftcmmn.h"
class CFTAdvDlg : public CFTDlg
{
public:
CFTAdvDlg(LPTSTR pszProgID, LPTSTR pszExt = NULL);
protected:
~CFTAdvDlg();
///////////////////////////////////////////////////////////////////////////////
// Implementation
private:
LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
// Message handlers
// Dialog messages
LRESULT OnCommand(WPARAM wParam, LPARAM lParam);
LRESULT OnNotify(WPARAM wParam, LPARAM lParam);
LRESULT OnInitDialog(WPARAM wParam, LPARAM lParam);
LRESULT OnDestroy(WPARAM wParam, LPARAM lParam);
LRESULT OnDrawItem(WPARAM wParam, LPARAM lParam);
LRESULT OnMeasureItem(WPARAM wParam, LPARAM lParam);
LRESULT OnOK(WORD wNotif);
LRESULT OnCancel(WORD wNotif);
// Control specific
//
// Action buttons
LRESULT OnNewButton(WORD wNotif);
LRESULT OnEditButton(WORD wNotif);
LRESULT OnChangeIcon(WORD wNotif);
LRESULT OnSetDefault(WORD wNotif);
LRESULT OnRemoveButton(WORD wNotif);
// ListView
LRESULT OnNotifyListView(UINT uCode, LPNMHDR pNMHDR);
LRESULT OnListViewSelItem(int iItem, LPARAM lParam);
private:
// Member variables
TCHAR _szProgID[MAX_PROGID];
TCHAR _szExt[MAX_EXT];
HICON _hIcon;
HFONT _hfontReg;
HFONT _hfontBold;
int _iDefaultAction;
int _iLVSel;
HDPA _hdpaActions;
HDPA _hdpaRemovedActions;
TCHAR _szIconLoc[MAX_ICONLOCATION];
TCHAR _szOldIconLoc[MAX_ICONLOCATION];
int _iOldIcon;
HANDLE _hHeapProgID;
///////////////////////////////////////////////////////////////////////////////
// Helpers
inline HWND _GetLVHWND();
HRESULT _FillListView();
HRESULT _FillProgIDDescrCombo();
HRESULT _InitDefaultActionFont();
HRESULT _InitListView();
HRESULT _InitDefaultAction();
HRESULT _InitChangeIconButton();
HRESULT _InitDescription();
HRESULT _SetDocIcon(int iIndex = -1);
int _GetIconIndex();
HRESULT _SelectListViewItem(int i);
HRESULT _SetDefaultAction(int iIndex);
void _SetDefaultActionHelper(int iIndex, BOOL fDefault);
HRESULT _UpdateActionButtons();
HRESULT _UpdateCheckBoxes();
// PROGIDACTION helpers
HRESULT _RemovePROGIDACTION(PROGIDACTION* pPIDA);
HRESULT _CreatePROGIDACTION(PROGIDACTION** ppPIDA);
HRESULT _CopyPROGIDACTION(PROGIDACTION* pPIDADest, PROGIDACTION* pPIDASrc);
HRESULT _GetPROGIDACTION(LPTSTR pszAction, PROGIDACTION** ppPIDA);
HRESULT _AppendPROGIDACTION(PROGIDACTION* pPIDA);
HRESULT _FillPROGIDACTION(PROGIDACTION* pPIDA, LPTSTR pszActionReg,
LPTSTR pszActionFN);
void _DeletePROGIDACTION(PROGIDACTION* pPIDA);
BOOL _IsNewPROGIDACTION(LPTSTR pszAction);
BOOL _FindActionLVITEM(LPTSTR pszActionReg, LVITEM* plvItem);
BOOL _GetListViewSelectedItem(UINT uMask, UINT uStateMask, LVITEM* plvItem);
int _InsertListViewItem(int iItem, LPTSTR pszActionReg, LPTSTR pszActionFN);
BOOL _IsDefaultAction(LPTSTR pszActionReg);
BOOL _GetDefaultAction(LPTSTR pszActionReg, DWORD cchActionReg);
void _CleanupProgIDs();
LPTSTR _AddProgID(LPTSTR pszProgID);
void _CheckDefaultAction();
BOOL _CheckForDuplicateEditAction(LPTSTR pszActionRegOriginal, LPTSTR pszActionReg,
LPTSTR pszActionFNOriginal, LPTSTR pszActionFN);
BOOL _CheckForDuplicateNewAction(LPTSTR pszActionReg, LPTSTR pszActionFN);
};
#endif //FTADVDLG