windows-nt/Source/XPSP1/NT/com/mobile/syncmgr/sample/helper.cpp
2020-09-26 16:20:57 +08:00

164 lines
3.9 KiB
C++

//==========================================================================
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright 1998 - 1999 Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------
// just some stuff to help out.
#include "precomp.h"
//+---------------------------------------------------------------------------
//
// Function: CalcListViewWidth, public
//
// Synopsis: Given a ListView determines width of client size
// subtracting off the scrollbar.
//
// Arguments:
//
// Returns:
//
// Modifies:
//
//----------------------------------------------------------------------------
int CalcListViewWidth(HWND hwndList,int iDefault)
{
NONCLIENTMETRICSA metrics;
RECT rcClientRect;
metrics.cbSize = sizeof(metrics);
// explicitly ask for ANSI version of SystemParametersInfo since we just
// care about the ScrollWidth and don't want to conver the LOGFONT info.
if (GetClientRect(hwndList,&rcClientRect)
&& SystemParametersInfoA(SPI_GETNONCLIENTMETRICS,sizeof(metrics),(PVOID) &metrics,0))
{
// subtract off scroll bar distance
rcClientRect.right -= (metrics.iScrollWidth);
}
else
{
rcClientRect.right = iDefault; // if fail, use default
}
return rcClientRect.right;
}
//+---------------------------------------------------------------------------
//
// Function: IsValidDir, public
//
// Synopsis: Determines pDirName is a valid fullpath to a directory.
//
// Arguments:
//
// Returns:
//
// Modifies:
//
//----------------------------------------------------------------------------
BOOL IsValidDir(TCHAR *pDirName)
{
BOOL fReturn = FALSE;
HANDLE hFind;
WIN32_FIND_DATA finddata;
hFind = FindFirstFile(pDirName, &finddata);
if (hFind != (HANDLE) -1)
{
fReturn = (finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? TRUE : FALSE;
FindClose(hFind);
}
return fReturn;
}
//+---------------------------------------------------------------------------
//
// Function: FormatDateTime, public
//
// Synopsis: Formats the filetime into a string.
//
// Arguments:
//
// Returns:
//
// Modifies:
//
//----------------------------------------------------------------------------
TCHAR *FormatDateTime(FILETIME *pft,TCHAR *pszDatetimeBuf,DWORD cbBufSize)
{
TCHAR * pDateTime = pszDatetimeBuf;
int cchWritten;
SYSTEMTIME sysTime;
FILETIME ftLocal;
FileTimeToLocalFileTime(pft,&ftLocal);
FileTimeToSystemTime(&ftLocal,&sysTime);
// insert date in form of date<space>hour
*pDateTime = NULL;
// want to insert the date
if (cchWritten = GetDateFormat(NULL,DATE_SHORTDATE,&sysTime,NULL,pDateTime,cbBufSize))
{
pDateTime += (cchWritten -1); // move number of characters written. (cchWritten includes the NULL)
*pDateTime = TEXT(' '); // pDateTime is now ponting at the NULL character.
++pDateTime;
// no try to get the hours if fails we make sure that the last char is NULL;
if (!GetTimeFormat(NULL,TIME_NOSECONDS,&sysTime,NULL,pDateTime,cbBufSize - cchWritten))
{
*pDateTime = NULL;
}
}
return pszDatetimeBuf;
}
//+---------------------------------------------------------------------------
//
// Function: lstrcpyX, public
//
// Synopsis: Implements WideChar strcpy so can use on Win9x
//
// Arguments:
//
// Returns:
//
// Modifies:
//
//----------------------------------------------------------------------------
LPWSTR lstrcpyX(
LPWSTR lpString1,
LPCWSTR lpString2
)
{
LPWSTR lpDest = lpString1;
Assert(lpString1);
Assert(lpString2);
while( *lpDest++ = *lpString2++ )
;
return lpString1;
}