home *** CD-ROM | disk | FTP | other *** search
/ PC go! 2008 April / PCgo 2008-04 (DVD).iso / interface / contents / demoversionen_3846 / 13664 / files / Data1.cab / tool.cpp < prev    next >
Encoding:
Text File  |  2001-07-16  |  5.9 KB  |  247 lines

  1. STDMETHODIMP C$$COM_Class_Name$$::get_ClassID(BSTR  *bstrClassID)    
  2. {
  3.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  4.  
  5.     HRESULT        hRes    = E_FAIL;
  6.     LPOLESTR    olestr    = NULL;
  7.  
  8.     try
  9.     {
  10.         hRes = ::StringFromCLSID(CLSID_$$COM_Class_Name$$, &olestr);
  11.         CHECK_HRESULT(hRes);
  12.  
  13.         *bstrClassID = ::SysAllocString(olestr);
  14.     }
  15.     catch (...)
  16.     {
  17.         TRACE("C$$COM_Class_Name$$::get_ClassID");
  18.     }
  19.     if (olestr) CoTaskMemFree (olestr);
  20.  
  21.     return hRes;
  22. }
  23.  
  24.         
  25. STDMETHODIMP C$$COM_Class_Name$$::get_Description(BSTR  *bstrDescription)
  26. {
  27.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  28.  
  29.     CString strDescription;
  30.  
  31.     strDescription.LoadString(IDS_DESCRIPTION);
  32.     *bstrDescription = strDescription.AllocSysString();
  33.     return S_OK;
  34. }
  35.  
  36. void MySafeArrayAccessData(SAFEARRAY *destArray, void** srcArray, bool* boolResult)
  37. {
  38.     *boolResult = false;
  39.     if (SUCCEEDED(SafeArrayAccessData(destArray, srcArray))) 
  40.         *boolResult = true;
  41.     else
  42.         throw;
  43. }
  44.  
  45. BSTR MakeBSTR(long lIdOfResourceString)
  46. {
  47.     CString cStr;
  48.     cStr.LoadString(lIdOfResourceString);
  49.     return cStr.AllocSysString();
  50. }
  51.  
  52. STDMETHODIMP C$$COM_Class_Name$$::GetToolInfo(VARIANT *CommandNames, VARIANT *MenuCaptions, VARIANT *StatusPrompts, VARIANT *ToolTips, VARIANT  *Enabled, VARIANT  *WantsUpdates, long  *lToolsCount)
  53. {
  54.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  55.  
  56.     ASSERT(CommandNames->vt        == (VT_ARRAY | VT_BSTR));
  57.     ASSERT(MenuCaptions->vt        == (VT_ARRAY | VT_BSTR));
  58.     ASSERT(StatusPrompts->vt    == (VT_ARRAY | VT_BSTR));
  59.     ASSERT(ToolTips->vt            == (VT_ARRAY | VT_BSTR));
  60.     ASSERT(Enabled->vt            == (VT_ARRAY | VT_BOOL));
  61.     ASSERT(WantsUpdates->vt        == (VT_ARRAY | VT_BOOL));
  62.  
  63.     *lToolsCount = $$ToolsCount$$;
  64.  
  65.     HRESULT            hRes            = S_OK;
  66.     BSTR            *bstrNames        = NULL;
  67.     BSTR            *bstrCaptions    = NULL;
  68.     BSTR            *bstrPrompts    = NULL;
  69.     BSTR            *bstrTips        = NULL;
  70.     VARIANT_BOOL    *boolEnabled    = NULL;
  71.     VARIANT_BOOL    *boolWants        = NULL;
  72.  
  73.     bool        boolNamesAccess;
  74.     bool        boolCaptionsAccess;
  75.     bool        boolProptmsAccess;
  76.     bool        boolToolTipsAccess;
  77.     bool        boolEnabledAccess;
  78.     bool        boolWantsUpdatesAccess;
  79.  
  80.     SAFEARRAYBOUND bound[2] = 
  81.     {
  82.         { *lToolsCount, 0 },
  83.         { 2,            0 }
  84.     };
  85.  
  86.     if (FAILED(::SafeArrayRedim(CommandNames->parray,    bound)))    return E_FAIL;
  87.     if (FAILED(::SafeArrayRedim(StatusPrompts->parray,    bound)))    return E_FAIL;
  88.     if (FAILED(::SafeArrayRedim(ToolTips->parray,        bound)))    return E_FAIL;
  89.     if (FAILED(::SafeArrayRedim(Enabled->parray,        bound)))    return E_FAIL;
  90.     if (FAILED(::SafeArrayRedim(WantsUpdates->parray,    bound)))    return E_FAIL;
  91.  
  92.     if (FAILED(::SafeArrayDestroy(MenuCaptions->parray))) return E_FAIL;
  93.     MenuCaptions->parray = ::SafeArrayCreate(VT_BSTR, 2, bound);
  94.     
  95.     try
  96.     {
  97.         MySafeArrayAccessData(CommandNames->parray,    (void**)&bstrNames,        &boolNamesAccess);
  98.         MySafeArrayAccessData(MenuCaptions->parray,    (void**)&bstrCaptions,    &boolCaptionsAccess);
  99.         MySafeArrayAccessData(StatusPrompts->parray,(void**)&bstrPrompts,    &boolProptmsAccess);
  100.         MySafeArrayAccessData(ToolTips->parray,        (void**)&bstrTips,        &boolToolTipsAccess);
  101.         MySafeArrayAccessData(Enabled->parray,        (void**)&boolEnabled,    &boolEnabledAccess);
  102.         MySafeArrayAccessData(WantsUpdates->parray,    (void**)&boolWants,        &boolWantsUpdatesAccess);
  103.         
  104.         long    lTmpIndex = 0;
  105.         
  106. $$GeneratedToolsInfo$$
  107.         ASSERT(lTmpIndex == (*lToolsCount));
  108.     }
  109.     catch (...)        
  110.     {
  111.         TRACE("C$$COM_Class_Name$$::GetPropertyInfo");
  112.         hRes = E_FAIL;
  113.     };
  114.  
  115.     if (boolNamesAccess)        ::SafeArrayUnaccessData(CommandNames->parray);
  116.     if (boolCaptionsAccess)        ::SafeArrayUnaccessData(MenuCaptions->parray);
  117.     if (boolProptmsAccess)        ::SafeArrayUnaccessData(StatusPrompts->parray);
  118.     if (boolToolTipsAccess)        ::SafeArrayUnaccessData(ToolTips->parray);
  119.     if (boolEnabledAccess)        ::SafeArrayUnaccessData(Enabled->parray);
  120.     if (boolWantsUpdatesAccess)    ::SafeArrayUnaccessData(WantsUpdates->parray);
  121.  
  122.     return hRes;
  123. }
  124.  
  125. STDMETHODIMP C$$COM_Class_Name$$::CopyBitmap(VARIANT_BOOL LargeButtons, VARIANT_BOOL Monochrome, VARIANT_BOOL  *ret)
  126. {
  127.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  128.  
  129.     HRESULT        hRes    = S_OK;
  130.  
  131.     try
  132.     {
  133.  
  134.     }
  135.     catch (...)
  136.     {
  137.         TRACE("C$$COM_Class_Name$$::CopyBitmap");
  138.     }
  139.  
  140.     return hRes;
  141. }
  142.  
  143. STDMETHODIMP C$$COM_Class_Name$$::GetPicture(VARIANT_BOOL LargeButtons, VARIANT_BOOL Monochrome, IDispatch  * *ret)
  144. {
  145.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  146.  
  147.     HRESULT        hRes        = S_OK;
  148.     LPTSTR        lptstrIDB    = NULL;
  149.     HBITMAP        pBmp        = NULL;
  150.     PICTDESC    pict;        
  151.  
  152.     try
  153.     {
  154.         lptstrIDB = MAKEINTRESOURCE(IDB_TOOLICON);
  155.         
  156.         pBmp = ::LoadBitmap(AfxGetResourceHandle(), lptstrIDB);
  157.         
  158.         pict.cbSizeofstruct = sizeof(pict);
  159.         pict.picType        = PICTYPE_BITMAP;
  160.         pict.bmp.hbitmap    = pBmp;
  161.         pict.bmp.hpal        = NULL;
  162.  
  163.         hRes = OleCreatePictureIndirect(&pict, IID_IDispatch, TRUE, (void**)ret);
  164.         CHECK_HRESULT(hRes)
  165.     }
  166.     catch (...)
  167.     {
  168.         TRACE("C$$COM_Class_Name$$::GetPicture");
  169.     }
  170.  
  171.     return hRes;
  172. }
  173.  
  174. STDMETHODIMP C$$COM_Class_Name$$::Run(IDispatch *ThisTool, VARIANT_BOOL *ret)
  175. {
  176.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  177.  
  178.     HRESULT        hRes    = S_OK;
  179.  
  180.     try
  181.     {
  182.         *ret = true;
  183.     }
  184.     catch (...)
  185.     {
  186.         TRACE("C$$COM_Class_Name$$::Run");
  187.     }
  188.  
  189.     return hRes;
  190. }
  191.  
  192. STDMETHODIMP C$$COM_Class_Name$$::UpdateToolStatus(IDispatch  *ThisTool, VARIANT_BOOL *Enabled, VARIANT_BOOL *Checked, VARIANT_BOOL *ret)
  193. {
  194.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  195.  
  196.     HRESULT        hRes    = S_OK;
  197.  
  198.     try
  199.     {
  200.         *ret = true;
  201.     }
  202.     catch (...)
  203.     {
  204.         TRACE("C$$COM_Class_Name$$::UpdateToolStatus");
  205.     }
  206.  
  207.     return hRes;
  208. }
  209.  
  210. STDMETHODIMP C$$COM_Class_Name$$::Initialize(IDispatch  *ThisTool, VARIANT_BOOL  *ret)
  211. {
  212.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  213.  
  214.     HRESULT            hRes        = S_OK;
  215.  
  216.     try
  217.     {
  218.         *ret = true;
  219.     }
  220.     catch (...)
  221.     {
  222.         TRACE("C$$COM_Class_Name$$::Initialize");
  223.     }
  224.  
  225.     return hRes;
  226. }
  227.  
  228. STDMETHODIMP C$$COM_Class_Name$$::Terminate(IDispatch  *ThisTool)
  229. {
  230.     AFX_MANAGE_STATE(AfxGetStaticModuleState())
  231.  
  232.     HRESULT            hRes    = S_OK;
  233.  
  234.     try
  235.     {
  236.  
  237.     }
  238.     catch (...)
  239.     {
  240.         TRACE("C$$COM_Class_Name$$::Terminate");
  241.     }
  242.  
  243.     return hRes;
  244. }
  245.  
  246.  
  247.