12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #ifndef NULLSOFT_FOLDERBROWSE_EXTENDED_DIALOG_HEADER
- #define NULLSOFT_FOLDERBROWSE_EXTENDED_DIALOG_HEADER
- #include <windows.h>
- #include <shlobj.h>
- /// Standart controls
- #define IDC_TV_FOLDERS 0x3741
- #define IDC_SB_GRIPPER 0x3747
- #define IDC_LBL_FOLDER 0x3748
- #define IDC_LBL_CAPTION 0x3742
- #define IDC_EDT_PATH 0x3744
- typedef struct _BFPATH
- {
- int empty;
- int type;
- void *value;
- }BFPATH;
- class FolderBrowseEx
- {
- public:
- FolderBrowseEx(LPCITEMIDLIST pidlRoot, UINT ulFlags, LPCWSTR lpszCaption, LPCWSTR lpszTitle);
- FolderBrowseEx(UINT ulFlags, LPCWSTR lpszCaption, LPCWSTR lpszTitle);
- FolderBrowseEx(UINT ulFlags, LPCWSTR lpszTitle);
- FolderBrowseEx(void);
- virtual ~FolderBrowseEx(void);
- public:
- virtual LPITEMIDLIST Browse(HWND hwndOwner);
-
- LPITEMIDLIST GetPIDL(void) { return pidl; }
- INT GetImage(void) { return image; }
- LPCWSTR GetDislpayName(void) { return pszDisplayName; }
- HRESULT ParseDisplayName(LPCWSTR lpszPath, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut);
- HWND GetDlgItem(int nIDDlgItem) { return ::GetDlgItem(hwnd, nIDDlgItem); }
-
- void SetRoot(LPCITEMIDLIST pidlRoot) { this->pidlRoot = pidlRoot; }
- void SetFlags(UINT ulFlags) { this->ulFlags = ulFlags; }
- void SetSelection(LPCITEMIDLIST pidlSelect);
- void SetSelection(LPCWSTR lpszSelect);
- void SetExpanded(LPCITEMIDLIST pidlExpand);
- void SetExpanded(LPCWSTR lpszExpand);
- void SetCaption(LPCWSTR lpszCaption);
- void SetTitle(LPCWSTR lpszTitle);
-
- protected:
- HWND GetHandle(void) { return hwnd; }
- INT_PTR CallWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
- void SetDialogResult(LRESULT result);
- LRESULT SendMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { return ::SendMessageW(hwnd, uMsg, wParam, lParam); }
- void SetWindowText(LPCWSTR lpText) { ::SetWindowTextW(hwnd, lpText); }
- void EnableOK(BOOL enable) { SendMessage(BFFM_ENABLEOK, 0, (LPARAM)enable); }
- void SetOKText(LPCWSTR lpText) { SendMessage(BFFM_SETOKTEXT, 0, (LPARAM)lpText); }
- void SetStatusText(LPCWSTR lpText) { SendMessage(BFFM_SETSTATUSTEXTW, 0, (LPARAM)lpText); }
-
- virtual void OnInitialized(void);
- virtual void OnIUnknown(IUnknown *lpiu) {}
- virtual void OnSelectionChanged(LPCITEMIDLIST pidl);
- virtual BOOL OnValidateFailed(LPCWSTR lpName) { return FALSE; }
- virtual void OnSelectionDone(LPCITEMIDLIST pidl) { }
- virtual INT BrowseCallback(UINT uMsg, LPARAM lParam);
- virtual INT_PTR DialogProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
- protected:
- LPCITEMIDLIST pidlRoot;
-
- BFPATH pathSelection;
- BFPATH pathExpanded;
- LPWSTR lpszCaption;
- LPWSTR lpszTitle;
- UINT ulFlags;
- INT image;
- WCHAR pszDisplayName[MAX_PATH];
- BOOL expand;
- LPITEMIDLIST pidl;
- private:
- HWND hwnd;
- LONG_PTR oldProc;
-
- friend static int WINAPI BrowseCallback_Helper(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
- friend static LRESULT WINAPI WindowProc_Helper(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- friend static void Initialize(FolderBrowseEx *lpfbx, LPCITEMIDLIST pidlRoot, UINT ulFlags, LPCWSTR lpszCaption, LPCWSTR lpszTitle);
- };
- #endif //NULLSOFT_FOLDERBROWSE_EXTENDED_DIALOG_HEADER
|