#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