//========================================================================== // // 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 datehour *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; }