@@ -59,7 +59,7 @@ class CFileDefExt :
5959 public IShellExtInit,
6060 public IContextMenu,
6161 public IShellPropSheetExt,
62- public IObjectWithSite
62+ public CObjectWithSiteBase
6363{
6464private:
6565 VOID InitOpensWithField (HWND hwndDlg);
@@ -72,21 +72,37 @@ class CFileDefExt :
7272 BOOL AddVersionString (HWND hwndDlg, LPCWSTR pwszName);
7373 BOOL InitVersionPage (HWND hwndDlg);
7474 BOOL InitFolderCustomizePage (HWND hwndDlg);
75+ void InitMultifilePage (HWND hwndDlg);
76+ void InitMultifilePageThread ();
77+ void CountFolderAndFiles ();
7578 static INT_PTR CALLBACK GeneralPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
7679 static INT_PTR CALLBACK VersionPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
7780 static INT_PTR CALLBACK FolderCustomizePageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
78- BOOL CountFolderAndFiles (HWND hwndDlg, LPCWSTR pwszBuf, LPDWORD ticks );
81+ static INT_PTR CALLBACK MultifilePageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
7982
8083 WCHAR m_wszPath[MAX_PATH];
8184 CFileVersionInfo m_VerInfo;
82- BOOL m_bDir;
85+ BOOL m_bDir;
86+ BOOL m_bMultifile;
8387
84- DWORD m_cFiles;
88+ LPITEMIDLIST m_pidlFolder = NULL ;
89+ LPITEMIDLIST *m_pidls = NULL ;
90+ UINT m_cidl = 0 ;
91+ DWORD m_cFiles;
8592 DWORD m_cFolders;
8693 ULARGE_INTEGER m_DirSize;
8794 ULARGE_INTEGER m_DirSizeOnDisc;
95+ enum { WM_UPDATEDIRSTATS = WM_APP };
96+ HWND m_hWndDirStatsDlg;
97+ void InitDirStats (struct DIRTREESTATS *pStats);
98+ BOOL WalkDirTree (PCWSTR pszPath, struct DIRTREESTATS *pStats, WIN32_FIND_DATAW *pWFD);
99+ void UpdateDirStatsResults ();
100+
101+ LONG volatile m_Destroyed = 0 ;
102+ BOOL IsDestroyed () const { return m_Destroyed; }
88103
89104 static DWORD WINAPI _CountFolderAndFilesThreadProc (LPVOID lpParameter);
105+ static DWORD WINAPI _InitializeMultifileThreadProc (LPVOID lpParameter);
90106
91107 // FolderCustomize
92108 WCHAR m_szFolderIconPath[MAX_PATH];
@@ -116,10 +132,6 @@ class CFileDefExt :
116132 STDMETHOD (AddPages)(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) override ;
117133 STDMETHOD (ReplacePage)(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam) override ;
118134
119- // IObjectWithSite
120- STDMETHOD (SetSite)(IUnknown *punk) override ;
121- STDMETHOD (GetSite)(REFIID iid, void **ppvSite) override ;
122-
123135DECLARE_REGISTRY_RESOURCEID (IDR_FILEDEFEXT)
124136DECLARE_NOT_AGGREGATABLE (CFileDefExt)
125137
0 commit comments