EMP.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // Emp.h : main header file for the EMP application
  2. //
  3. #include <objbase.h>
  4. #include <afxdisp.h>
  5. #include <tchar.h> // Unicode
  6. #include <adoid.h> // ADO C++ header  
  7. #include <adoint.h> // ADO C++ header
  8. #ifndef __AFXWIN_H__
  9. #error include 'stdafx.h' before including this file for PCH
  10. #endif
  11. #include "resource.h" // main symbols
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CEmpApp:
  14. // See Emp.cpp for the implementation of this class
  15. //
  16. class CEmpApp : public CWinApp
  17. {
  18. public:
  19. CEmpApp();
  20. // Overrides
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CEmpApp)
  23. public:
  24. virtual BOOL InitInstance();
  25. //}}AFX_VIRTUAL
  26. // Implementation
  27. //{{AFX_MSG(CEmpApp)
  28. // NOTE - the ClassWizard will add and remove member functions here.
  29. //    DO NOT EDIT what you see in these blocks of generated code !
  30. //}}AFX_MSG
  31. DECLARE_MESSAGE_MAP()
  32. };
  33. /////////////////////////////////////////////////////////////////////////////
  34. /////////////////////////////////////////////////////////////////////////////
  35. // Conversion macros/inline functions - Variant 
  36.   
  37. inline CString VTOCSTR(VARIANT *v)
  38. {
  39. if(v->vt==VT_BSTR)
  40. {
  41. CString str((LPCWSTR)v->bstrVal);
  42. return str;
  43. }
  44. else
  45. {
  46. return CString("");
  47. }
  48. }
  49. #define VTOLONG(v) ((v).vt==VT_I4 ? (LONG)(v).lVal:0L)
  50. #define VTODATE(v) ((v).vt==VT_DATE ? (CTime)(v).iVal:0L)
  51. class CVar : public VARIANT
  52. {
  53. public:
  54. CVar()
  55. {
  56. VariantInit(this);
  57. }
  58. CVar(VARTYPE vt, SCODE scode = 0)
  59. {
  60. VariantInit(this);
  61. this->vt = vt;
  62. this->scode = scode;
  63. }
  64. CVar(VARIANT var)
  65. {
  66. *this = var;
  67. }
  68. ~CVar()
  69. {
  70. VariantClear(this);
  71. }
  72. // ASSIGNMENT OPS.
  73. CVar & operator=(PCWSTR pcwstr)
  74. {
  75. VariantClear(this);
  76. if (NULL == (this->bstrVal = SysAllocStringLen(pcwstr, wcslen(pcwstr))))
  77. throw E_OUTOFMEMORY;
  78. this->vt = VT_BSTR;
  79. return *this;
  80. }
  81. CVar & operator=(VARIANT var)
  82. {
  83. HRESULT hr;
  84. VariantClear(this);
  85. if (FAILED(hr = VariantCopy(this, &var)))
  86. throw hr;
  87. return *this;
  88. }
  89. // CAST OPS.
  90. // doesn't change type. only returns BSTR if variant is of type
  91. // bstr. asserts otherwise.
  92. operator BSTR() const
  93. {
  94. if(VT_BSTR == this->vt)
  95. return this->bstrVal;
  96. else
  97. return NULL;
  98. }
  99. HRESULT Clear()
  100. {
  101. return VariantClear(this);
  102. }
  103. };