2025-11-27 16:46:48 +09:00

133 lines
4.2 KiB
C++

// ==========================================================================
// Class Specification : COXDirectoryDialog
// ==========================================================================
// Header file : oxdirdlg.h
// Version: 9.3
// This software along with its related components, documentation and files ("The Libraries")
// is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
// to obtain this file, or directly from our office. For a copy of the license governing
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
// //////////////////////////////////////////////////////////////////////////
// Properties:
// NO Abstract class (does not have any objects)
// YES Derived from CFileDialog
// YES Is a Cwnd.
// YES Two stage creation (constructor & Create())
// YES Has a message map
// YES Needs a resource (dialog template : FILEOPENORD)
// NO Persistent objects (saveable on disk)
// NO Uses exceptions
// //////////////////////////////////////////////////////////////////////////
// Desciption :
// This is new class derived from CFileDialog and that creates a new dialog box
// that allows the user to select only a directory. In Windows 95 you can specify
// EXPLORER look.
// For more information, read Knowledge Base article Q105497.
// Remark:
// This file uses resources.
// The reserved ID ranges are : 23040 -> 23059 and 53040 -> 53059
// Prerequisites (necessary conditions):
// ***
/////////////////////////////////////////////////////////////////////////////
#ifndef __DIRDLG_H__
#define __DIRDLG_H__
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "OXDllExt.h"
class OX_CLASS_DECL COXDirectoryDialog : public CFileDialog
{
// Data members -------------------------------------------------------------
public:
protected:
CString m_sTitle;
CString m_sFullDir;
CString m_sExistingDir;
BOOL m_bNewDirAllowed;
BOOL m_bAfterInit;
BOOL m_bExplorerOn95;
// flag that specifies if picked directory was created or already existed
BOOL m_bNewCreated;
private:
// Member functions ---------------------------------------------------------
public:
COXDirectoryDialog(LPCTSTR pszDefaultDir = NULL,
LPCTSTR pszTitle = NULL, BOOL bNewDirAllowed = FALSE,
DWORD dwFlags = OFN_HIDEREADONLY, CWnd* pParentWnd = NULL);
// --- In : pszDefaultDir : The default dir
// pszTitle : The title of the dialog
// bNewDirAllowed : Whether the creation of a new
// (not yet existing) directory is allowed
// dwFlags : A combination of one or more flags that allow
// you to customize the dialog box.
// For a description of these flags, see the
// OPENFILENAME structure description in the Windows
// SDK documentation.
// pParentWnd :The directory dialog's parent or owner window
// --- Out :
// --- Returns :
// --- Effect : Contructor of object
// It will initialize the internal state
CString GetDirectory();
// --- In :
// --- Out :
// --- Returns : The directory the user specified or an empty string
// when the user pressed Cancel
// --- Effect :
inline BOOL GetWasNewCreated() { return m_bNewCreated; }
// --- In :
// --- Out :
// --- Returns: TRUE if picked directory was newly created by user request
// (works only when old fashion style used)
// --- Effect :
protected:
virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
virtual void OnOK();
virtual void OnCancel();
#ifdef WIN32
virtual void OnFolderChange();
static BOOL IsWin95();
CString GetFolderPath() const;
#endif
private:
// Message handlers ---------------------------------------------------------
protected:
//{{AFX_MSG(COXDirectoryDialog)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#endif // __DIRDLG_H__
// ==========================================================================