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

Windows编程

开发平台:

Visual C++

  1. //=--------------------------------------------------------------------------=
  2. // Card.Cpp
  3. //=--------------------------------------------------------------------------=
  4. // Copyright 1995 - 1997 Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // various routines et all that aren't in a file for a particular automation
  13. // object, and don't need to be in the generic ole automation code.
  14. //
  15. #define INITOBJECTS                // define the descriptions for our objects
  16. #include "IPServer.H"
  17. #include "LocalSrv.H"
  18. #include "LocalObj.H"
  19. #include "CtrlObj.H"
  20. #include "Globals.H"
  21. #include "Util.H"
  22. #include "Resource.H"
  23. #include "CardCtl.H"
  24. #include "CardPPG.H"
  25. #include "cathelp.H"
  26. #include "carddraw.h"
  27. // Control Globals
  28. //
  29. CRITICAL_SECTION drawCritSec;
  30. HBITMAP cardcacheMem[14*4+14]; // 4 suites * 14 cards + 14 card backs
  31. const IID IID_ICatRegister = {0x0002E012,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};
  32. const CATID CATID_SafeForScripting = {0x7dd95801,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
  33. const CATID CATID_SafeForInitializing = {0x7dd95802,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
  34. // needed for ASSERTs and FAIL
  35. //
  36. SZTHISFILE
  37. //=--------------------------------------------------------------------------=
  38. // our Libid.  This should be the LIBID from the Type library, or NULL if you
  39. // don't have one.
  40. //
  41. const CLSID *g_pLibid = &LIBID_CardObjects;
  42. //=--------------------------------------------------------------------------=
  43. // Localization Information
  44. //
  45. // We need the following two pieces of information:
  46. //    a. whether or not this DLL uses satellite DLLs for localization.  if
  47. //       not, then the lcidLocale is ignored, and we just always get resources
  48. //       from the server module file.
  49. //    b. the ambient LocaleID for this in-proc server.  Controls calling
  50. //       GetResourceHandle() will set this up automatically, but anybody
  51. //       else will need to be sure that it's set up properly.
  52. //
  53. const VARIANT_BOOL    g_fSatelliteLocalization =  FALSE;
  54. LCID            g_lcidLocale = MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT);
  55. //=--------------------------------------------------------------------------=
  56. // your license key and where under HKEY_CLASSES_ROOT_LICENSES it's sitting
  57. //
  58. const WCHAR g_wszLicenseKey [] = L"";
  59. const WCHAR g_wszLicenseLocation [] = L"";
  60. WNDPROC g_ParkingWindowProc = NULL;
  61. //=--------------------------------------------------------------------------=
  62. // This Table describes all the automatible objects in your automation server.
  63. // See AutomationObject.H for a description of what goes in this structure
  64. // and what it's used for.
  65. //
  66. OBJECTINFO g_ObjectInfo[] = {
  67.     CONTROLOBJECT(Card),
  68.     PROPERTYPAGE(CardGeneral),
  69.     EMPTYOBJECT
  70. };
  71. const char g_szLibName[] = "ActiveXSDKCard";
  72. //=--------------------------------------------------------------------------=
  73. // IntializeLibrary
  74. //=--------------------------------------------------------------------------=
  75. // called from DllMain:DLL_PROCESS_ATTACH.  allows the user to do any sort of
  76. // initialization they want to.
  77. //
  78. // Notes:
  79. //
  80. void WINAPI InitializeLibrary (void )
  81. {
  82. InitializeCriticalSection( &drawCritSec );
  83. }
  84. //=--------------------------------------------------------------------------=
  85. // UninitializeLibrary
  86. //=--------------------------------------------------------------------------=
  87. // called from DllMain:DLL_PROCESS_DETACH.  allows the user to clean up anything
  88. // they want.
  89. //
  90. // Notes:
  91. //
  92. void WINAPI UninitializeLibrary
  93. (
  94.     void
  95. )
  96. {
  97. DeleteCriticalSection( &drawCritSec );
  98. for( int t = 0; t < sizeof(cardcacheMem)/sizeof(cardcacheMem[0]); t++ )
  99. if( cardcacheMem[t] )
  100. DeleteObject( cardcacheMem[t] );
  101. }
  102. //=--------------------------------------------------------------------------=
  103. // CheckForLicense
  104. //=--------------------------------------------------------------------------=
  105. // users can implement this if they wish to support Licensing.  otherwise,
  106. // they can just return TRUE all the time.
  107. //
  108. // Parameters:
  109. //    none
  110. //
  111. // Output:
  112. //    BOOL            - TRUE means the license exists, and we can proceed
  113. //                      FALSE means we're not licensed and cannot proceed
  114. //
  115. // Notes:
  116. //    - implementers should use g_wszLicenseKey and g_wszLicenseLocation
  117. //      from the top of this file to define their licensing [the former
  118. //      is necessary, the latter is recommended]
  119. //
  120. BOOL WINAPI CheckForLicense
  121. (
  122.     void
  123. )
  124. {
  125.     // TODO: decide whether or not your server is licensed in this function.
  126.     // people who don't want to bother with licensing should just return
  127.     // true here always.  g_wszLicenseKey and g_wszLicenseLocation are
  128.     // used by IClassFactory2 to do some of the licensing work.
  129.     //
  130.     return TRUE;
  131. }
  132. //=--------------------------------------------------------------------------=
  133. // RegisterData
  134. //=--------------------------------------------------------------------------=
  135. // lets the inproc server writer register any data in addition to that in
  136. // any other objects.
  137. //
  138. // Output:
  139. //    BOOL            - false means failure.
  140. //
  141. // Notes:
  142. //
  143. BOOL WINAPI RegisterData
  144. (
  145.     void
  146. )
  147. {
  148. HRESULT hr;
  149. hr = CreateComponentCategory(CATID_SafeForScripting, L"Controls that are safely scriptable");
  150. hr = CreateComponentCategory(CATID_SafeForInitializing, L"Controls safely initializable from persistent data");
  151. hr = RegisterCLSIDInCategory(CLSID_Card, CATID_SafeForScripting);
  152. hr = RegisterCLSIDInCategory(CLSID_Card, CATID_SafeForInitializing);
  153.     return TRUE;
  154. }
  155. //=--------------------------------------------------------------------------=
  156. // UnregisterData
  157. //=--------------------------------------------------------------------------=
  158. // inproc server writers should unregister anything they registered in
  159. // RegisterData() here.
  160. //
  161. // Output:
  162. //    BOOL            - false means failure.
  163. //
  164. // Notes:
  165. //
  166. BOOL WINAPI UnregisterData
  167. (
  168.     void
  169. )
  170. {
  171. HRESULT hr;
  172. hr = UnRegisterCLSIDInCategory(CLSID_Card, CATID_SafeForScripting);
  173. hr = UnRegisterCLSIDInCategory(CLSID_Card, CATID_SafeForInitializing);
  174.     return TRUE;
  175. }
  176. BOOL WINAPI      CheckLicenseKey(LPWSTR wszCheckme)
  177. {
  178. return TRUE;
  179. }
  180. BSTR WINAPI      GetLicenseKey(void)
  181. {
  182. return NULL;
  183. }