base
This commit is contained in:
+62
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user