115 lines
3.5 KiB
C++
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
|