Files
envi-code/SourceCode/Code2026/tg_shs/shs_kerncmd/XMLTreeFileDlgHelper.h
T
2026-09-28 15:28:50 +08:00

55 lines
1.6 KiB
C++

#ifndef ZZG_CXMLTREEFILEDLGHELPER_2009_01_05
#define ZZG_CXMLTREEFILEDLGHELPER_2009_01_05
#pragma once
#include "XMLTreeSubclassWnd.h"
class CXMLTreeFileDlgHelper;
//////////////////
// Used to subclass the file dialog
//
class CFileDialogHook : public CXMLTreeSubclassWnd {
protected:
CXMLTreeFileDlgHelper* m_pHelper; // ptr to helper class
virtual LRESULT WindowProc(UINT msg, WPARAM wp, LPARAM lp);
friend CXMLTreeFileDlgHelper;
};
//////////////////
// Used to subclass the file dialog's parent/owner
//
class CFileDialogOwnerHook : public CXMLTreeSubclassWnd {
protected:
CXMLTreeFileDlgHelper* m_pHelper; // ptr to helper class
CFileDialog* m_pDlg; // ptr your CFileDialog dialog derivate
HWND m_hwndParent; // HWND of real open file dialog
virtual LRESULT WindowProc(UINT msg, WPARAM wp, LPARAM lp);
void Init(CWnd* pOwner, CFileDialog* pDlg);
friend CXMLTreeFileDlgHelper;
};
//////////////////
// Class to help parsing file open dialog stuff
//
class CXMLTreeFileDlgHelper {
protected:
CFileDialogHook m_dlghook; // subclass dialog
CFileDialogOwnerHook m_ownerhook; // subclass dialog's owner
CFileDialog* m_pDlg; // your CFileDialog
BOOL m_bUpdateUI; // do idle UI update?
public:
CXMLTreeFileDlgHelper();
~CXMLTreeFileDlgHelper();
// You must call this from your dialog's OnInitDialog
void Init(CFileDialog* pDlg);
// usefull fns for you to call
CListCtrl* GetListCtrl(); // get list control
CString GetItemName(int i); // get filename w/o path
BOOL IsItemFolder(int i); // is this item a folder?
friend CFileDialogHook;
friend CFileDialogOwnerHook;
};
#endif