bool MyGetLogicalDriveStrings(CSysStringVector &driveStrings) { driveStrings.Clear(); UINT32 size = GetLogicalDriveStrings(0, NULL); if (size == 0) return false; CSysString buffer; UINT32 newSize = GetLogicalDriveStrings(size, buffer.GetBuffer(size)); if (newSize == 0) return false; if (newSize > size) return false; CSysString string; for (UINT32 i = 0; i < newSize; i++) { TCHAR c = buffer[i]; if (c == TEXT('\0')) { driveStrings.Add(string); string.Empty(); } else string += c; } if (!string.IsEmpty()) return false; return true; }
static void SetComplexString(bool &defined, CSysString &destString, LPCTSTR srsString) { defined = (srsString != 0); if (defined) destString = srsString; else destString.Empty(); }
LRESULT CComboBox::GetLBText(int index, CSysString &s) { s.Empty(); LRESULT len = GetLBTextLen(index); if (len == CB_ERR) return len; len = GetLBText(index, s.GetBuffer((int)len + 1)); s.ReleaseBuffer(); return len; }
LONG CKey::QueryValue(LPCTSTR name, CSysString &value) { value.Empty(); DWORD type = 0; UInt32 currentSize = 0; LONG res = RegQueryValueEx(_object, (LPTSTR)name, NULL, &type, NULL, (DWORD *)¤tSize); if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA) return res; res = QueryValue(name, value.GetBuffer(currentSize), currentSize); value.ReleaseBuffer(); return res; }
bool MyGetModuleFileName(HMODULE hModule, CSysString &result) { result.Empty(); TCHAR fullPath[MAX_PATH + 2]; DWORD size = ::GetModuleFileName(hModule, fullPath, MAX_PATH + 1); if (size <= MAX_PATH && size != 0) { result = fullPath; return true; } return false; }
bool MyGetDateFormat(LCID locale, DWORD flags, CONST SYSTEMTIME *time, LPCTSTR format, CSysString &resultString) { resultString.Empty(); int numChars = ::GetDateFormat(locale, flags, time, format, NULL, 0); if(numChars == 0) return false; numChars = ::GetDateFormat(locale, flags, time, format, resultString.GetBuffer(numChars), numChars + 1); resultString.ReleaseBuffer(); return (numChars != 0); }
bool CWindow::GetText(CSysString &s) { s.Empty(); int length = GetTextLength(); if (length == 0) return (::GetLastError() == ERROR_SUCCESS); length = GetText(s.GetBuffer(length), length + 1); s.ReleaseBuffer(); if (length == 0) return (::GetLastError() != ERROR_SUCCESS); return true; }
LRESULT CComboBox::GetLBText(int index, CSysString &s) { s.Empty(); LRESULT len = GetLBTextLen(index); // length, excluding the terminating null character if (len == CB_ERR) return len; LRESULT len2 = GetLBText(index, s.GetBuf((unsigned)len)); if (len2 == CB_ERR) return len; if (len > len2) len = len2; s.ReleaseBuf_CalcLen((unsigned)len); return len; }