OSRelate.cpp
上传用户:hbzxgg2
上传日期:2009-03-28
资源大小:291k
文件大小:2k
源码类别:

Windows Mobile

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "OSRelate.h"
  3. TCHAR* hwFormatMessage ( DWORD dwErrorCode )
  4. {
  5. static TCHAR szError[256] = {0};
  6.     FormatMessage (
  7. FORMAT_MESSAGE_FROM_SYSTEM,
  8. NULL,
  9. dwErrorCode,
  10. MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
  11. szError,
  12. LENGTH(szError),
  13. NULL);
  14. return szError;
  15. }
  16. //
  17. // 等待线程退出
  18. //
  19. BOOL WaitForThreadEnd ( HANDLE *phThread, DWORD dwWaitTime /*=5000*/ )
  20. {
  21. BOOL bRet = TRUE;
  22. ASSERT ( phThread );
  23. if ( !(*phThread) ) return TRUE;
  24. if ( ::WaitForSingleObject ( *phThread, dwWaitTime ) == WAIT_TIMEOUT )
  25. {
  26. bRet = FALSE;
  27. ::TerminateThread ( *phThread, 0 );
  28. }
  29. ::CloseHandle ( *phThread );
  30. (*phThread) = NULL;
  31. return bRet;
  32. }
  33. /********************************************************************************
  34. * Function Type : Global
  35. * Parameter : lpProgram - 存放当前执行程序所在的路径字符串的缓冲
  36. * dwSize - 缓冲大小
  37. * Return Value : 字符个数
  38. * Description : 得到当前执行程序所在的路径
  39. *********************************************************************************/
  40. int GetProgramDir(LPTSTR lpProgram,DWORD dwSize)
  41. {
  42. ASSERT ( lpProgram );
  43. ZeroMemory(lpProgram,dwSize);
  44. GetModuleFileName(AfxGetInstanceHandle(),(LPTSTR)lpProgram,dwSize);
  45. LPTSTR p = (LPTSTR)strrchr_s((LPCTSTR)lpProgram, _T('\'));
  46. if(!p) return 0;
  47. p[1] = _T('');
  48. int nLength = (int)(p - lpProgram)/sizeof(TCHAR);
  49. TCHAR szAppDir[MAX_PATH] = {0};
  50. strncpy_s ( szAppDir, AfxGetApp()->m_pszProfileName, MAX_PATH );
  51. p = (LPTSTR)strrchr_s((LPCTSTR)szAppDir, _T('\'));
  52. if(!p) return nLength;
  53. p[1] = _T('');
  54. int nLength1 = (int)(p - szAppDir)/sizeof(TCHAR);
  55. if ( stricmp_s ( szAppDir, lpProgram ) != 0 )
  56. {
  57. CString csMsg;
  58. csMsg.Format ( _T("Get program directory maybe error occurred.rn%srn%s"),
  59. lpProgram, szAppDir );
  60. strncpy_s ( lpProgram, szAppDir, dwSize );
  61. AfxMessageBox ( csMsg );
  62. return nLength1;
  63. }
  64. return nLength;
  65. }
  66. CString GetProgramDir()
  67. {
  68. TCHAR szProgram[MAX_PATH] = {0};
  69. GetProgramDir ( szProgram, sizeof(szProgram) );
  70. return szProgram;
  71. }