Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// Copyright (C) 1993-1997 Microsoft Corporation. All rights reserved.
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef __CSTR_H__
#define __CSTR_H__
#include "lcmem.h"
class CStr { public: CStr(PCSTR pszOrg) { psz = lcStrDup(pszOrg); } CStr(LPCWSTR pszNew) { psz = NULL; *this = pszNew; } CStr(int idResource) { psz = lcStrDup(GetStringResource(idResource)); }
CStr(void) { psz = NULL; }
// Get a format string from a resource id and merge the string:
// Equivalent to wsprintf(buffer, GetStringResource(id), pszString)
CStr(int idFormatString, PCSTR pszSubString);
// Get the text of a window
CStr(HWND hwnd);
~CStr() { if (psz) lcFree(psz); }
void FormatString(int idFormatString, PCSTR pszSubString); PSTR GetArg(PCSTR pszSrc, BOOL fCheckComma = FALSE); int GetText(HWND hwnd, int id_or_sel = -1); BOOL IsEmpty(void) { return (psz ? (BOOL) (*psz == '\0') : TRUE); } BOOL IsNonEmpty(void) const { return (psz ? (BOOL) (*psz != '\0') : FALSE); } int SizeAlloc(void) { return (psz ? lcSize(psz) : 0); } int strlen(void) { return (psz ? ::strlen(psz) : 0); } void ReSize(int cbNew) { if (!psz) psz = (PSTR) lcMalloc(cbNew); else psz = (PSTR) lcReAlloc(psz, cbNew); }
void TransferPointer(PSTR* ppsz) { *ppsz = psz; psz = NULL; } void TransferPointer(PCSTR* ppsz) { *ppsz = psz; psz = NULL; }
operator PCSTR() { return (PCSTR) psz; } operator PSTR() { return psz; } // as a C string
void operator+=(PCSTR pszCat) { ASSERT(psz); ASSERT(pszCat); psz = (PSTR) lcReAlloc(psz, strlen() + ::strlen(pszCat) + 1); strcat(psz, pszCat); } void operator=(PCSTR pszNew) { ASSERT(pszNew); // Duplicate first in case we are assigning part of ourselves
PSTR pszTmp = lcStrDup(pszNew); if (psz) lcFree(psz); psz = pszTmp; } void operator=(LPCWSTR pszNew);
PSTR psz; };
class CWStr { public: CWStr() : pw(NULL) {} CWStr(HWND hwnd); CWStr(PCSTR psz) { pw = NULL; *this = psz; } CWStr(int idResource) { pw = lcStrDupW(GetStringResourceW(idResource)); }
~CWStr() { if (pw) lcFree(pw); }
void operator=(PCWSTR pszNew) { ASSERT(pszNew); PWSTR pszTmp = lcStrDupW(pszNew); if (pw) lcFree(pw); pw = pszTmp; } void operator=(PCSTR psz); operator LPWSTR() { return (LPWSTR) pw; }; int Length() { return pw ? lstrlenW(pw) : 0; } int ByteLength() { return Length()*sizeof(WCHAR); } //private:
LPWSTR pw; };
#endif // __CSTR_H__
|