This commit is contained in:
biosvos
2026-08-07 17:38:18 +09:00
commit 873193a243
9613 changed files with 2755992 additions and 0 deletions
@@ -0,0 +1,62 @@
// ShellString.cpp: implementation of the CShellString class.
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2000-2001 by Paolo Messina
// (http://www.geocities.com/ppescher - ppescher@yahoo.com)
//
// The contents of this file are subject to the Artistic License (the "License").
// You may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
// http://www.opensource.org/licenses/artistic-license.html
//
// If you find this code useful, credits would be nice!
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ShellString.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void CShellString::Destroy()
{
SMallocPtr pMalloc;
if (m_str.uType == STRRET_WSTR && m_str.pOleStr != NULL)
{
pMalloc->Free(m_str.pOleStr);
m_str.pOleStr = NULL;
}
ZeroMemory(&m_str, sizeof(STRRET));
}
STRRET* CShellString::GetPointer(LPCITEMIDLIST pidl, UINT uDesiredType)
{
// reset the object
Destroy();
// init object
m_pidl = pidl;
ASSERT(m_pidl.IsValid());
m_str.uType = uDesiredType;
return &m_str;
}
CShellString::operator CString() const
{
CString string;
switch (m_str.uType)
{
case STRRET_WSTR:
string = m_str.pOleStr;
break;
case STRRET_CSTR:
string = m_str.cStr;
break;
case STRRET_OFFSET:
string = ((LPBYTE)(LPCITEMIDLIST)m_pidl + m_str.uOffset);
}
return string;
}