windows-nt/Source/XPSP1/NT/printscan/wia/setup/clsinst/cistr.h

115 lines
2.5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/******************************************************************************
Header File: string.h
This defines our locally-owned version of a string class. I swear this has
to be the 5th or 6h time I've done one, but each time someone else owns the
code, so here we go again...
Copyright (c) 1997 by Microsoft Corporation. All Rights Reserved.
Change History:
01-08-97 Bob Kjelgaard
01-30-97 Bob Kjelgaard Added features to aid port extraction for plug and play.
07-05-97 Tim Wells Ported to NT
******************************************************************************/
#if !defined(COSMIC_STRINGS)
#define COSMIC_STRINGS
class CString {
LPTSTR m_lpstr;
public:
void Empty() {
if (m_lpstr) {
delete m_lpstr;
}
m_lpstr = NULL;
}
CString() {
m_lpstr = NULL;
}
~CString() {
Empty();
}
CString(LPCTSTR lpstrRef);
CString(const CString& csRef);
BOOL IsEmpty() const { return !m_lpstr || !*m_lpstr; }
const CString& operator =(const CString& csRef);
const CString& operator =(LPCTSTR lpstrRef);
operator LPCTSTR() const { return m_lpstr; }
operator LPTSTR() { return m_lpstr; }
void GetContents(HWND hwnd); // Get Window Text
void FromTable(unsigned uid); // Load from resource
void Load(ATOM at, BOOL bGlobal = TRUE); // Load from atom
void Load(HINF hInf = INVALID_HANDLE_VALUE,
LPCTSTR lpstrSection = NULL,
LPCTSTR lpstrKeyword = NULL,
DWORD dwFieldIndex = 1,
LPCTSTR lpstrDefault = NULL);
void Load(HKEY hk, LPCTSTR lpstrKeyword);
void MakeSystemPath (LPCTSTR lpstrFilename);
void Store(HKEY hk, LPCTSTR lpstrKey, LPCTSTR lpstrType = NULL);
DWORD Decode();
friend CString operator + (const CString& cs1, const CString& cs2);
friend CString operator + (const CString& cs1, LPCTSTR lpstr2);
friend CString operator + (LPCTSTR lpstr1,const CString& cs2);
};
class CStringArray {
unsigned m_ucItems, m_ucMax, m_uGrowBy;
CString *m_pcsContents, m_csEmpty;
public:
CStringArray(unsigned m_uGrowby = 10);
~CStringArray();
void CStringArray::Cleanup();
unsigned Count() const { return m_ucItems; }
void Add(LPCTSTR lpstr);
CString& operator[](unsigned u);
// Split a string into an array, using a defined separator
void Tokenize(LPTSTR lpstr, TCHAR cSeparator);
};
#endif