// This is a part of the Microsoft Management Console. // Copyright 1995 - 1997 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Management Console and related // electronic documentation provided with the interfaces. #include "stdafx.h" #include "Service.h" #include "CSnapin.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif void CFolder::Create(LPWSTR szName, int nImage, int nOpenImage, FOLDER_TYPES type, BOOL bHasChildren) { ASSERT(m_pScopeItem == NULL); // Calling create twice on this item? // Two-stage construction m_pScopeItem = new SCOPEDATAITEM; memset(m_pScopeItem, 0, sizeof(SCOPEDATAITEM)); // Set folder type m_type = type; // Add node name if (szName != NULL) { m_pScopeItem->mask = SDI_STR; m_pScopeItem->displayname = (unsigned short*)(-1); UINT uiByteLen = (wcslen(szName) + 1) * sizeof(OLECHAR); LPOLESTR psz = (LPOLESTR)::CoTaskMemAlloc(uiByteLen); if (psz != NULL) { wcscpy(psz, szName); m_pszName = psz; } } // Add close image if (nImage != 0) { m_pScopeItem->mask |= SDI_IMAGE; m_pScopeItem->nImage = nImage; } // Add open image if (nOpenImage != 0) { m_pScopeItem->mask |= SDI_OPENIMAGE; m_pScopeItem->nOpenImage = nOpenImage; } // Add button to node if the folder has children m_pScopeItem->mask |= SDI_CHILDREN; m_pScopeItem->cChildren = (bHasChildren == TRUE) ? 1 : 0; }