utility.cpp
上传用户:kittypts
上传日期:2018-02-11
资源大小:241k
文件大小:2k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. Windows Live Messenger Plugin Demo
  3. Copyright (C) 2008  Hern醤 Di Pietro
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program.  If not, see <http://www.gnu.org/licenses/>.
  14. /*****************************************************************************/
  15. #include "utility.h"
  16. void StringFromGUID(const GUID guid, WCHAR* wszBuffer)
  17. {
  18. #ifdef _DEBUG
  19. _ASSERTE(wszBuffer);
  20. swprintf_s(wszBuffer, MAXSTRL, L"%x%x%x%x%x%x%x%x%x%x%x", guid.Data1, guid.Data2, 
  21. guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], 
  22. guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
  23. #endif
  24. }
  25. void _OutputDebugString(LPWSTR lpOutputString, ... )
  26. {    
  27. #ifdef _DEBUG
  28. va_list argptr;        
  29. va_start( argptr, lpOutputString );            
  30. WCHAR OutMsg[MAXSTRL];
  31. WCHAR format[MAXSTRL];
  32. for(int i=0,j=0;lpOutputString[i] != '';i++) 
  33. {
  34. format[j++] = lpOutputString[i];
  35. // If escape character
  36. if(lpOutputString[i] == '\')
  37. {
  38. i++;
  39. continue;
  40. }
  41. // if not a substitutal character
  42. if(lpOutputString[i] != '%')
  43. continue;
  44. format[j++] = lpOutputString[++i];
  45. format[j] = '';
  46. switch(lpOutputString[i])
  47. {
  48. // string
  49. case 's':
  50. {
  51. char* s = va_arg( argptr, char * );
  52. swprintf(OutMsg, MAXSTRL,format,s);
  53. wcscpy_s(format,OutMsg);
  54. j = wcslen(format);
  55. wcscat_s(format, L" ");
  56. break;
  57. }
  58. // character
  59. case 'c':
  60. {
  61. char c = (char) va_arg( argptr, int );
  62. swprintf(OutMsg, MAXSTRL, format,c);
  63. wcscpy_s(format,OutMsg);
  64. j = wcslen(format);
  65. wcscat_s(format, L" ");
  66. break;
  67. }
  68. // integer
  69. case 'd':
  70. {
  71. int d = va_arg( argptr, int );
  72. swprintf(OutMsg, MAXSTRL, format,d);
  73. wcscpy_s(format,OutMsg);
  74. j = wcslen(format);
  75. wcscat_s(format, L" ");
  76. break;
  77. }
  78. }
  79. }           
  80. OutputDebugString(OutMsg);
  81. va_end( argptr );
  82. #endif
  83. }