util.cpp
上传用户:glass0516
上传日期:2010-01-11
资源大小:104k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. * RelayFax Open Source Project
  3. * Copyright 1996-2004 Alt-N Technologies, Ltd.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted only as authorized by the RelayFax Open 
  8. * Source License.  A copy of this license is available in file LICENSE 
  9. * in the top-level directory of the distribution.
  10. *
  11. * RelayFax is a registered trademark of Alt-N Technologies, Ltd.
  12. *
  13. * Individual files and/or contributed packages may be copyright by
  14. * other parties and subject to additional restrictions.
  15. *****************************************************************************/
  16. #include "stdafx.h"
  17. #include "util.h"
  18. extern HINSTANCE g_Instance;
  19. string LoadString( UINT uID )
  20. {
  21. char szBuffer[1024];
  22. string s;
  23. int nRet = ::LoadString( g_Instance, uID, szBuffer, sizeof(szBuffer) );
  24. nRet = GetLastError();
  25. s.assign( szBuffer );
  26. return s;
  27. }
  28. //
  29. //  FUNCTION: GetLastErrorText
  30. //
  31. //  PURPOSE: copies error message text to string
  32. //
  33. //  PARAMETERS:
  34. //    lpszBuf - destination buffer
  35. //    dwSize - size of buffer
  36. //
  37. //  RETURN VALUE:
  38. //    destination buffer
  39. //
  40. //  COMMENTS:
  41. //
  42. LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize )
  43. {
  44.     DWORD dwRet;
  45.     LPTSTR lpszTemp = NULL;
  46.     dwRet = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY,
  47.                            NULL,
  48.                            GetLastError(),
  49.                            LANG_NEUTRAL,
  50.                            (LPTSTR)&lpszTemp,
  51.                            0,
  52.                            NULL );
  53.     // supplied buffer is not long enough
  54.     if ( !dwRet || ( (long)dwSize < (long)dwRet+14 ) )
  55.         lpszBuf[0] = TEXT('');
  56.     else
  57.     {
  58.         lpszTemp[lstrlen(lpszTemp)-2] = TEXT('');  //remove cr and newline character
  59.         _stprintf( lpszBuf, TEXT("%s (0x%x)"), lpszTemp, GetLastError() );
  60.     }
  61.     if ( lpszTemp )
  62.         LocalFree((HLOCAL) lpszTemp );
  63.     return lpszBuf;
  64. }
  65. void trimws(char *str)
  66. {
  67. char *ptr = str + strlen(str) - 1;
  68. while (ptr >= str && (*ptr == ' ' || *ptr == 't' || *ptr == 'r' || *ptr == 'n'))
  69. *ptr-- = '';
  70. ptr = str;
  71. while (*ptr == ' ' || *ptr == 't' || *ptr == 'r' || *ptr == 'n')
  72. ptr++;
  73. if (ptr != str)
  74. strcpy(str, ptr);
  75. }