home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / L_ocx.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-30  |  191.7 KB  |  8,609 lines

  1. // CLead control implementation
  2. // Note:    If you have problems with the precompiled headers, disable 
  3. //          the precompiled headers option for this file  or for the whole project
  4. #define IS_MFC40    (_MSC_VER >= 1000)
  5.  
  6. #include <afxwin.h>         // MFC core and standard components
  7. #include <afxext.h>         // MFC extensions
  8. #include <afxole.h>
  9.  
  10. #include <stdarg.h>
  11. #include <afxpriv.h>
  12. #include <initguid.h>
  13. #define INITGUID
  14. #include <olectlid.h>
  15.  
  16. #include "l_ocx.h"
  17.  
  18. #ifdef _DEBUG
  19. #undef THIS_FILE
  20. static char BASED_CODE THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23.  
  24. IMPLEMENT_DYNCREATE(CLead, CWnd)
  25. IMPLEMENT_DYNAMIC(CLeadContainer, CCmdTarget)
  26.  
  27. const CLSID CDECL BASED_CODE CLead::guid = \
  28.    { 0x00100000, 0xb1ba, 0x11ce, { 0xab, 0xc6, 0xf5, 0xb2, 0xe7, 0x9d, 0x9e, 0x3f } } ;
  29.  
  30.  
  31. #if IS_MFC40
  32. static const WCHAR BASED_CODE _szLicString[] =
  33.     L"LEADTOOLS OCX Copyright (c) 1998 LEAD Technologies, Inc.";
  34.  
  35. static const FONTDESC NEAR _fdDefault =
  36.    { sizeof(FONTDESC), L"MS Sans Serif", FONTSIZE(12), FW_NORMAL,
  37.      DEFAULT_CHARSET, FALSE, FALSE, FALSE };
  38.  
  39. #else
  40. /*
  41.     This is for 16 or 32-bit code compiled with Visual C++ 1.x or 2.0
  42. */
  43. static const TCHAR BASED_CODE _szLicString[] =
  44.    _T("LEADTOOLS OCX Copyright (c) 1998 LEAD Technologies, Inc.");
  45.  
  46. static const FONTDESC NEAR _fdDefault =
  47.    { sizeof(FONTDESC), _T("MS Sans Serif"), FONTSIZE(12), FW_NORMAL,
  48.      DEFAULT_CHARSET, FALSE, FALSE, FALSE };
  49. #endif
  50.  
  51.  
  52. BEGIN_MESSAGE_MAP(CLead, CWnd)
  53.    //{{AFX_MSG_MAP(CLead)
  54.    ON_WM_PAINT()
  55.    ON_WM_DESTROY()
  56.    //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58.  
  59. // static routines and defines
  60. static long LongMulDiv(long numer, long denom);
  61. static int XformWidthInPixelsToHimetric(HDC hDC, int iWidthInPix);
  62. static int XformWidthInHimetricToPixels(HDC hDC, int iWidthInHiMetric);
  63. static int XformHeightInPixelsToHimetric(HDC hDC, int iHeightInPix);
  64. static int XformHeightInHimetricToPixels(HDC hDC, int iHeightInHiMetric);
  65. static void XformSizeInPixelsToHimetric(
  66.    HDC hDC, LPSIZEL lpSizeInPix, LPSIZEL lpSizeInHiMetric);
  67. static void XformSizeInHimetricToPixels(
  68.    HDC hDC, LPSIZEL lpSizeInHiMetric, LPSIZEL lpSizeInPix);
  69. static void XformRectInPixelsToHimetric(
  70.    HDC hDC, LPRECT lprcPix, LPRECT lprcHiMetric);
  71. static int SetDCToDrawInHimetricRect(HDC hDC, LPRECT lprcPix,
  72.    LPRECT lprcHiMetric, LPRECT lprcWindowOld, LPRECT lprcViewportOld);
  73. #define HIMETRIC_PER_INCH   2540
  74. #define MAP_PIX_TO_LOGHIM(x,ppli)   MulDiv(HIMETRIC_PER_INCH, (x), (ppli))
  75. #define MAP_LOGHIM_TO_PIX(x,ppli)   MulDiv((ppli), (x), HIMETRIC_PER_INCH)
  76.  
  77. #undef RELEASE
  78. #define RELEASE(p)  if ((p) != NULL) { (p)->Release(); (p) = NULL; };
  79.  
  80. static HRESULT InterfaceConnect(LPUNKNOWN pObj, REFIID riid, LPUNKNOWN pIUnknownSink, LPDWORD pdwConn);
  81. static HRESULT InterfaceDisconnect(LPUNKNOWN pObj, REFIID riid, LPDWORD pdwConn);
  82. static HRESULT ObjectTypeInfo(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
  83. static HRESULT ObjectTypeInfoEvents(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
  84. static HRESULT ObjectEventsIID(LPUNKNOWN pObj, IID *piid);
  85.  
  86. CLead::CLead()
  87. {
  88.  
  89.    m_pIObject = NULL;
  90.    m_pIOleInPlaceObject = NULL;
  91.    m_pIOleInPlaceActiveObject = NULL;
  92.    m_pIPersistStreamInit = NULL;
  93.    m_pIViewObject2 = NULL;
  94.    m_pEventsRedirDispatch = NULL;
  95.    m_pIDispatchControl = NULL;
  96.    m_pIOleControl = NULL;
  97.    m_pAmbientsDispatch = NULL;
  98.    m_pLeadContainer = NULL;
  99.    
  100.    m_hWndParent = NULL;
  101.  
  102.    m_dwStatus = 0;   
  103.    m_dwConnection = 0;
  104.    m_dwEventConnProp = 0;
  105.    m_scLast = S_OK;
  106.    m_nState = emptyState;
  107.    m_bInClose = FALSE;
  108.    m_uLockInPlace = 0;
  109.    m_cntrlInfo.cb = sizeof(CONTROLINFO);
  110.    m_cntrlInfo.hAccel = NULL;
  111.    m_bDisplayAsDefault = FALSE;
  112.    m_bPendingDeactivate = FALSE;
  113.  
  114.    AfxOleLockApp();
  115. }
  116.  
  117. CLead::~CLead()
  118. {
  119.  
  120.    Release();
  121.  
  122.    ExternalDisconnect();
  123.    AfxOleUnlockApp();
  124. }
  125.  
  126. VARIANT CLead::ReadComment(LPCTSTR pszFile, short iPage, short iIndex)
  127. {
  128.    VARIANT result;
  129.    static BYTE parms[] =
  130.       VTS_BSTR VTS_I2 VTS_I2;
  131.    InvokeHelper(dispidReadComment, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms,
  132.       pszFile, iPage, iIndex);
  133.    return result;
  134. }
  135.  
  136. REFCLSID CLead::GetClassID() const
  137. {
  138.    return guid;
  139. }
  140.  
  141. short CLead::GetLoadInfoBits()
  142. {
  143.    short result;
  144.    GetProperty(dispidLoadInfoBits, VT_I2, (void*)&result);
  145.    return result;
  146. }
  147.  
  148. void CLead::SetLoadInfoBits(short propval)
  149. {
  150.    SetProperty(dispidLoadInfoBits, VT_I2, propval);
  151. }
  152.  
  153. float CLead::GetLoadInfoWidth()
  154. {
  155.    float result;
  156.    GetProperty(dispidLoadInfoWidth, VT_R4, (void*)&result);
  157.    return result;
  158. }
  159.  
  160. void CLead::SetLoadInfoWidth(float propval)
  161. {
  162.    SetProperty(dispidLoadInfoWidth, VT_R4, propval);
  163. }
  164.  
  165. float CLead::GetLoadInfoHeight()
  166. {
  167.    float result;
  168.    GetProperty(dispidLoadInfoHeight, VT_R4, (void*)&result);
  169.    return result;
  170. }
  171.  
  172. void CLead::SetLoadInfoHeight(float propval)
  173. {
  174.    SetProperty(dispidLoadInfoHeight, VT_R4, propval);
  175. }
  176.  
  177. short CLead::GetLoadInfoFormat()
  178. {
  179.    short result;
  180.    GetProperty(dispidLoadInfoFormat, VT_I2, (void*)&result);
  181.    return result;
  182. }
  183.  
  184. void CLead::SetLoadInfoFormat(short propval)
  185. {
  186.    SetProperty(dispidLoadInfoFormat, VT_I2, propval);
  187. }
  188.  
  189. short CLead::GetLoadInfoXRes()
  190. {
  191.    short result;
  192.    GetProperty(dispidLoadInfoXRes, VT_I2, (void*)&result);
  193.    return result;
  194. }
  195.  
  196. void CLead::SetLoadInfoXRes(short propval)
  197. {
  198.    SetProperty(dispidLoadInfoXRes, VT_I2, propval);
  199. }
  200.  
  201. short CLead::GetLoadInfoYRes()
  202. {
  203.    short result;
  204.    GetProperty(dispidLoadInfoYRes, VT_I2, (void*)&result);
  205.    return result;
  206. }
  207.  
  208. void CLead::SetLoadInfoYRes(short propval)
  209. {
  210.    SetProperty(dispidLoadInfoYRes, VT_I2, propval);
  211. }
  212.  
  213. long CLead::GetLoadInfoFlags()
  214. {
  215.    long result;
  216.    GetProperty(dispidLoadInfoFlags, VT_I4, (void*)&result);
  217.    return result;
  218. }
  219.  
  220. void CLead::SetLoadInfoFlags(long propval)
  221. {
  222.    SetProperty(dispidLoadInfoFlags, VT_I4, propval);
  223. }
  224.  
  225. long CLead::GetLoadInfoOffset()
  226. {
  227.    long result;
  228.    GetProperty(dispidLoadInfoOffset, VT_I4, (void*)&result);
  229.    return result;
  230. }
  231.  
  232. void CLead::SetLoadInfoOffset(long propval)
  233. {
  234.    SetProperty(dispidLoadInfoOffset, VT_I4, propval);
  235. }
  236.  
  237. long CLead::GetReadyState()
  238. {
  239.    long result;
  240.    GetProperty(dispidReadyState, VT_I4, (void*)&result);
  241.    return result;
  242. }   
  243. void CLead::SetReadyState(long propval)
  244. {
  245.    SetProperty(dispidReadyState, VT_I4, propval);
  246. }
  247.  
  248. short CLead::GetAppearance()
  249. {
  250.    short result;
  251.    GetProperty(dispidAppearance, VT_I2, (void*)&result);
  252.    return result;
  253. }
  254.  
  255. void CLead::SetAppearance(short propval)
  256. {
  257.    SetProperty(dispidAppearance, VT_I2, propval);
  258. }
  259.  
  260. COleFont CLead::GetFont()
  261. {
  262.    LPDISPATCH pDispatch;
  263.    GetProperty(dispidFont, VT_DISPATCH, (void*)&pDispatch);
  264.    return COleFont(pDispatch);
  265. }
  266.  
  267. BOOL CLead::GetForePalette()
  268. {
  269.    BOOL result;
  270.    GetProperty(dispidForePalette, VT_BOOL, (void*)&result);
  271.    return result;
  272. }
  273.  
  274. void CLead::SetForePalette(BOOL propval)
  275. {
  276.    SetProperty(dispidForePalette, VT_BOOL, propval);
  277. }
  278.  
  279. OLE_HANDLE CLead::GetHWnd()
  280. {
  281.    OLE_HANDLE result;
  282.    GetProperty(0xFFFFFDFD, VT_HANDLE, (void*)&result);
  283.    return result;
  284. }
  285.  
  286. void CLead::SetHWnd(OLE_HANDLE propval)
  287. {
  288.    SetProperty(0xFFFFFDFD, VT_HANDLE, propval);
  289. }
  290.  
  291. OLE_COLOR CLead::GetBackColor()
  292. {
  293.    OLE_COLOR result;
  294.    GetProperty(0xFFFFFE0B, VT_I4, (void*)&result);
  295.    return result;
  296. }
  297.  
  298. void CLead::SetBackColor(OLE_COLOR propval)
  299. {
  300.    SetProperty(0xFFFFFE0B, VT_I4, propval);
  301. }
  302.  
  303. BOOL CLead::GetEnabled()
  304. {
  305.    BOOL result;
  306.    GetProperty(0xFFFFFDFE, VT_BOOL, (void*)&result);
  307.    return result;
  308. }
  309.  
  310. void CLead::SetEnabled(BOOL propval)
  311. {
  312.    SetProperty(0xFFFFFDFE, VT_BOOL, propval);
  313. }
  314.  
  315. short CLead::GetIsGrayscale()
  316. {
  317.    short result;
  318.    GetProperty(dispidIsGrayscale, VT_I2, (void*)&result);
  319.    return result;
  320. }
  321.  
  322. void CLead::SetIsGrayscale(short propval)
  323. {
  324.    SetProperty(dispidIsGrayscale, VT_I2, propval);
  325. }
  326.  
  327. short CLead::GetBorderStyle()
  328. {
  329.    short result;
  330.    GetProperty(0xFFFFFE08, VT_I2, (void*)&result);
  331.    return result;
  332. }
  333.  
  334. void CLead::SetBorderStyle(short propval)
  335. {
  336.    SetProperty(0xFFFFFE08, VT_I2, propval);
  337. }
  338.  
  339. OLE_HANDLE CLead::GetBitmap()
  340. {
  341.    OLE_HANDLE result;
  342.    GetProperty(dispidBitmap, VT_HANDLE, (void*)&result);
  343.    return result;
  344. }
  345.  
  346. void CLead::SetBitmap(OLE_HANDLE propval)
  347. {
  348.    SetProperty(dispidBitmap, VT_HANDLE, propval);
  349. }
  350.  
  351. BOOL CLead::GetAutoRepaint()
  352. {
  353.    BOOL result;
  354.    GetProperty(dispidAutoRepaint, VT_BOOL, (void*)&result);
  355.    return result;
  356. }
  357.  
  358. void CLead::SetAutoRepaint(BOOL propval)
  359. {
  360.    SetProperty(dispidAutoRepaint, VT_BOOL, propval);
  361. }
  362.  
  363. short CLead::GetPaintEffect()
  364. {
  365.    short result;
  366.    GetProperty(dispidPaintEffect, VT_I2, (void*)&result);
  367.    return result;
  368. }
  369.  
  370. void CLead::SetPaintEffect(short propval)
  371. {
  372.    SetProperty(dispidPaintEffect, VT_I2, propval);
  373. }
  374.  
  375. BOOL CLead::GetBackErase()
  376. {
  377.    BOOL result;
  378.    GetProperty(dispidBackErase, VT_BOOL, (void*)&result);
  379.    return result;
  380. }
  381.  
  382. void CLead::SetBackErase(BOOL propval)
  383. {
  384.    SetProperty(dispidBackErase, VT_BOOL, propval);
  385. }
  386.  
  387. BOOL CLead::GetAutoScroll()
  388. {
  389.    BOOL result;
  390.    GetProperty(dispidAutoScroll, VT_BOOL, (void*)&result);
  391.    return result;
  392. }
  393.  
  394. void CLead::SetAutoScroll(BOOL propval)
  395. {
  396.    SetProperty(dispidAutoScroll, VT_BOOL, propval);
  397. }
  398.  
  399. short CLead::GetPaintDither()
  400. {
  401.    short result;
  402.    GetProperty(dispidPaintDither, VT_I2, (void*)&result);
  403.    return result;
  404. }
  405.  
  406. void CLead::SetPaintDither(short propval)
  407. {
  408.    SetProperty(dispidPaintDither, VT_I2, propval);
  409. }
  410.  
  411. BOOL CLead::GetEnableProgressEvent()
  412. {
  413.    BOOL result;
  414.    GetProperty(dispidEnableProgressEvent, VT_BOOL, (void*)&result);
  415.    return result;
  416. }
  417.  
  418. void CLead::SetEnableProgressEvent(BOOL propval)
  419. {
  420.    SetProperty(dispidEnableProgressEvent, VT_BOOL, propval);
  421. }
  422.  
  423. short CLead::GetBitonalScaling()
  424. {
  425.    short result;
  426.    GetProperty(dispidBitonalScaling, VT_I2, (void*)&result);
  427.    return result;
  428. }
  429.  
  430. void CLead::SetBitonalScaling(short propval)
  431. {
  432.    SetProperty(dispidBitonalScaling, VT_I2, propval);
  433. }
  434.  
  435. BOOL CLead::GetPaintWhileLoad()
  436. {
  437.    BOOL result;
  438.    GetProperty(dispidPaintWhileLoad, VT_BOOL, (void*)&result);
  439.    return result;
  440. }
  441.  
  442. void CLead::SetPaintWhileLoad(BOOL propval)
  443. {
  444.    SetProperty(dispidPaintWhileLoad, VT_BOOL, propval);
  445. }
  446.  
  447. float CLead::GetBitmapWidth()
  448. {
  449.    float result;
  450.    GetProperty(dispidBitmapWidth, VT_R4, (void*)&result);
  451.    return result;
  452. }
  453.  
  454. void CLead::SetBitmapWidth(float propval)
  455. {
  456.    SetProperty(dispidBitmapWidth, VT_R4, propval);
  457. }
  458.  
  459. float CLead::GetBitmapHeight()
  460. {
  461.    float result;
  462.    GetProperty(dispidBitmapHeight, VT_R4, (void*)&result);
  463.    return result;
  464. }
  465.  
  466. void CLead::SetBitmapHeight(float propval)
  467. {
  468.    SetProperty(dispidBitmapHeight, VT_R4, propval);
  469. }
  470.  
  471. short CLead::GetBitmapBits()
  472. {
  473.    short result;
  474.    GetProperty(dispidBitmapBits, VT_I2, (void*)&result);
  475.    return result;
  476. }
  477.  
  478. void CLead::SetBitmapBits(short propval)
  479. {
  480.    SetProperty(dispidBitmapBits, VT_I2, propval);
  481. }
  482.  
  483. short CLead::GetVersionLevel()
  484. {
  485.    short result;
  486.    GetProperty(dispidVersionLevel, VT_I2, (void*)&result);
  487.    return result;
  488. }
  489.  
  490. void CLead::SetVersionLevel(short propval)
  491. {
  492.    SetProperty(dispidVersionLevel, VT_I2, propval);
  493. }
  494.  
  495. short CLead::GetVersionMajor()
  496. {
  497.    short result;
  498.    GetProperty(dispidVersionMajor, VT_I2, (void*)&result);
  499.    return result;
  500. }
  501.  
  502. void CLead::SetVersionMajor(short propval)
  503. {
  504.    SetProperty(dispidVersionMajor, VT_I2, propval);
  505. }
  506.  
  507. short CLead::GetVersionMinor()
  508. {
  509.    short result;
  510.    GetProperty(dispidVersionMinor, VT_I2, (void*)&result);
  511.    return result;
  512. }
  513.  
  514. void CLead::SetVersionMinor(short propval)
  515. {
  516.    SetProperty(dispidVersionMinor, VT_I2, propval);
  517. }
  518.  
  519. CString CLead::GetVersionProduct()
  520. {
  521.    CString result;
  522.    GetProperty(dispidVersionProduct, VT_BSTR, (void*)&result);
  523.    return result;
  524. }
  525.  
  526. void CLead::SetVersionProduct(LPCTSTR propval)
  527. {
  528.    SetProperty(dispidVersionProduct, VT_BSTR, propval);
  529. }
  530.  
  531. CString CLead::GetVersionDate()
  532. {
  533.    CString result;
  534.    GetProperty(dispidVersionDate, VT_BSTR, (void*)&result);
  535.    return result;
  536. }
  537.  
  538. void CLead::SetVersionDate(LPCTSTR propval)
  539. {
  540.    SetProperty(dispidVersionDate, VT_BSTR, propval);
  541. }
  542.  
  543. CString CLead::GetVersionTime()
  544. {
  545.    CString result;
  546.    GetProperty(dispidVersionTime, VT_BSTR, (void*)&result);
  547.    return result;
  548. }
  549.  
  550. void CLead::SetVersionTime(LPCTSTR propval)
  551. {
  552.    SetProperty(dispidVersionTime, VT_BSTR, propval);
  553. }
  554.  
  555. short CLead::GetPaintPalette()
  556. {
  557.    short result;
  558.    GetProperty(dispidPaintPalette, VT_I2, (void*)&result);
  559.    return result;
  560. }
  561.  
  562. void CLead::SetPaintPalette(short propval)
  563. {
  564.    SetProperty(dispidPaintPalette, VT_I2, propval);
  565. }
  566.  
  567. BOOL CLead::GetEnableMethodErrors()
  568. {
  569.    BOOL result;
  570.    GetProperty(dispidEnableMethodErrors, VT_BOOL, (void*)&result);
  571.    return result;
  572. }
  573.  
  574. void CLead::SetEnableMethodErrors(BOOL propval)
  575. {
  576.    SetProperty(dispidEnableMethodErrors, VT_BOOL, propval);
  577. }
  578.  
  579. float CLead::GetDstLeft()
  580. {
  581.    float result;
  582.    GetProperty(dispidDstLeft, VT_R4, (void*)&result);
  583.    return result;
  584. }
  585.  
  586. void CLead::SetDstLeft(float propval)
  587. {
  588.    SetProperty(dispidDstLeft, VT_R4, propval);
  589. }
  590.  
  591. float CLead::GetDstTop()
  592. {
  593.    float result;
  594.    GetProperty(dispidDstTop, VT_R4, (void*)&result);
  595.    return result;
  596. }
  597.  
  598. void CLead::SetDstTop(float propval)
  599. {
  600.    SetProperty(dispidDstTop, VT_R4, propval);
  601. }
  602.  
  603. float CLead::GetDstWidth()
  604. {
  605.    float result;
  606.    GetProperty(dispidDstWidth, VT_R4, (void*)&result);
  607.    return result;
  608. }
  609.  
  610. void CLead::SetDstWidth(float propval)
  611. {
  612.    SetProperty(dispidDstWidth, VT_R4, propval);
  613. }
  614.  
  615. float CLead::GetDstHeight()
  616. {
  617.    float result;
  618.    GetProperty(dispidDstHeight, VT_R4, (void*)&result);
  619.    return result;
  620. }
  621.  
  622. void CLead::SetDstHeight(float propval)
  623. {
  624.    SetProperty(dispidDstHeight, VT_R4, propval);
  625. }
  626.  
  627. float CLead::GetDstClipLeft()
  628. {
  629.    float result;
  630.    GetProperty(dispidDstClipLeft, VT_R4, (void*)&result);
  631.    return result;
  632. }
  633.  
  634. void CLead::SetDstClipLeft(float propval)
  635. {
  636.    SetProperty(dispidDstClipLeft, VT_R4, propval);
  637. }
  638.  
  639. float CLead::GetDstClipTop()
  640. {
  641.    float result;
  642.    GetProperty(dispidDstClipTop, VT_R4, (void*)&result);
  643.    return result;
  644. }
  645.  
  646. void CLead::SetDstClipTop(float propval)
  647. {
  648.    SetProperty(dispidDstClipTop, VT_R4, propval);
  649. }
  650.  
  651. float CLead::GetDstClipWidth()
  652. {
  653.    float result;
  654.    GetProperty(dispidDstClipWidth, VT_R4, (void*)&result);
  655.    return result;
  656. }
  657.  
  658. void CLead::SetDstClipWidth(float propval)
  659. {
  660.    SetProperty(dispidDstClipWidth, VT_R4, propval);
  661. }
  662.  
  663. float CLead::GetDstClipHeight()
  664. {
  665.    float result;
  666.    GetProperty(dispidDstClipHeight, VT_R4, (void*)&result);
  667.    return result;
  668. }
  669.  
  670. void CLead::SetDstClipHeight(float propval)
  671. {
  672.    SetProperty(dispidDstClipHeight, VT_R4, propval);
  673. }
  674.  
  675. float CLead::GetSrcLeft()
  676. {
  677.    float result;
  678.    GetProperty(dispidSrcLeft, VT_R4, (void*)&result);
  679.    return result;
  680. }
  681.  
  682. void CLead::SetSrcLeft(float propval)
  683. {
  684.    SetProperty(dispidSrcLeft, VT_R4, propval);
  685. }
  686.  
  687. float CLead::GetSrcTop()
  688. {
  689.    float result;
  690.    GetProperty(dispidSrcTop, VT_R4, (void*)&result);
  691.    return result;
  692. }
  693.  
  694. void CLead::SetSrcTop(float propval)
  695. {
  696.    SetProperty(dispidSrcTop, VT_R4, propval);
  697. }
  698.  
  699. float CLead::GetSrcWidth()
  700. {
  701.    float result;
  702.    GetProperty(dispidSrcWidth, VT_R4, (void*)&result);
  703.    return result;
  704. }
  705.  
  706. void CLead::SetSrcWidth(float propval)
  707. {
  708.    SetProperty(dispidSrcWidth, VT_R4, propval);
  709. }
  710.  
  711. float CLead::GetSrcHeight()
  712. {
  713.    float result;
  714.    GetProperty(dispidSrcHeight, VT_R4, (void*)&result);
  715.    return result;
  716. }
  717.  
  718. void CLead::SetSrcHeight(float propval)
  719. {
  720.    SetProperty(dispidSrcHeight, VT_R4, propval);
  721. }
  722.  
  723. float CLead::GetSrcClipLeft()
  724. {
  725.    float result;
  726.    GetProperty(dispidSrcClipLeft, VT_R4, (void*)&result);
  727.    return result;
  728. }
  729.  
  730. void CLead::SetSrcClipLeft(float propval)
  731. {
  732.    SetProperty(dispidSrcClipLeft, VT_R4, propval);
  733. }
  734.  
  735. float CLead::GetSrcClipTop()
  736. {
  737.    float result;
  738.    GetProperty(dispidSrcClipTop, VT_R4, (void*)&result);
  739.    return result;
  740. }
  741.  
  742. void CLead::SetSrcClipTop(float propval)
  743. {
  744.    SetProperty(dispidSrcClipTop, VT_R4, propval);
  745. }
  746.  
  747. float CLead::GetSrcClipWidth()
  748. {
  749.    float result;
  750.    GetProperty(dispidSrcClipWidth, VT_R4, (void*)&result);
  751.    return result;
  752. }
  753.  
  754. void CLead::SetSrcClipWidth(float propval)
  755. {
  756.    SetProperty(dispidSrcClipWidth, VT_R4, propval);
  757. }
  758.  
  759. float CLead::GetSrcClipHeight()
  760. {
  761.    float result;
  762.    GetProperty(dispidSrcClipHeight, VT_R4, (void*)&result);
  763.    return result;
  764. }
  765.  
  766. void CLead::SetSrcClipHeight(float propval)
  767. {
  768.    SetProperty(dispidSrcClipHeight, VT_R4, propval);
  769. }
  770.  
  771. short CLead::GetBitmapXRes()
  772. {
  773.    short result;
  774.    GetProperty(dispidBitmapXRes, VT_I2, (void*)&result);
  775.    return result;
  776. }
  777.  
  778. void CLead::SetBitmapXRes(short propval)
  779. {
  780.    SetProperty(dispidBitmapXRes, VT_I2, propval);
  781. }
  782.  
  783. short CLead::GetBitmapYRes()
  784. {
  785.    short result;
  786.    GetProperty(dispidBitmapYRes, VT_I2, (void*)&result);
  787.    return result;
  788. }
  789.  
  790. void CLead::SetBitmapYRes(short propval)
  791. {
  792.    SetProperty(dispidBitmapYRes, VT_I2, propval);
  793. }
  794.  
  795. short CLead::GetInfoPage()
  796. {
  797.    short result;
  798.    GetProperty(dispidInfoPage, VT_I2, (void*)&result);
  799.    return result;
  800. }
  801.  
  802. void CLead::SetInfoPage(short propval)
  803. {
  804.    SetProperty(dispidInfoPage, VT_I2, propval);
  805. }
  806.  
  807. float CLead::GetInfoWidth()
  808. {
  809.    float result;
  810.    GetProperty(dispidInfoWidth, VT_R4, (void*)&result);
  811.    return result;
  812. }
  813.  
  814. void CLead::SetInfoWidth(float propval)
  815. {
  816.    SetProperty(dispidInfoWidth, VT_R4, propval);
  817. }
  818.  
  819. float CLead::GetInfoHeight()
  820. {
  821.    float result;
  822.    GetProperty(dispidInfoHeight, VT_R4, (void*)&result);
  823.    return result;
  824. }
  825.  
  826. void CLead::SetInfoHeight(float propval)
  827. {
  828.    SetProperty(dispidInfoHeight, VT_R4, propval);
  829. }
  830.  
  831. short CLead::GetInfoBits()
  832. {
  833.    short result;
  834.    GetProperty(dispidInfoBits, VT_I2, (void*)&result);
  835.    return result;
  836. }
  837.  
  838. void CLead::SetInfoBits(short propval)
  839. {
  840.    SetProperty(dispidInfoBits, VT_I2, propval);
  841. }
  842.  
  843. short CLead::GetInfoFormat()
  844. {
  845.    short result;
  846.    GetProperty(dispidInfoFormat, VT_I2, (void*)&result);
  847.    return result;
  848. }
  849.  
  850. void CLead::SetInfoFormat(short propval)
  851. {
  852.    SetProperty(dispidInfoFormat, VT_I2, propval);
  853. }
  854.  
  855. long CLead::GetInfoSizeDisk()
  856. {
  857.    long result;
  858.    GetProperty(dispidInfoSizeDisk, VT_I4, (void*)&result);
  859.    return result;
  860. }
  861.  
  862. void CLead::SetInfoSizeDisk(long propval)
  863. {
  864.    SetProperty(dispidInfoSizeDisk, VT_I4, propval);
  865. }
  866.  
  867. long CLead::GetPaintROP3()
  868. {
  869.    long result;
  870.    GetProperty(dispidPaintROP3, VT_I4, (void*)&result);
  871.    return result;
  872. }
  873.  
  874. void CLead::SetPaintROP3(long propval)
  875. {
  876.    SetProperty(dispidPaintROP3, VT_I4, propval);
  877. }
  878.  
  879. long CLead::GetInfoSizeMem()
  880. {
  881.    long result;
  882.    GetProperty(dispidInfoSizeMem, VT_I4, (void*)&result);
  883.    return result;
  884. }
  885.  
  886. void CLead::SetInfoSizeMem(long propval)
  887. {
  888.    SetProperty(dispidInfoSizeMem, VT_I4, propval);
  889. }
  890.  
  891. CString CLead::GetInfoCompress()
  892. {
  893.    CString result;
  894.    GetProperty(dispidInfoCompress, VT_BSTR, (void*)&result);
  895.    return result;
  896. }
  897.  
  898. void CLead::SetInfoCompress(LPCTSTR propval)
  899. {
  900.    SetProperty(dispidInfoCompress, VT_BSTR, propval);
  901. }
  902.  
  903. BOOL CLead::GetEnableTwainEvent()
  904. {
  905.    BOOL result;
  906.    GetProperty(dispidEnableTwainEvent, VT_BOOL, (void*)&result);
  907.    return result;
  908. }
  909.  
  910. void CLead::SetEnableTwainEvent(BOOL propval)
  911. {
  912.    SetProperty(dispidEnableTwainEvent, VT_BOOL, propval);
  913. }
  914.  
  915. BOOL CLead::GetRubberBandVisible()
  916. {
  917.    BOOL result;
  918.    GetProperty(dispidRubberBandVisible, VT_BOOL, (void*)&result);
  919.    return result;
  920. }
  921.  
  922. void CLead::SetRubberBandVisible(BOOL propval)
  923. {
  924.    SetProperty(dispidRubberBandVisible, VT_BOOL, propval);
  925. }
  926.  
  927. float CLead::GetRubberBandLeft()
  928. {
  929.    float result;
  930.    GetProperty(dispidRubberBandLeft, VT_R4, (void*)&result);
  931.    return result;
  932. }
  933.  
  934. void CLead::SetRubberBandLeft(float propval)
  935. {
  936.    SetProperty(dispidRubberBandLeft, VT_R4, propval);
  937. }
  938.  
  939. float CLead::GetRubberBandTop()
  940. {
  941.    float result;
  942.    GetProperty(dispidRubberBandTop, VT_R4, (void*)&result);
  943.    return result;
  944. }
  945.  
  946. void CLead::SetRubberBandTop(float propval)
  947. {
  948.    SetProperty(dispidRubberBandTop, VT_R4, propval);
  949. }
  950.  
  951. float CLead::GetRubberBandWidth()
  952. {
  953.    float result;
  954.    GetProperty(dispidRubberBandWidth, VT_R4, (void*)&result);
  955.    return result;
  956. }
  957.  
  958. void CLead::SetRubberBandWidth(float propval)
  959. {
  960.    SetProperty(dispidRubberBandWidth, VT_R4, propval);
  961. }
  962.  
  963. float CLead::GetRubberBandHeight()
  964. {
  965.    float result;
  966.    GetProperty(dispidRubberBandHeight, VT_R4, (void*)&result);
  967.    return result;
  968. }
  969.  
  970. void CLead::SetRubberBandHeight(float propval)
  971. {
  972.    SetProperty(dispidRubberBandHeight, VT_R4, propval);
  973. }
  974.  
  975. short CLead::GetPCDRes()
  976. {
  977.    short result;
  978.    GetProperty(dispidPCDRes, VT_I2, (void*)&result);
  979.    return result;
  980. }
  981.  
  982. void CLead::SetPCDRes(short propval)
  983. {
  984.    SetProperty(dispidPCDRes, VT_I2, propval);
  985. }
  986.  
  987. short CLead::GetMousePointer()
  988. {
  989.    short result;
  990.    GetProperty(dispidMousePointer, VT_I2, (void*)&result);
  991.    return result;
  992. }
  993.  
  994. void CLead::SetMousePointer(short propval)
  995. {
  996.    SetProperty(dispidMousePointer, VT_I2, propval);
  997. }
  998.  
  999. LPUNKNOWN CLead::GetMouseIcon()
  1000. {
  1001.    LPUNKNOWN result;
  1002.    GetProperty(dispidMouseIcon, VT_UNKNOWN, (void*)&result);
  1003.    return result;
  1004. }
  1005.  
  1006. void CLead::SetMouseIcon(LPUNKNOWN propval)
  1007. {
  1008.    SetProperty(dispidMouseIcon, VT_UNKNOWN, propval);
  1009. }
  1010.  
  1011. short CLead::GetScaleMode()
  1012. {
  1013.    short result;
  1014.    GetProperty(dispidScaleMode, VT_I2, (void*)&result);
  1015.    return result;
  1016. }
  1017.  
  1018. void CLead::SetScaleMode(short propval)
  1019. {
  1020.    SetProperty(dispidScaleMode, VT_I2, propval);
  1021. }
  1022.  
  1023. BOOL CLead::GetAutoSetRects()
  1024. {
  1025.    BOOL result;
  1026.    GetProperty(dispidAutoSetRects, VT_BOOL, (void*)&result);
  1027.    return result;
  1028. }
  1029.  
  1030. void CLead::SetAutoSetRects(BOOL propval)
  1031. {
  1032.    SetProperty(dispidAutoSetRects, VT_BOOL, propval);
  1033. }
  1034.  
  1035. float CLead::GetScaleLeft()
  1036. {
  1037.    float result;
  1038.    GetProperty(dispidScaleLeft, VT_R4, (void*)&result);
  1039.    return result;
  1040. }
  1041.  
  1042. void CLead::SetScaleLeft(float propval)
  1043. {
  1044.    SetProperty(dispidScaleLeft, VT_R4, propval);
  1045. }
  1046.  
  1047. float CLead::GetScaleTop()
  1048. {
  1049.    float result;
  1050.    GetProperty(dispidScaleTop, VT_R4, (void*)&result);
  1051.    return result;
  1052. }
  1053.  
  1054. void CLead::SetScaleTop(float propval)
  1055. {
  1056.    SetProperty(dispidScaleTop, VT_R4, propval);
  1057. }
  1058.  
  1059. float CLead::GetScaleWidth()
  1060. {
  1061.    float result;
  1062.    GetProperty(dispidScaleWidth, VT_R4, (void*)&result);
  1063.    return result;
  1064. }
  1065.  
  1066. void CLead::SetScaleWidth(float propval)
  1067. {
  1068.    SetProperty(dispidScaleWidth, VT_R4, propval);
  1069. }
  1070.  
  1071. float CLead::GetScaleHeight()
  1072. {
  1073.    float result;
  1074.    GetProperty(dispidScaleHeight, VT_R4, (void*)&result);
  1075.    return result;
  1076. }
  1077.  
  1078. void CLead::SetScaleHeight(float propval)
  1079. {
  1080.    SetProperty(dispidScaleHeight, VT_R4, propval);
  1081. }
  1082.  
  1083. BOOL CLead::GetdbCanAppend()
  1084. {
  1085.    BOOL result;
  1086.    GetProperty(dispidDbCanAppend, VT_BOOL, (void*)&result);
  1087.    return result;
  1088. }
  1089.  
  1090. void CLead::SetdbCanAppend(BOOL propval)
  1091. {
  1092.    SetProperty(dispidDbCanAppend, VT_BOOL, propval);
  1093. }
  1094.  
  1095. BOOL CLead::GetdbCanRestart()
  1096. {
  1097.    BOOL result;
  1098.    GetProperty(dispidDbCanRestart, VT_BOOL, (void*)&result);
  1099.    return result;
  1100. }
  1101.  
  1102. void CLead::SetdbCanRestart(BOOL propval)
  1103. {
  1104.    SetProperty(dispidDbCanRestart, VT_BOOL, propval);
  1105. }
  1106.  
  1107. BOOL CLead::GetdbCanScroll()
  1108. {
  1109.    BOOL result;
  1110.    GetProperty(dispidDbCanScroll, VT_BOOL, (void*)&result);
  1111.    return result;
  1112. }
  1113.  
  1114. void CLead::SetdbCanScroll(BOOL propval)
  1115. {
  1116.    SetProperty(dispidDbCanScroll, VT_BOOL, propval);
  1117. }
  1118.  
  1119. BOOL CLead::GetdbCanUpdate()
  1120. {
  1121.    BOOL result;
  1122.    GetProperty(dispidDbCanUpdate, VT_BOOL, (void*)&result);
  1123.    return result;
  1124. }
  1125.  
  1126. void CLead::SetdbCanUpdate(BOOL propval)
  1127. {
  1128.    SetProperty(dispidDbCanUpdate, VT_BOOL, propval);
  1129. }
  1130.  
  1131. long CLead::GetdbRecordCount()
  1132. {
  1133.    long result;
  1134.    GetProperty(dispidDbRecordCount, VT_I4, (void*)&result);
  1135.    return result;
  1136. }
  1137.  
  1138. void CLead::SetdbRecordCount(long propval)
  1139. {
  1140.    SetProperty(dispidDbRecordCount, VT_I4, propval);
  1141. }
  1142.  
  1143. BOOL CLead::GetdbIsOpen()
  1144. {
  1145.    BOOL result;
  1146.    GetProperty(dispidDbIsOpen, VT_BOOL, (void*)&result);
  1147.    return result;
  1148. }
  1149.  
  1150. void CLead::SetdbIsOpen(BOOL propval)
  1151. {
  1152.    SetProperty(dispidDbIsOpen, VT_BOOL, propval);
  1153. }
  1154.  
  1155. BOOL CLead::GetdbIsBOF()
  1156. {
  1157.    BOOL result;
  1158.    GetProperty(dispidDbIsBOF, VT_BOOL, (void*)&result);
  1159.    return result;
  1160. }
  1161.  
  1162. void CLead::SetdbIsBOF(BOOL propval)
  1163. {
  1164.    SetProperty(dispidDbIsBOF, VT_BOOL, propval);
  1165. }
  1166.  
  1167. BOOL CLead::GetdbIsEOF()
  1168. {
  1169.    BOOL result;
  1170.    GetProperty(dispidDbIsEOF, VT_BOOL, (void*)&result);
  1171.    return result;
  1172. }
  1173.  
  1174. void CLead::SetdbIsEOF(BOOL propval)
  1175. {
  1176.    SetProperty(dispidDbIsEOF, VT_BOOL, propval);
  1177. }
  1178.  
  1179. BOOL CLead::GetdbIsDeleted()
  1180. {
  1181.    BOOL result;
  1182.    GetProperty(dispidDbIsDeleted, VT_BOOL, (void*)&result);
  1183.    return result;
  1184. }
  1185.  
  1186. void CLead::SetdbIsDeleted(BOOL propval)
  1187. {
  1188.    SetProperty(dispidDbIsDeleted, VT_BOOL, propval);
  1189. }
  1190.  
  1191. long CLead::GetdbCurrentRecord()
  1192. {
  1193.    long result;
  1194.    GetProperty(dispidDbCurrentRecord, VT_I4, (void*)&result);
  1195.    return result;
  1196. }
  1197.  
  1198. void CLead::SetdbCurrentRecord(long propval)
  1199. {
  1200.    SetProperty(dispidDbCurrentRecord, VT_I4, propval);
  1201. }
  1202.  
  1203. short CLead::GetdbEditMode()
  1204. {
  1205.    short result;
  1206.    GetProperty(dispidDbEditMode, VT_I2, (void*)&result);
  1207.    return result;
  1208. }
  1209.  
  1210. void CLead::SetdbEditMode(short propval)
  1211. {
  1212.    SetProperty(dispidDbEditMode, VT_I2, propval);
  1213. }
  1214.  
  1215. short CLead::GetdbLockingMode()
  1216. {
  1217.    short result;
  1218.    GetProperty(dispidDbLockingMode, VT_I2, (void*)&result);
  1219.    return result;
  1220. }
  1221.  
  1222. void CLead::SetdbLockingMode(short propval)
  1223. {
  1224.    SetProperty(dispidDbLockingMode, VT_I2, propval);
  1225. }
  1226.  
  1227. short CLead::GetdbLoadBits()
  1228. {
  1229.    short result;
  1230.    GetProperty(dispidDbLoadBits, VT_I2, (void*)&result);
  1231.    return result;
  1232. }
  1233.  
  1234. void CLead::SetdbLoadBits(short propval)
  1235. {
  1236.    SetProperty(dispidDbLoadBits, VT_I2, propval);
  1237. }
  1238.  
  1239. CString CLead::GetTwainAppAuthor()
  1240. {
  1241.    CString result;
  1242.    GetProperty(dispidTwainAppAuthor, VT_BSTR, (void*)&result);
  1243.    return result;
  1244. }
  1245.  
  1246. void CLead::SetTwainAppAuthor(LPCTSTR propval)
  1247. {
  1248.    SetProperty(dispidTwainAppAuthor, VT_BSTR, propval);
  1249. }
  1250.  
  1251. CString CLead::GetTwainAppFamily()
  1252. {
  1253.    CString result;
  1254.    GetProperty(dispidTwainAppFamily, VT_BSTR, (void*)&result);
  1255.    return result;
  1256. }
  1257.  
  1258. void CLead::SetTwainAppFamily(LPCTSTR propval)
  1259. {
  1260.    SetProperty(dispidTwainAppFamily, VT_BSTR, propval);
  1261. }
  1262.  
  1263. CString CLead::GetTwainAppName()
  1264. {
  1265.    CString result;
  1266.    GetProperty(dispidTwainAppName, VT_BSTR, (void*)&result);
  1267.    return result;
  1268. }
  1269.  
  1270. void CLead::SetTwainAppName(LPCTSTR propval)
  1271. {
  1272.    SetProperty(dispidTwainAppName, VT_BSTR, propval);
  1273. }
  1274.  
  1275. CString CLead::GetTwainSourceName()
  1276. {
  1277.    CString result;
  1278.    GetProperty(dispidTwainSourceName, VT_BSTR, (void*)&result);
  1279.    return result;
  1280. }
  1281.  
  1282. void CLead::SetTwainSourceName(LPCTSTR propval)
  1283. {
  1284.    SetProperty(dispidTwainSourceName, VT_BSTR, propval);
  1285. }
  1286.  
  1287. short CLead::GetTwainMaxPages()
  1288. {
  1289.    short result;
  1290.    GetProperty(dispidTwainMaxPages, VT_I2, (void*)&result);
  1291.    return result;
  1292. }
  1293.  
  1294. void CLead::SetTwainMaxPages(short propval)
  1295. {
  1296.    SetProperty(dispidTwainMaxPages, VT_I2, propval);
  1297. }
  1298.  
  1299. short CLead::GetTwainPixelType()
  1300. {
  1301.    short result;
  1302.    GetProperty(dispidTwainPixelType, VT_I2, (void*)&result);
  1303.    return result;
  1304. }
  1305.  
  1306. void CLead::SetTwainPixelType(short propval)
  1307. {
  1308.    SetProperty(dispidTwainPixelType, VT_I2, propval);
  1309. }
  1310.  
  1311. short CLead::GetTwainRes()
  1312. {
  1313.    short result;
  1314.    GetProperty(dispidTwainRes, VT_I2, (void*)&result);
  1315.    return result;
  1316. }
  1317.  
  1318. void CLead::SetTwainRes(short propval)
  1319. {
  1320.    SetProperty(dispidTwainRes, VT_I2, propval);
  1321. }
  1322.  
  1323. long CLead::GetTwainFrameLeft()
  1324. {
  1325.    long result;
  1326.    GetProperty(dispidTwainFrameLeft, VT_I4, (void*)&result);
  1327.    return result;
  1328. }
  1329.  
  1330. void CLead::SetTwainFrameLeft(long propval)
  1331. {
  1332.    SetProperty(dispidTwainFrameLeft, VT_I4, propval);
  1333. }
  1334.  
  1335. long CLead::GetTwainFrameTop()
  1336. {
  1337.    long result;
  1338.    GetProperty(dispidTwainFrameTop, VT_I4, (void*)&result);
  1339.    return result;
  1340. }
  1341.  
  1342. void CLead::SetTwainFrameTop(long propval)
  1343. {
  1344.    SetProperty(dispidTwainFrameTop, VT_I4, propval);
  1345. }
  1346.  
  1347. long CLead::GetTwainFrameWidth()
  1348. {
  1349.    long result;
  1350.    GetProperty(dispidTwainFrameWidth, VT_I4, (void*)&result);
  1351.    return result;
  1352. }
  1353.  
  1354. void CLead::SetTwainFrameWidth(long propval)
  1355. {
  1356.    SetProperty(dispidTwainFrameWidth, VT_I4, propval);
  1357. }
  1358.  
  1359. long CLead::GetTwainFrameHeight()
  1360. {
  1361.    long result;
  1362.    GetProperty(dispidTwainFrameHeight, VT_I4, (void*)&result);
  1363.    return result;
  1364. }
  1365.  
  1366. void CLead::SetTwainFrameHeight(long propval)
  1367. {
  1368.    SetProperty(dispidTwainFrameHeight, VT_I4, propval);
  1369. }
  1370.  
  1371. short CLead::GetTwainBits()
  1372. {
  1373.    short result;
  1374.    GetProperty(dispidTwainBits, VT_I2, (void*)&result);
  1375.    return result;
  1376. }
  1377.  
  1378. void CLead::SetTwainBits(short propval)
  1379. {
  1380.    SetProperty(dispidTwainBits, VT_I2, propval);
  1381. }
  1382.  
  1383. short CLead::GetTwainSourceCount()
  1384. {
  1385.    short result;
  1386.    GetProperty(dispidTwainSourceCount, VT_I2, (void*)&result);
  1387.    return result;
  1388. }
  1389.  
  1390. void CLead::SetTwainSourceCount(short propval)
  1391. {
  1392.    SetProperty(dispidTwainSourceCount, VT_I2, propval);
  1393. }
  1394.  
  1395. short CLead::GetTwainFlags()
  1396. {
  1397.    short result;
  1398.    GetProperty(dispidTwainFlags, VT_I2, (void*)&result);
  1399.    return result;
  1400. }
  1401.  
  1402. void CLead::SetTwainFlags(short propval)
  1403. {
  1404.    SetProperty(dispidTwainFlags, VT_I2, propval);
  1405. }
  1406.  
  1407. void CLead::SetHasRgn(BOOL propval)
  1408. {
  1409.    SetProperty(dispidHasRgn, VT_BOOL, propval);
  1410. }
  1411.  
  1412. BOOL CLead::GetHasRgn()
  1413. {
  1414.    BOOL result;
  1415.    GetProperty(dispidHasRgn, VT_BOOL, (void*)&result);
  1416.    return result;
  1417. }
  1418.  
  1419. void CLead::SetRgnLeft(float propval)
  1420. {
  1421.    SetProperty(dispidRgnLeft, VT_R4, propval);
  1422. }
  1423.  
  1424. float CLead::GetRgnLeft()
  1425. {
  1426.    float result;
  1427.    GetProperty(dispidRgnLeft, VT_R4, (void*)&result);
  1428.    return result;
  1429. }
  1430.  
  1431. void CLead::SetRgnTop(float propval)
  1432. {
  1433.    SetProperty(dispidRgnTop, VT_R4, propval);
  1434. }
  1435.  
  1436. float CLead::GetRgnTop()
  1437. {
  1438.    float result;
  1439.    GetProperty(dispidRgnTop, VT_R4, (void*)&result);
  1440.    return result;
  1441. }
  1442.  
  1443. void CLead::SetRgnWidth(float propval)
  1444. {
  1445.    SetProperty(dispidRgnWidth, VT_R4, propval);
  1446. }
  1447.  
  1448. float CLead::GetRgnWidth()
  1449. {
  1450.    float result;
  1451.    GetProperty(dispidRgnWidth, VT_R4, (void*)&result);
  1452.    return result;
  1453. }
  1454.  
  1455. void CLead::SetRgnHeight(float propval)
  1456. {
  1457.    SetProperty(dispidRgnHeight, VT_R4, propval);
  1458. }
  1459.  
  1460. float CLead::GetRgnHeight()
  1461. {
  1462.    float result;
  1463.    GetProperty(dispidRgnHeight, VT_R4, (void*)&result);
  1464.    return result;
  1465. }
  1466.  
  1467. void CLead::SetRgnMarkingMode(short propval)
  1468. {
  1469.    SetProperty(dispidRgnMarkingMode, VT_I2, propval);
  1470. }
  1471.  
  1472. short CLead::GetRgnMarkingMode()
  1473. {
  1474.    short result;
  1475.    GetProperty(dispidRgnMarkingMode, VT_I2, (void*)&result);
  1476.    return result;
  1477. }
  1478.  
  1479. void CLead::SetRgnFrameType(short propval)
  1480. {
  1481.    SetProperty(dispidRgnFrameType, VT_I2, propval);
  1482. }
  1483.  
  1484. short CLead::GetRgnFrameType()
  1485. {
  1486.    short result;
  1487.    GetProperty(dispidRgnFrameType, VT_I2, (void*)&result);
  1488.    return result;
  1489. }
  1490.  
  1491. void CLead::SetFloater(OLE_HANDLE propval)
  1492. {
  1493.    SetProperty(dispidFloater, VT_HANDLE, propval);
  1494. }
  1495.  
  1496. OLE_HANDLE CLead::GetFloater()
  1497. {
  1498.    OLE_HANDLE result;
  1499.    GetProperty(dispidFloater, VT_HANDLE, (void*)&result);
  1500.    return result;
  1501. }
  1502.  
  1503. void CLead::SetFloaterVisible(BOOL propval)
  1504. {
  1505.    SetProperty(dispidFloaterVisible, VT_BOOL, propval);
  1506. }
  1507.  
  1508. BOOL CLead::GetFloaterVisible()
  1509. {
  1510.    BOOL result;
  1511.    GetProperty(dispidFloaterVisible, VT_BOOL, (void*)&result);
  1512.    return result;
  1513. }
  1514.  
  1515. void CLead::SetFloaterDstLeft(float propval)
  1516. {
  1517.    SetProperty(dispidFloaterDstLeft, VT_R4, propval);
  1518. }
  1519.  
  1520. float CLead::GetFloaterDstLeft()
  1521. {
  1522.    float result;
  1523.    GetProperty(dispidFloaterDstLeft, VT_R4, (void*)&result);
  1524.    return result;
  1525. }
  1526.  
  1527. void CLead::SetFloaterDstTop(float propval)
  1528. {
  1529.    SetProperty(dispidFloaterDstTop, VT_R4, propval);
  1530. }
  1531.  
  1532. float CLead::GetFloaterDstTop()
  1533. {
  1534.    float result;
  1535.    GetProperty(dispidFloaterDstTop, VT_R4, (void*)&result);
  1536.    return result;
  1537. }
  1538.  
  1539. void CLead::SetFloaterDstWidth(float propval)
  1540. {
  1541.    SetProperty(dispidFloaterDstWidth, VT_R4, propval);
  1542. }
  1543.  
  1544. float CLead::GetFloaterDstWidth()
  1545. {
  1546.    float result;
  1547.    GetProperty(dispidFloaterDstWidth, VT_R4, (void*)&result);
  1548.    return result;
  1549. }
  1550.  
  1551. void CLead::SetFloaterDstHeight(float propval)
  1552. {
  1553.    SetProperty(dispidFloaterDstHeight, VT_R4, propval);
  1554. }
  1555.  
  1556. float CLead::GetFloaterDstHeight()
  1557. {
  1558.    float result;
  1559.    GetProperty(dispidFloaterDstHeight, VT_R4, (void*)&result);
  1560.    return result;
  1561. }
  1562.  
  1563. void CLead::SetFloaterDstClipLeft(float propval)
  1564. {
  1565.    SetProperty(dispidFloaterDstClipLeft, VT_R4, propval);
  1566. }
  1567.  
  1568. float CLead::GetFloaterDstClipLeft()
  1569. {
  1570.    float result;
  1571.    GetProperty(dispidFloaterDstClipLeft, VT_R4, (void*)&result);
  1572.    return result;
  1573. }
  1574.  
  1575. void CLead::SetFloaterDstClipTop(float propval)
  1576. {
  1577.    SetProperty(dispidFloaterDstClipTop, VT_R4, propval);
  1578. }
  1579.  
  1580. float CLead::GetFloaterDstClipTop()
  1581. {
  1582.    float result;
  1583.    GetProperty(dispidFloaterDstClipTop, VT_R4, (void*)&result);
  1584.    return result;
  1585. }
  1586.  
  1587. void CLead::SetFloaterDstClipWidth(float propval)
  1588. {
  1589.    SetProperty(dispidFloaterDstClipWidth, VT_R4, propval);
  1590. }
  1591.  
  1592. float CLead::GetFloaterDstClipWidth()
  1593. {
  1594.    float result;
  1595.    GetProperty(dispidFloaterDstClipWidth, VT_R4, (void*)&result);
  1596.    return result;
  1597. }
  1598.  
  1599. void CLead::SetFloaterDstClipHeight(float propval)
  1600. {
  1601.    SetProperty(dispidFloaterDstClipHeight, VT_R4, propval);
  1602. }
  1603.  
  1604. float CLead::GetFloaterDstClipHeight()
  1605. {
  1606.    float result;
  1607.    GetProperty(dispidFloaterDstClipHeight, VT_R4, (void*)&result);
  1608.    return result;
  1609. }
  1610.  
  1611. void CLead::SetFloaterWidth(float propval)
  1612. {
  1613.    SetProperty(dispidFloaterWidth, VT_R4, propval);
  1614. }
  1615.  
  1616. float CLead::GetFloaterWidth()
  1617. {
  1618.    float result;
  1619.    GetProperty(dispidFloaterWidth, VT_R4, (void*)&result);
  1620.    return result;
  1621. }
  1622.  
  1623. void CLead::SetFloaterHeight(float propval)
  1624. {
  1625.    SetProperty(dispidFloaterHeight, VT_R4, propval);
  1626. }
  1627.  
  1628. float CLead::GetFloaterHeight()
  1629. {
  1630.    float result;
  1631.    GetProperty(dispidFloaterHeight, VT_R4, (void*)&result);
  1632.    return result;
  1633. }
  1634.  
  1635. void CLead::SetPolygonSize(short propval)
  1636. {
  1637.    SetProperty(dispidPolygonSize, VT_I2, propval);
  1638. }
  1639.  
  1640. short CLead::GetPolygonSize()
  1641. {
  1642.    short result;
  1643.    GetProperty(dispidPolygonSize, VT_I2, (void*)&result);
  1644.    return result;
  1645. }
  1646.  
  1647. short CLead::GetAnnUserMode()
  1648. {
  1649.    short result;
  1650.    GetProperty(dispidAnnUserMode, VT_I2, (void*)&result);
  1651.    return result;
  1652. }
  1653.  
  1654. void CLead::SetAnnUserMode(short propVal)
  1655. {
  1656.    SetProperty(dispidAnnUserMode, VT_I2, propVal);
  1657. }
  1658.  
  1659. short CLead::GetAnnTool()
  1660. {
  1661.    short result;
  1662.    GetProperty(dispidAnnTool, VT_I2, (void*)&result);
  1663.    return result;
  1664. }
  1665.  
  1666. void CLead::SetAnnTool(short propVal)
  1667. {
  1668.    SetProperty(dispidAnnTool, VT_I2, propVal);
  1669. }
  1670.  
  1671. BOOL CLead::GetAnnPasteReady()
  1672. {
  1673.    BOOL result;
  1674.    GetProperty(dispidAnnPasteReady, VT_BOOL, (void*)&result);
  1675.    return result;
  1676. }
  1677.  
  1678. void CLead::SetAnnPasteReady(BOOL propVal)
  1679. {
  1680.    SetProperty(dispidAnnPasteReady, VT_BOOL, propVal);
  1681. }
  1682.  
  1683. OLE_HANDLE CLead::GetAnnContainer()
  1684. {
  1685.    OLE_HANDLE result;
  1686.    GetProperty(dispidAnnContainer, VT_HANDLE, (void*)&result);
  1687.    return result;
  1688. }
  1689.  
  1690. void CLead::SetAnnContainer(OLE_HANDLE propVal)
  1691. {
  1692.    SetProperty(dispidAnnContainer, VT_HANDLE, propVal);
  1693. }
  1694.  
  1695. OLE_HANDLE CLead::GetAnnAutomation()
  1696. {
  1697.    OLE_HANDLE result;
  1698.    GetProperty(dispidAnnAutomation, VT_HANDLE, (void*)&result);
  1699.    return result;
  1700. }
  1701.  
  1702. short CLead::GetProgressivePasses()
  1703. {
  1704.    short result;
  1705.    GetProperty(dispidProgressivePasses, VT_I2, (void*)&result);
  1706.    return result;
  1707. }
  1708.  
  1709. void CLead::SetProgressivePasses(short propval)
  1710. {
  1711.    SetProperty(dispidProgressivePasses, VT_I2, propval);
  1712. }
  1713.  
  1714. short CLead::GetBitmapListIndex()
  1715. {
  1716.    short result;
  1717.    GetProperty(dispidBitmapListIndex, VT_I2, (void*)&result);
  1718.    return result;
  1719. }
  1720.  
  1721. void CLead::SetBitmapListIndex(short propval)
  1722. {
  1723.    SetProperty(dispidBitmapListIndex, VT_I2, propval);
  1724. }
  1725.  
  1726. short CLead::GetBitmapListCount()
  1727. {
  1728.    short result;
  1729.    GetProperty(dispidBitmapListCount, VT_I2, (void*)&result);
  1730.    return result;
  1731. }
  1732.  
  1733. BOOL CLead::GetAnimationEnable()
  1734. {
  1735.    BOOL result;
  1736.    GetProperty(dispidAnimationEnable, VT_BOOL, (void*)&result);
  1737.    return result;
  1738. }
  1739.  
  1740. void CLead::SetAnimationEnable(BOOL propval)
  1741. {
  1742.    SetProperty(dispidAnimationEnable, VT_BOOL, propval);
  1743. }
  1744.  
  1745. float CLead::GetBitmapLeft()
  1746. {
  1747.    float result;
  1748.    GetProperty(dispidBitmapLeft, VT_R4, (void*)&result);
  1749.    return result;
  1750. }
  1751.  
  1752. void CLead::SetBitmapLeft(float propval)
  1753. {
  1754.    SetProperty(dispidBitmapLeft, VT_R4, propval);
  1755. }
  1756.  
  1757. float CLead::GetBitmapTop()
  1758. {
  1759.    float result;
  1760.    GetProperty(dispidBitmapTop, VT_R4, (void*)&result);
  1761.    return result;
  1762. }
  1763.  
  1764. void CLead::SetBitmapTop(float propval)
  1765. {
  1766.    SetProperty(dispidBitmapTop, VT_R4, propval);
  1767. }
  1768.  
  1769. long CLead::GetBitmapDelay()
  1770. {
  1771.    long result;
  1772.    GetProperty(dispidBitmapDelay, VT_I4, (void*)&result);
  1773.    return result;
  1774. }
  1775.  
  1776. void CLead::SetBitmapDelay(long propval)
  1777. {
  1778.    SetProperty(dispidBitmapDelay, VT_I4, propval);
  1779. }
  1780.  
  1781. float CLead::GetAnimationWidth()
  1782. {
  1783.    float result;
  1784.    GetProperty(dispidAnimationWidth, VT_R4, (void*)&result);
  1785.    return result;
  1786. }
  1787.  
  1788. void CLead::SetAnimationWidth(float propval)
  1789. {
  1790.    SetProperty(dispidAnimationWidth, VT_R4, propval);
  1791. }
  1792.  
  1793. float CLead::GetAnimationHeight()
  1794. {
  1795.    float result;
  1796.    GetProperty(dispidAnimationHeight, VT_R4, (void*)&result);
  1797.    return result;
  1798. }
  1799.  
  1800. void CLead::SetAnimationHeight(float propval)
  1801. {
  1802.    SetProperty(dispidAnimationHeight, VT_R4, propval);
  1803. }
  1804.  
  1805. OLE_COLOR CLead::GetAnimationBackColor()
  1806. {
  1807.    OLE_COLOR result;
  1808.    GetProperty(dispidAnimationBackColor, VT_I4, (void*)&result);
  1809.    return result;
  1810. }
  1811.  
  1812. void CLead::SetAnimationBackColor(OLE_COLOR propval)
  1813. {
  1814.    SetProperty(dispidAnimationBackColor, VT_I4, propval);
  1815. }
  1816.  
  1817. short CLead::GetAnimationBitsPerPixel()
  1818. {
  1819.    short result;
  1820.    GetProperty(dispidAnimationBitsPerPixel, VT_I2, (void*)&result);
  1821.    return result;
  1822. }
  1823.  
  1824. void CLead::SetAnimationBitsPerPixel(short propval)
  1825. {
  1826.    SetProperty(dispidAnimationBitsPerPixel, VT_I2, propval);
  1827. }
  1828.  
  1829. BOOL CLead::GetBitmapEnableTransparency()
  1830. {
  1831.    BOOL result;
  1832.    GetProperty(dispidBitmapEnableTransparency, VT_BOOL, (void*)&result);
  1833.    return result;
  1834. }
  1835.  
  1836. void CLead::SetBitmapEnableTransparency(BOOL propval)
  1837. {
  1838.    SetProperty(dispidBitmapEnableTransparency, VT_BOOL, propval);
  1839. }
  1840.  
  1841. OLE_COLOR CLead::GetBitmapTransparentColor()
  1842. {
  1843.    OLE_COLOR result;
  1844.    GetProperty(dispidBitmapTransparentColor, VT_I4, (void*)&result);
  1845.    return result;
  1846. }
  1847.  
  1848. void CLead::SetBitmapTransparentColor(OLE_COLOR propval)
  1849. {
  1850.    SetProperty(dispidBitmapTransparentColor, VT_I4, propval);
  1851. }
  1852.  
  1853. short CLead::GetBitmapDisposalMethod()
  1854. {
  1855.    short result;
  1856.    GetProperty(dispidBitmapDisposalMethod, VT_I2, (void*)&result);
  1857.    return result;
  1858. }
  1859.  
  1860. void CLead::SetBitmapDisposalMethod(short propval)
  1861. {
  1862.    SetProperty(dispidBitmapDisposalMethod, VT_I2, propval);
  1863. }
  1864.  
  1865. OLE_HANDLE CLead::GetBitmapList()
  1866. {
  1867.    OLE_HANDLE result;
  1868.    GetProperty(dispidBitmapList, VT_HANDLE, (void*)&result);
  1869.    return result;
  1870. }
  1871.  
  1872. void CLead::SetBitmapList(OLE_HANDLE propval)
  1873. {
  1874.    SetProperty(dispidBitmapList, VT_HANDLE, propval);
  1875. }
  1876.  
  1877. BOOL CLead::GetAnnAutoMenuEnable()
  1878. {
  1879.    BOOL result;
  1880.    GetProperty(dispidAnnAutoMenuEnable, VT_BOOL, (void*)&result);
  1881.    return result;
  1882. }
  1883.  
  1884. void CLead::SetAnnAutoMenuEnable(BOOL propval)
  1885. {
  1886.    SetProperty(dispidAnnAutoMenuEnable, VT_BOOL, propval);
  1887. }
  1888.  
  1889. BOOL CLead::GetAutoAnimate()
  1890. {
  1891.    BOOL result;
  1892.    GetProperty(dispidAutoAnimate, VT_BOOL, (void*)&result);
  1893.    return result;
  1894. }
  1895.  
  1896. void CLead::SetAutoAnimate(BOOL propval)
  1897. {
  1898.    SetProperty(dispidAutoAnimate, VT_BOOL, propval);
  1899. }
  1900.  
  1901. BOOL CLead::GetAnimationLoop()
  1902. {
  1903.    BOOL result;
  1904.    GetProperty(dispidAnimationLoop, VT_BOOL, (void*)&result);
  1905.    return result;
  1906. }
  1907.  
  1908. void CLead::SetAnimationLoop(BOOL propval)
  1909. {
  1910.    SetProperty(dispidAnimationLoop, VT_BOOL, propval);
  1911. }
  1912.  
  1913. float CLead::GetInfoAnimationWidth()
  1914. {
  1915.    float result;
  1916.    GetProperty(dispidInfoAnimationWidth, VT_R4, (void*)&result);
  1917.    return result;
  1918. }
  1919.  
  1920. float CLead::GetInfoAnimationHeight()
  1921. {
  1922.    float result;
  1923.    GetProperty(dispidInfoAnimationHeight, VT_R4, (void*)&result);
  1924.    return result;
  1925. }
  1926.  
  1927. BOOL CLead::GetInfoAnimation()
  1928. {
  1929.    BOOL result;
  1930.    GetProperty(dispidInfoAnimation, VT_BOOL, (void*)&result);
  1931.    return result;
  1932. }
  1933.  
  1934. CString CLead::GetBitmapDataPath()
  1935. {
  1936.    CString result;
  1937.    GetProperty(dispidBitmapDataPath, VT_BSTR, (void*)&result);
  1938.    return result;
  1939. }
  1940.  
  1941. void CLead::SetBitmapDataPath(LPCTSTR propval)
  1942. {
  1943.    SetProperty(dispidBitmapDataPath, VT_BSTR, propval);
  1944. }
  1945.  
  1946. short CLead::GetPaintSizeMode()
  1947. {
  1948.    short result;
  1949.    GetProperty(dispidPaintSizeMode, VT_I2, (void*)&result);
  1950.    return result;
  1951. }
  1952.  
  1953. void CLead::SetPaintSizeMode(short propval)
  1954. {
  1955.    SetProperty(dispidPaintSizeMode, VT_I2, propval);
  1956. }
  1957.  
  1958. float CLead::GetPaintZoomFactor()
  1959. {
  1960.    float result;
  1961.    GetProperty(dispidPaintZoomFactor, VT_R4, (void*)&result);
  1962.    return result;
  1963. }
  1964.  
  1965. void CLead::SetPaintZoomFactor(float propval)
  1966. {
  1967.    SetProperty(dispidPaintZoomFactor, VT_R4, propval);
  1968. }
  1969.  
  1970. short CLead::GetAutoAnimationLoop()
  1971. {
  1972.    short result;
  1973.    GetProperty(dispidAutoAnimationLoop, VT_I2, (void*)&result);
  1974.    return result;
  1975. }
  1976.  
  1977. void CLead::SetAutoAnimationLoop(short propval)
  1978. {
  1979.    SetProperty(dispidAutoAnimationLoop, VT_I2, propval);
  1980. }
  1981.  
  1982. BOOL CLead::GetAutoSize()
  1983. {
  1984.    BOOL result;
  1985.    GetProperty(dispidAutoSize, VT_BOOL, (void*)&result);
  1986.    return result;
  1987. }
  1988.  
  1989. void CLead::SetAutoSize(BOOL propval)
  1990. {
  1991.    SetProperty(dispidAutoSize, VT_BOOL, propval);
  1992. }
  1993.  
  1994. BOOL CLead::GetAnnAutoDrawEnable()
  1995. {
  1996.    BOOL result;
  1997.    GetProperty(dispidAnnAutoDrawEnable, VT_BOOL, (void*)&result);
  1998.    return result;
  1999. }
  2000.  
  2001. void CLead::SetAnnAutoDrawEnable(BOOL propval)
  2002. {
  2003.    SetProperty(dispidAnnAutoDrawEnable, VT_BOOL, propval);
  2004. }
  2005.  
  2006. short CLead::GetDimensionCount()
  2007. {
  2008.    short result;
  2009.    GetProperty(dispidDimensionCount, VT_I2, (void*)&result);
  2010.    return result;
  2011. }
  2012.  
  2013. BOOL CLead::GetOLEDropAllowed()
  2014. {
  2015.    BOOL result;
  2016.    GetProperty(dispidOLEDropAllowed, VT_BOOL, (void *)&result);
  2017.    return result;
  2018. }
  2019.  
  2020. void CLead::SetOLEDropAllowed(BOOL propval)
  2021. {
  2022.    SetProperty(dispidOLEDropAllowed, VT_BOOL, propval);
  2023. }
  2024.  
  2025. BOOL CLead::GetAutoRubberBand()
  2026. {
  2027.    BOOL result;
  2028.    GetProperty(dispidAutoRubberBand, VT_BOOL, (void *)&result);
  2029.    return result;
  2030. }
  2031.  
  2032. void CLead::SetAutoRubberBand(BOOL propval)
  2033. {
  2034.    SetProperty(dispidAutoRubberBand, VT_BOOL, propval);
  2035. }
  2036.  
  2037. BOOL CLead::GetSaveInterlaced()
  2038. {
  2039.    BOOL result;
  2040.    GetProperty(dispidSaveInterlaced, VT_BOOL, (void *)&result);
  2041.    return result;
  2042. }
  2043.  
  2044. void CLead::SetSaveInterlaced(BOOL propval)
  2045. {
  2046.    SetProperty(dispidSaveInterlaced, VT_BOOL, propval);
  2047. }
  2048.  
  2049. BOOL CLead::GetPaintSizeUseDPI()
  2050. {
  2051.    BOOL result;
  2052.    GetProperty(dispidPaintSizeUseDPI, VT_BOOL, (void *)&result);
  2053.    return result;
  2054. }
  2055.  
  2056. void CLead::SetPaintSizeUseDPI(BOOL propval)
  2057. {
  2058.    SetProperty(dispidPaintSizeUseDPI, VT_BOOL, propval);
  2059. }
  2060.  
  2061. CString CLead::GetAnnDataPath()
  2062. {
  2063.    CString result;
  2064.    GetProperty(dispidAnnDataPath, VT_BSTR, (void *)&result);
  2065.    return result;
  2066. }
  2067.  
  2068. void CLead::SetAnnDataPath(LPCTSTR propval)
  2069. {
  2070.    SetProperty(dispidAnnDataPath, VT_BSTR, propval);
  2071. }
  2072.  
  2073. BOOL CLead::GetDrawPersistence()
  2074. {
  2075.    BOOL result;
  2076.    GetProperty(dispidDrawPersistence, VT_BOOL, (void *)&result);
  2077.    return result;
  2078. }
  2079.  
  2080. void CLead::SetDrawPersistence(BOOL propval)
  2081. {
  2082.    SetProperty(dispidDrawPersistence, VT_BOOL, propval);
  2083. }
  2084.  
  2085. short CLead::GetDrawMode()
  2086. {
  2087.    short result;
  2088.    GetProperty(dispidDrawMode, VT_I2, (void *)&result);
  2089.    return result;
  2090. }
  2091.  
  2092. void CLead::SetDrawMode(short propval)
  2093. {
  2094.    SetProperty(dispidDrawMode, VT_I2, propval);
  2095. }
  2096.  
  2097. OLE_COLOR CLead::GetDrawPenColor()
  2098. {
  2099.    OLE_COLOR result;
  2100.    GetProperty(dispidDrawPenColor, VT_I4, (void *)&result);
  2101.    return result;
  2102. }
  2103.  
  2104. void CLead::SetDrawPenColor(OLE_COLOR propval)
  2105. {
  2106.    SetProperty(dispidDrawPenColor, VT_I4, propval);
  2107. }
  2108.  
  2109. short CLead::GetDrawPenWidth()
  2110. {
  2111.    short result;
  2112.    GetProperty(dispidDrawPenWidth, VT_I2, (void *)&result);
  2113.    return result;
  2114. }
  2115.  
  2116. void CLead::SetDrawPenWidth(short propval)
  2117. {
  2118.    SetProperty(dispidDrawPenWidth, VT_I2, propval);
  2119. }
  2120.  
  2121. short CLead::GetDrawPenStyle()
  2122. {
  2123.    short result;
  2124.    GetProperty(dispidDrawPenStyle, VT_I2, (void *)&result);
  2125.    return result;
  2126. }
  2127.  
  2128. void CLead::SetDrawPenStyle(short propval)
  2129. {
  2130.    SetProperty(dispidDrawPenStyle, VT_I2, propval);
  2131. }
  2132.  
  2133. OLE_COLOR CLead::GetDrawFillColor()
  2134. {
  2135.    OLE_COLOR result;
  2136.    GetProperty(dispidDrawFillColor, VT_I4, (void *)&result);
  2137.    return result;
  2138. }
  2139.  
  2140. void CLead::SetDrawFillColor(OLE_COLOR propval)
  2141. {
  2142.    SetProperty(dispidDrawFillColor, VT_I4, propval);
  2143. }
  2144.  
  2145. short CLead::GetDrawFillStyle()
  2146. {
  2147.    short result;
  2148.    GetProperty(dispidDrawFillStyle, VT_I2, (void *)&result);
  2149.    return result;
  2150. }
  2151.  
  2152. void CLead::SetDrawFillStyle(short propval)
  2153. {
  2154.    SetProperty(dispidDrawFillStyle, VT_I2, propval);
  2155. }
  2156.  
  2157. OLE_COLOR CLead::GetDrawFontColor()
  2158. {
  2159.    OLE_COLOR result;
  2160.    GetProperty(dispidDrawFontColor, VT_I4, (void *)&result);
  2161.    return result;
  2162. }
  2163.  
  2164. void CLead::SetDrawFontColor(OLE_COLOR propval)
  2165. {
  2166.    SetProperty(dispidDrawFontColor, VT_I4, propval);
  2167. }
  2168.  
  2169. short CLead::GetPaintContrast()
  2170. {
  2171.    short result;
  2172.    GetProperty(dispidPaintContrast, VT_I2, (void *)&result);
  2173.    return result;
  2174. }
  2175.  
  2176. void CLead::SetPaintContrast(short propval)
  2177. {
  2178.    SetProperty(dispidPaintContrast, VT_I2, propval);
  2179. }
  2180.  
  2181. short CLead::GetPaintGamma()
  2182. {
  2183.    short result;
  2184.    GetProperty(dispidPaintGamma, VT_I2, (void *)&result);
  2185.    return result;
  2186. }
  2187.  
  2188. void CLead::SetPaintGamma(short propval)
  2189. {
  2190.    SetProperty(dispidPaintGamma, VT_I2, propval);
  2191. }
  2192.  
  2193. short CLead::GetPaintIntensity()
  2194. {
  2195.    short result;
  2196.    GetProperty(dispidPaintIntensity, VT_I2, (void *)&result);
  2197.    return result;
  2198. }
  2199.  
  2200. void CLead::SetPaintIntensity(short propval)
  2201. {
  2202.    SetProperty(dispidPaintIntensity, VT_I2, propval);
  2203. }
  2204.  
  2205. BOOL CLead::GetLoadUseViewPerspective()
  2206. {
  2207.    BOOL result;
  2208.    GetProperty(dispidLoadUseViewPerspective, VT_BOOL, (void *)&result);
  2209.    return result;
  2210. }
  2211.  
  2212. void CLead::SetLoadUseViewPerspective(BOOL propval)
  2213. {
  2214.    SetProperty(dispidLoadUseViewPerspective, VT_BOOL, propval);
  2215. }
  2216.  
  2217. BOOL CLead::GetAnnAutoRotate()
  2218. {
  2219.    BOOL result;
  2220.    GetProperty(dispidAnnAutoRotate, VT_BOOL, (void *)&result);
  2221.    return result;
  2222. }
  2223.  
  2224. void CLead::SetAnnAutoRotate(BOOL propval)
  2225. {
  2226.    SetProperty(dispidAnnAutoRotate, VT_BOOL, propval);
  2227. }
  2228.  
  2229. short CLead::GetTransitionStyle()
  2230. {
  2231.    short result;
  2232.    GetProperty(dispidTransitionStyle, VT_I2, (void *)&result);
  2233.    return result;
  2234. }
  2235.  
  2236. void CLead::SetTransitionStyle(short propval)
  2237. {
  2238.    SetProperty(dispidTransitionStyle, VT_I2, propval);
  2239. }
  2240.  
  2241. short CLead::GetTransitionEffect()
  2242. {
  2243.    short result;
  2244.    GetProperty(dispidTransitionEffect, VT_I2, (void *)&result);
  2245.    return result;
  2246. }
  2247.  
  2248. void CLead::SetTransitionEffect(short propval)
  2249. {
  2250.    SetProperty(dispidTransitionEffect, VT_I2, propval);
  2251. }
  2252.  
  2253. short CLead::GetGradientStyle()
  2254. {
  2255.    short result;
  2256.    GetProperty(dispidGradientStyle, VT_I2, (void *)&result);
  2257.    return result;
  2258. }
  2259.  
  2260. void CLead::SetGradientStyle(short propval)
  2261. {
  2262.    SetProperty(dispidGradientStyle, VT_I2, propval);
  2263. }
  2264.  
  2265. OLE_COLOR CLead::GetGradientStartColor()
  2266. {
  2267.    OLE_COLOR result;
  2268.    GetProperty(dispidGradientStartColor, VT_I4, (void *)&result);
  2269.    return result;
  2270. }
  2271.  
  2272. void CLead::SetGradientStartColor(OLE_COLOR propval)
  2273. {
  2274.    SetProperty(dispidGradientStartColor, VT_I4, propval);
  2275. }
  2276.  
  2277. OLE_COLOR CLead::GetGradientEndColor()
  2278. {
  2279.    OLE_COLOR result;
  2280.    GetProperty(dispidGradientEndColor, VT_I4, (void *)&result);
  2281.    return result;
  2282. }
  2283.  
  2284. void CLead::SetGradientEndColor(OLE_COLOR propval)
  2285. {
  2286.    SetProperty(dispidGradientEndColor, VT_I4, propval);
  2287. }
  2288.  
  2289. short CLead::GetGradientSteps()
  2290. {
  2291.    short result;
  2292.    GetProperty(dispidGradientSteps, VT_I2, (void *)&result);
  2293.    return result;
  2294. }
  2295.  
  2296. void CLead::SetGradientSteps(short propval)
  2297. {
  2298.    SetProperty(dispidGradientSteps, VT_I2, propval);
  2299. }
  2300.  
  2301. short CLead::GetPatternStyle()
  2302. {
  2303.    short result;
  2304.    GetProperty(dispidPatternStyle, VT_I2, (void *)&result);
  2305.    return result;
  2306. }
  2307.  
  2308. void CLead::SetPatternStyle(short propval)
  2309. {
  2310.    SetProperty(dispidPatternStyle, VT_I2, propval);
  2311. }
  2312.  
  2313. OLE_COLOR CLead::GetPatternForeColor()
  2314. {
  2315.    OLE_COLOR result;
  2316.    GetProperty(dispidPatternForeColor, VT_I4, (void *)&result);
  2317.    return result;
  2318. }
  2319.  
  2320. void CLead::SetPatternForeColor(OLE_COLOR propval)
  2321. {
  2322.    SetProperty(dispidPatternForeColor, VT_I4, propval);
  2323. }
  2324.  
  2325. OLE_COLOR CLead::GetPatternBackColor()
  2326. {
  2327.    OLE_COLOR result;
  2328.    GetProperty(dispidPatternBackColor, VT_I4, (void *)&result);
  2329.    return result;
  2330. }
  2331.  
  2332. void CLead::SetPatternBackColor(OLE_COLOR propval)
  2333. {
  2334.    SetProperty(dispidPatternBackColor, VT_I4, propval);
  2335. }
  2336.  
  2337. short CLead::GetPaintPass()
  2338. {
  2339.    short result;
  2340.    GetProperty(dispidPaintPass, VT_I2, (void *)&result);
  2341.    return result;
  2342. }
  2343.  
  2344. void CLead::SetPaintPass(short propval)
  2345. {
  2346.    SetProperty(dispidPaintPass, VT_I2, propval);
  2347. }
  2348.  
  2349. short CLead::GetPaintMaxPasses()
  2350. {
  2351.    short result;
  2352.    GetProperty(dispidPaintMaxPasses, VT_I2, (void *)&result);
  2353.    return result;
  2354. }
  2355.  
  2356. void CLead::SetPaintMaxPasses(short propval)
  2357. {
  2358.    SetProperty(dispidPaintMaxPasses, VT_I2, propval);
  2359. }
  2360.  
  2361. short CLead::GetEffectGrain()
  2362. {
  2363.    short result;
  2364.    GetProperty(dispidEffectGrain, VT_I2, (void *)&result);
  2365.    return result;
  2366. }
  2367.  
  2368. void CLead::SetEffectGrain(short propval)
  2369. {
  2370.    SetProperty(dispidEffectGrain, VT_I2, propval);
  2371. }
  2372.  
  2373. short CLead::GetEffectDelay()
  2374. {
  2375.    short result;
  2376.    GetProperty(dispidEffectDelay, VT_I2, (void *)&result);
  2377.    return result;
  2378. }
  2379.  
  2380. void CLead::SetEffectDelay(short propval)
  2381. {
  2382.    SetProperty(dispidEffectDelay, VT_I2, propval);
  2383. }
  2384.  
  2385. short CLead::GetWandSize()
  2386. {
  2387.    short result;
  2388.    GetProperty(dispidWandSize, VT_I2, (void *)&result);
  2389.    return result;
  2390. }
  2391.  
  2392. void CLead::SetWandSize(short propval)
  2393. {
  2394.    SetProperty(dispidWandSize, VT_I2, propval);
  2395. }
  2396.  
  2397. OLE_COLOR CLead::GetWandColor()
  2398. {
  2399.    OLE_COLOR result;
  2400.    GetProperty(dispidWandColor, VT_I4, (void *)&result);
  2401.    return result;
  2402. }
  2403.  
  2404. void CLead::SetWandColor(OLE_COLOR propval)
  2405. {
  2406.    SetProperty(dispidWandColor, VT_I4, propval);
  2407. }
  2408.  
  2409. BOOL CLead::GetUseTransparentColor()
  2410. {
  2411.    BOOL result;
  2412.    GetProperty(dispidUseTransparentColor, VT_BOOL, (void *)&result);
  2413.    return result;
  2414. }
  2415.  
  2416. void CLead::SetUseTransparentColor(BOOL propval)
  2417. {
  2418.    SetProperty(dispidUseTransparentColor, VT_BOOL, propval);
  2419. }
  2420.  
  2421. OLE_COLOR CLead::GetTransparentColor()
  2422. {
  2423.    OLE_COLOR result;
  2424.    GetProperty(dispidTransparentColor, VT_I4, (void *)&result);
  2425.    return result;
  2426. }
  2427.  
  2428. void CLead::SetTransparentColor(OLE_COLOR propval)
  2429. {
  2430.    SetProperty(dispidTransparentColor, VT_I4, propval);
  2431. }
  2432.  
  2433. BOOL CLead::GetPaintRgnOnly()
  2434. {
  2435.    BOOL result;
  2436.    GetProperty(dispidPaintRgnOnly, VT_BOOL, (void *)&result);
  2437.    return result;
  2438. }
  2439.  
  2440. void CLead::SetPaintRgnOnly(BOOL propval)
  2441. {
  2442.    SetProperty(dispidPaintRgnOnly, VT_BOOL, propval);
  2443. }
  2444.  
  2445. float CLead::GetShapeTop()
  2446. {
  2447.    float result;
  2448.    GetProperty(dispidShapeTop, VT_R4, (void *)&result);
  2449.    return result;
  2450. }
  2451.  
  2452. void CLead::SetShapeTop(float propval)
  2453. {
  2454.    SetProperty(dispidShapeTop, VT_R4, propval);
  2455. }
  2456.  
  2457. float CLead::GetShapeLeft()
  2458. {
  2459.    float result;
  2460.    GetProperty(dispidShapeLeft, VT_R4, (void *)&result);
  2461.    return result;
  2462. }
  2463.  
  2464. void CLead::SetShapeLeft(float propval)
  2465. {
  2466.    SetProperty(dispidShapeLeft, VT_R4, propval);
  2467. }
  2468.  
  2469. float CLead::GetShapeWidth()
  2470. {
  2471.    float result;
  2472.    GetProperty(dispidShapeWidth, VT_R4, (void *)&result);
  2473.    return result;
  2474. }
  2475.  
  2476. void CLead::SetShapeWidth(float propval)
  2477. {
  2478.    SetProperty(dispidShapeWidth, VT_R4, propval);
  2479. }
  2480.  
  2481. float CLead::GetShapeHeight()
  2482. {
  2483.    float result;
  2484.    GetProperty(dispidShapeHeight, VT_R4, (void *)&result);
  2485.    return result;
  2486. }
  2487.  
  2488. void CLead::SetShapeHeight(float propval)
  2489. {
  2490.    SetProperty(dispidShapeHeight, VT_R4, propval);
  2491. }
  2492.  
  2493. float CLead::GetShapeBorderThickness()
  2494. {
  2495.    float result;
  2496.    GetProperty(dispidShapeBorderThickness, VT_R4, (void *)&result);
  2497.    return result;
  2498. }
  2499.  
  2500. void CLead::SetShapeBorderThickness(float propval)
  2501. {
  2502.    SetProperty(dispidShapeBorderThickness, VT_R4, propval);
  2503. }
  2504.  
  2505. OLE_COLOR CLead::GetShapeBorderColor()
  2506. {
  2507.    OLE_COLOR result;
  2508.    GetProperty(dispidShapeBorderColor, VT_I4, (void *)&result);
  2509.    return result;
  2510. }
  2511.  
  2512. void CLead::SetShapeBorderColor(OLE_COLOR propval)
  2513. {
  2514.    SetProperty(dispidShapeBorderColor, VT_I4, propval);
  2515. }
  2516.  
  2517. short CLead::GetShapeInnerBandStyle()
  2518. {
  2519.    short result;
  2520.    GetProperty(dispidShapeInnerBandStyle, VT_I2, (void *)&result);
  2521.    return result;
  2522. }
  2523.  
  2524. void CLead::SetShapeInnerBandStyle(short propval)
  2525. {
  2526.    SetProperty(dispidShapeInnerBandStyle, VT_I2, propval);
  2527. }
  2528.  
  2529. float CLead::GetShapeInnerBandThickness()
  2530. {
  2531.    float result;
  2532.    GetProperty(dispidShapeInnerBandThickness, VT_R4, (void *)&result);
  2533.    return result;
  2534. }
  2535.  
  2536. void CLead::SetShapeInnerBandThickness(float propval)
  2537. {
  2538.    SetProperty(dispidShapeInnerBandThickness, VT_R4, propval);
  2539. }
  2540.  
  2541. OLE_COLOR CLead::GetShapeInnerBandHiliteColor()
  2542. {
  2543.    OLE_COLOR result;
  2544.    GetProperty(dispidShapeInnerBandHiliteColor, VT_I4, (void *)&result);
  2545.    return result;
  2546. }
  2547.  
  2548. void CLead::SetShapeInnerBandHiliteColor(OLE_COLOR propval)
  2549. {
  2550.    SetProperty(dispidShapeInnerBandHiliteColor, VT_I4, propval);
  2551. }
  2552.  
  2553. OLE_COLOR CLead::GetShapeInnerBandShadowColor()
  2554. {
  2555.    OLE_COLOR result;
  2556.    GetProperty(dispidShapeInnerBandShadowColor, VT_I4, (void *)&result);
  2557.    return result;
  2558. }
  2559.  
  2560. void CLead::SetShapeInnerBandShadowColor(OLE_COLOR propval)
  2561. {
  2562.    SetProperty(dispidShapeInnerBandShadowColor, VT_I4, propval);
  2563. }
  2564.  
  2565. short CLead::GetShapeBackgroundStyle()
  2566. {
  2567.    short result;
  2568.    GetProperty(dispidShapeBackgroundStyle, VT_I2, (void *)&result);
  2569.    return result;
  2570. }
  2571.  
  2572. void CLead::SetShapeBackgroundStyle(short propval)
  2573. {
  2574.    SetProperty(dispidShapeBackgroundStyle, VT_I2, propval);
  2575. }
  2576.  
  2577. float CLead::GetBackgroundImageTop()
  2578. {
  2579.    float result;
  2580.    GetProperty(dispidBackgroundImageTop, VT_R4, (void *)&result);
  2581.    return result;
  2582. }
  2583.  
  2584. void CLead::SetBackgroundImageTop(float propval)
  2585. {
  2586.    SetProperty(dispidBackgroundImageTop, VT_R4, propval);
  2587. }
  2588.  
  2589. float CLead::GetBackgroundImageLeft()
  2590. {
  2591.    float result;
  2592.    GetProperty(dispidBackgroundImageLeft, VT_R4, (void *)&result);
  2593.    return result;
  2594. }
  2595.  
  2596. void CLead::SetBackgroundImageLeft(float propval)
  2597. {
  2598.    SetProperty(dispidBackgroundImageLeft, VT_R4, propval);
  2599. }
  2600.  
  2601. float CLead::GetBackgroundImageWidth()
  2602. {
  2603.    float result;
  2604.    GetProperty(dispidBackgroundImageWidth, VT_R4, (void *)&result);
  2605.    return result;
  2606. }
  2607.  
  2608. void CLead::SetBackgroundImageWidth(float propval)
  2609. {
  2610.    SetProperty(dispidBackgroundImageWidth, VT_R4, propval);
  2611. }
  2612.  
  2613. float CLead::GetBackgroundImageHeight()
  2614. {
  2615.    float result;
  2616.    GetProperty(dispidBackgroundImageHeight, VT_R4, (void *)&result);
  2617.    return result;
  2618. }
  2619.  
  2620. void CLead::SetBackgroundImageHeight(float propval)
  2621. {
  2622.    SetProperty(dispidBackgroundImageHeight, VT_R4, propval);
  2623. }
  2624.  
  2625. float CLead::GetShadowXDepth()
  2626. {
  2627.    float result;
  2628.    GetProperty(dispidShadowXDepth, VT_R4, (void *)&result);
  2629.    return result;
  2630. }
  2631.  
  2632. void CLead::SetShadowXDepth(float propval)
  2633. {
  2634.    SetProperty(dispidShadowXDepth, VT_R4, propval);
  2635. }
  2636.  
  2637. float CLead::GetShadowYDepth()
  2638. {
  2639.    float result;
  2640.    GetProperty(dispidShadowYDepth, VT_R4, (void *)&result);
  2641.    return result;
  2642. }
  2643.  
  2644. void CLead::SetShadowYDepth(float propval)
  2645. {
  2646.    SetProperty(dispidShadowYDepth, VT_R4, propval);
  2647. }
  2648.  
  2649. OLE_COLOR CLead::GetShadowColor()
  2650. {
  2651.    OLE_COLOR result;
  2652.    GetProperty(dispidShadowColor, VT_I4, (void *)&result);
  2653.    return result;
  2654. }
  2655.  
  2656. void CLead::SetShadowColor(OLE_COLOR propval)
  2657. {
  2658.    SetProperty(dispidShadowColor, VT_I4, propval);
  2659. }
  2660.  
  2661. OLE_COLOR CLead::GetTextHiliteColor()
  2662. {
  2663.    OLE_COLOR result;
  2664.    GetProperty(dispidTextHiliteColor, VT_I4, (void *)&result);
  2665.    return result;
  2666. }
  2667.  
  2668. void CLead::SetTextHiliteColor(OLE_COLOR propval)
  2669. {
  2670.    SetProperty(dispidTextHiliteColor, VT_I4, propval);
  2671. }
  2672.  
  2673. float CLead::GetTextLeft()
  2674. {
  2675.    float result;
  2676.    GetProperty(dispidTextLeft, VT_R4, (void *)&result);
  2677.    return result;
  2678. }
  2679.  
  2680. void CLead::SetTextLeft(float propval)
  2681. {
  2682.    SetProperty(dispidTextLeft, VT_R4, propval);
  2683. }
  2684.  
  2685. float CLead::GetTextTop()
  2686. {
  2687.    float result;
  2688.    GetProperty(dispidTextTop, VT_R4, (void *)&result);
  2689.    return result;
  2690. }
  2691.  
  2692. void CLead::SetTextTop(float propval)
  2693. {
  2694.    SetProperty(dispidTextTop, VT_R4, propval);
  2695. }
  2696.  
  2697. float CLead::GetTextWidth()
  2698. {
  2699.    float result;
  2700.    GetProperty(dispidTextWidth, VT_R4, (void *)&result);
  2701.    return result;
  2702. }
  2703.  
  2704. void CLead::SetTextWidth(float propval)
  2705. {
  2706.    SetProperty(dispidTextWidth, VT_R4, propval);
  2707. }
  2708.  
  2709. float CLead::GetTextHeight()
  2710. {
  2711.    float result;
  2712.    GetProperty(dispidTextHeight, VT_R4, (void *)&result);
  2713.    return result;
  2714. }
  2715.  
  2716. void CLead::SetTextHeight(float propval)
  2717. {
  2718.    SetProperty(dispidTextHeight, VT_R4, propval);
  2719. }
  2720.  
  2721. short CLead::GetTextAngle()
  2722. {
  2723.    short result;
  2724.    GetProperty(dispidTextAngle, VT_I2, (void *)&result);
  2725.    return result;
  2726. }
  2727.  
  2728. void CLead::SetTextAngle(short propval)
  2729. {
  2730.    SetProperty(dispidTextAngle, VT_I2, propval);
  2731. }
  2732.  
  2733. short CLead::GetTextStyle()
  2734. {
  2735.    short result;
  2736.    GetProperty(dispidTextStyle, VT_I2, (void *)&result);
  2737.    return result;
  2738. }
  2739.  
  2740. void CLead::SetTextStyle(short propval)
  2741. {
  2742.    SetProperty(dispidTextStyle, VT_I2, propval);
  2743. }
  2744.  
  2745. short CLead::GetShapeOuterBandStyle()
  2746. {
  2747.    short result;
  2748.    GetProperty(dispidShapeOuterBandStyle, VT_I2, (void *)&result);
  2749.    return result;
  2750. }
  2751.  
  2752. void CLead::SetShapeOuterBandStyle(short propval)
  2753. {
  2754.    SetProperty(dispidShapeOuterBandStyle, VT_I2, propval);
  2755. }
  2756.  
  2757. float CLead::GetShapeOuterBandThickness()
  2758. {
  2759.    float result;
  2760.    GetProperty(dispidShapeOuterBandThickness, VT_R4, (void *)&result);
  2761.    return result;
  2762. }
  2763.  
  2764. void CLead::SetShapeOuterBandThickness(float propval)
  2765. {
  2766.    SetProperty(dispidShapeOuterBandThickness, VT_R4, propval);
  2767. }
  2768.  
  2769. OLE_COLOR CLead::GetShapeOuterBandHiliteColor()
  2770. {
  2771.    OLE_COLOR result;
  2772.    GetProperty(dispidShapeOuterBandHiliteColor, VT_I4, (void *)&result);
  2773.    return result;
  2774. }
  2775.  
  2776. void CLead::SetShapeOuterBandHiliteColor(OLE_COLOR propval)
  2777. {
  2778.    SetProperty(dispidShapeOuterBandHiliteColor, VT_I4, propval);
  2779. }
  2780.  
  2781. OLE_COLOR CLead::GetShapeOuterBandShadowColor()
  2782. {
  2783.    OLE_COLOR result;
  2784.    GetProperty(dispidShapeOuterBandShadowColor, VT_I4, (void *)&result);
  2785.    return result;
  2786. }
  2787.  
  2788. void CLead::SetShapeOuterBandShadowColor(OLE_COLOR propval)
  2789. {
  2790.    SetProperty(dispidShapeOuterBandShadowColor, VT_I4, propval);
  2791. }
  2792.  
  2793. short CLead::GetShapeBorderStyle()
  2794. {
  2795.    short result;
  2796.    GetProperty(dispidShapeBorderStyle, VT_I2, (void *)&result);
  2797.    return result;
  2798. }
  2799.  
  2800. void CLead::SetShapeBorderStyle(short propval)
  2801. {
  2802.    SetProperty(dispidShapeBorderStyle, VT_I2, propval);
  2803. }
  2804.  
  2805. float CLead::GetFrameThickness()
  2806. {
  2807.    float result;
  2808.    GetProperty(dispidFrameThickness, VT_R4, (void *)&result);
  2809.    return result;
  2810. }
  2811.  
  2812. void CLead::SetFrameThickness(float propval)
  2813. {
  2814.    SetProperty(dispidFrameThickness, VT_R4, propval);
  2815. }
  2816.  
  2817. OLE_COLOR CLead::GetFrameColor()
  2818. {
  2819.    OLE_COLOR result;
  2820.    GetProperty(dispidFrameColor, VT_I4, (void *)&result);
  2821.    return result;
  2822. }
  2823.  
  2824. void CLead::SetFrameColor(OLE_COLOR propval)
  2825. {
  2826.    SetProperty(dispidFrameColor, VT_I4, propval);
  2827. }
  2828.  
  2829. short CLead::GetFrameInnerStyle()
  2830. {
  2831.    short result;
  2832.    GetProperty(dispidFrameInnerStyle, VT_I2, (void *)&result);
  2833.    return result;
  2834. }
  2835.  
  2836. void CLead::SetFrameInnerStyle(short propval)
  2837. {
  2838.    SetProperty(dispidFrameInnerStyle, VT_I2, propval);
  2839. }
  2840.  
  2841. float CLead::GetFrameInnerThickness()
  2842. {
  2843.    float result;
  2844.    GetProperty(dispidFrameInnerThickness, VT_R4, (void *)&result);
  2845.    return result;
  2846. }
  2847.  
  2848. void CLead::SetFrameInnerThickness(float propval)
  2849. {
  2850.    SetProperty(dispidFrameInnerThickness, VT_R4, propval);
  2851. }
  2852.  
  2853. OLE_COLOR CLead::GetFrameInnerHiliteColor()
  2854. {
  2855.    OLE_COLOR result;
  2856.    GetProperty(dispidFrameInnerHiliteColor, VT_I4, (void *)&result);
  2857.    return result;
  2858. }
  2859.  
  2860. void CLead::SetFrameInnerHiliteColor(OLE_COLOR propval)
  2861. {
  2862.    SetProperty(dispidFrameInnerHiliteColor, VT_I4, propval);
  2863. }
  2864.  
  2865. OLE_COLOR CLead::GetFrameInnerShadowColor()
  2866. {
  2867.    OLE_COLOR result;
  2868.    GetProperty(dispidFrameInnerShadowColor, VT_I4, (void *)&result);
  2869.    return result;
  2870. }
  2871.  
  2872. void CLead::SetFrameInnerShadowColor(OLE_COLOR propval)
  2873. {
  2874.    SetProperty(dispidFrameInnerShadowColor, VT_I4, propval);
  2875. }
  2876.  
  2877. short CLead::GetFrameOuterStyle()
  2878. {
  2879.    short result;
  2880.    GetProperty(dispidFrameOuterStyle, VT_I2, (void *)&result);
  2881.    return result;
  2882. }
  2883.  
  2884. void CLead::SetFrameOuterStyle(short propval)
  2885. {
  2886.    SetProperty(dispidFrameOuterStyle, VT_I2, propval);
  2887. }
  2888.  
  2889. float CLead::GetFrameOuterThickness()
  2890. {
  2891.    float result;
  2892.    GetProperty(dispidFrameOuterThickness, VT_R4, (void *)&result);
  2893.    return result;
  2894. }
  2895.  
  2896. void CLead::SetFrameOuterThickness(float propval)
  2897. {
  2898.    SetProperty(dispidFrameOuterThickness, VT_R4, propval);
  2899. }
  2900.  
  2901. OLE_COLOR CLead::GetFrameOuterHiliteColor()
  2902. {
  2903.    OLE_COLOR result;
  2904.    GetProperty(dispidFrameOuterHiliteColor, VT_I4, (void *)&result);
  2905.    return result;
  2906. }
  2907.  
  2908. void CLead::SetFrameOuterHiliteColor(OLE_COLOR propval)
  2909. {
  2910.    SetProperty(dispidFrameOuterHiliteColor, VT_I4, propval);
  2911. }
  2912.  
  2913. OLE_COLOR CLead::GetFrameOuterShadowColor()
  2914. {
  2915.    OLE_COLOR result;
  2916.    GetProperty(dispidFrameOuterShadowColor, VT_I4, (void *)&result);
  2917.    return result;
  2918. }
  2919.  
  2920. void CLead::SetFrameOuterShadowColor(OLE_COLOR propval)
  2921. {
  2922.    SetProperty(dispidFrameOuterShadowColor, VT_I4, propval);
  2923. }
  2924.  
  2925. short CLead::GetTextAlign()
  2926. {
  2927.    short result;
  2928.    GetProperty(dispidTextAlign, VT_I2, (void *)&result);
  2929.    return result;
  2930. }
  2931.  
  2932. void CLead::SetTextAlign(short propval)
  2933. {
  2934.    SetProperty(dispidTextAlign, VT_I2, propval);
  2935. }
  2936.  
  2937. BOOL CLead::GetTextWordWrap()
  2938. {
  2939.    BOOL result;
  2940.    GetProperty(dispidTextWordWrap, VT_BOOL, (void *)&result);
  2941.    return result;
  2942. }
  2943.  
  2944. void CLead::SetTextWordWrap(BOOL propval)
  2945. {
  2946.    SetProperty(dispidTextWordWrap, VT_BOOL, propval);
  2947. }
  2948.  
  2949. OLE_HANDLE CLead::GetBitmapAlpha()
  2950. {
  2951.    OLE_HANDLE result;
  2952.    GetProperty(dispidBitmapAlpha, VT_HANDLE, (void *)&result);
  2953.    return result;
  2954. }
  2955.  
  2956. void CLead::SetBitmapAlpha(OLE_HANDLE propval)
  2957. {
  2958.    SetProperty(dispidBitmapAlpha, VT_HANDLE, propval);
  2959. }
  2960.  
  2961. short CLead::GetPaintNotificationDelay()
  2962. {
  2963.    short result;
  2964.    GetProperty(dispidPaintNotificationDelay, VT_I2, (void *)&result);
  2965.    return result;
  2966. }
  2967.  
  2968. void CLead::SetPaintNotificationDelay(short propval)
  2969. {
  2970.    SetProperty(dispidPaintNotificationDelay, VT_I2, propval);
  2971. }
  2972.  
  2973. BOOL CLead::GetTransparent()
  2974. {
  2975.    BOOL result;
  2976.    GetProperty(dispidTransparent, VT_BOOL, (void *)&result);
  2977.    return result;
  2978. }
  2979.  
  2980. void CLead::SetTransparent(BOOL propval)
  2981. {
  2982.    SetProperty(dispidTransparent, VT_BOOL, propval);
  2983. }
  2984.  
  2985. OLE_HANDLE CLead::GetAnimationBitmap()
  2986. {
  2987.    OLE_HANDLE result;
  2988.    GetProperty(dispidAnimationBitmap, VT_HANDLE, (void*)&result);
  2989.    return result;
  2990. }
  2991.  
  2992. void CLead::SetAnimationBitmap(OLE_HANDLE propval)
  2993. {
  2994.    SetProperty(dispidAnimationBitmap, VT_HANDLE, propval);
  2995. }
  2996.  
  2997.  
  2998.  
  2999. /* methods */
  3000. short CLead::Average(short iDim)
  3001. {
  3002.    short   result;
  3003.    static BYTE BASED_CODE parms[] = 
  3004.       VTS_I2  ;
  3005.  
  3006.    InvokeHelper(dispidAverage, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3007.       iDim);   
  3008.       
  3009.    return result;
  3010.  
  3011. OLE_HANDLE CLead::PrintStart()
  3012. {
  3013.    OLE_HANDLE   result;
  3014.  
  3015.    InvokeHelper(dispidPrintStart, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  3016.    
  3017.    return result;
  3018.  
  3019. void CLead::PrintEnd(OLE_HANDLE hDC)
  3020. {
  3021.    static BYTE BASED_CODE parms[] = 
  3022.       VTS_HANDLE  ;
  3023.  
  3024.    InvokeHelper(dispidPrintEnd, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
  3025.       hDC);
  3026.  
  3027. short CLead::Median(short iDim)
  3028. {
  3029.    short   result;
  3030.    static BYTE BASED_CODE parms[] = 
  3031.       VTS_I2  ;
  3032.  
  3033.    InvokeHelper(dispidMedian, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3034.       iDim);   
  3035.       
  3036.    return result;
  3037.  
  3038. short CLead::Contrast(short iChange)
  3039. {
  3040.    short   result;
  3041.    static BYTE BASED_CODE parms[] = 
  3042.       VTS_I2  ;
  3043.  
  3044.    InvokeHelper(dispidContrast, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3045.       iChange);   
  3046.       
  3047.    return result;
  3048.  
  3049. short CLead::Despeckle()
  3050. {
  3051.    short   result;
  3052.  
  3053.    InvokeHelper(dispidDespeckle, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3054.    
  3055.    return result;
  3056.  
  3057. short CLead::Flip()
  3058. {
  3059.    short   result;
  3060.  
  3061.    InvokeHelper(dispidFlip, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3062.    
  3063.    return result;
  3064.  
  3065. short CLead::Grayscale(short iBitsPerPixel)
  3066. {
  3067.    short   result;
  3068.    static BYTE BASED_CODE parms[] = 
  3069.       VTS_I2  ;
  3070.  
  3071.    InvokeHelper(dispidGrayscale, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3072.       iBitsPerPixel);
  3073.  
  3074.    return result;
  3075.  
  3076. short CLead::HistoEqualize()
  3077. {
  3078.    short   result;
  3079.  
  3080.    InvokeHelper(dispidHistoEqualize, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3081.    
  3082.    return result;
  3083.  
  3084. short CLead::AnnFlip(BOOL bUseHorz, float fHorz, BOOL bSelected)
  3085. {
  3086.    short   result;
  3087.    static BYTE BASED_CODE parms[] = 
  3088.       VTS_BOOL VTS_R4 VTS_I2 VTS_BOOL  ;
  3089.  
  3090.    InvokeHelper(dispidAnnFlip, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3091.       bUseHorz, fHorz, bSelected);   
  3092.       
  3093.    return result;
  3094. }
  3095.  
  3096. short CLead::AnnReverse(BOOL bUseVert, float fVert, BOOL bSelected)
  3097. {
  3098.    short   result;
  3099.    static BYTE BASED_CODE parms[] = 
  3100.       VTS_BOOL VTS_R4 VTS_I2 VTS_BOOL  ;
  3101.  
  3102.    InvokeHelper(dispidAnnReverse, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3103.       bUseVert, fVert, bSelected);   
  3104.       
  3105.    return result;
  3106. }
  3107.  
  3108. short CLead::AnnRotate(BOOL bUseCenter, float fCenterX, float fCenterY, float fAngle, BOOL bSelected)
  3109. {
  3110.    short   result;
  3111.    static BYTE BASED_CODE parms[] = 
  3112.       VTS_BOOL VTS_R4 VTS_R4 VTS_R4 VTS_BOOL  ;
  3113.  
  3114.    InvokeHelper(dispidAnnRotate, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3115.       bUseCenter, fCenterX, fCenterY, fAngle, bSelected);   
  3116.       
  3117.    return result;
  3118. }
  3119.  
  3120. short CLead::Hue(short iAngle)
  3121. {
  3122.    short   result;
  3123.    static BYTE BASED_CODE parms[] = 
  3124.       VTS_I2  ;
  3125.  
  3126.    InvokeHelper(dispidHue, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3127.       iAngle);   
  3128.       
  3129.    return result;
  3130.  
  3131. short CLead::Intensity(short iChange)
  3132. {
  3133.    short   result;
  3134.    static BYTE BASED_CODE parms[] = 
  3135.       VTS_I2  ;
  3136.  
  3137.    InvokeHelper(dispidIntensity, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3138.       iChange);   
  3139.       
  3140.    return result;
  3141.  
  3142. short CLead::Invert()
  3143. {
  3144.    short   result;
  3145.  
  3146.    InvokeHelper(dispidInvert, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3147.    
  3148.    return result;
  3149.  
  3150. short CLead::TwainAcquire(OLE_HANDLE hWnd)
  3151. {
  3152.    short   result;
  3153.    static BYTE BASED_CODE parms[] = 
  3154.       VTS_HANDLE  ;
  3155.  
  3156.    InvokeHelper(dispidTwainAcquire, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3157.       hWnd);   
  3158.       
  3159.    return result;
  3160.  
  3161. short CLead::TwainSelect(OLE_HANDLE hWnd)
  3162. {
  3163.    short   result;
  3164.    static BYTE BASED_CODE parms[] = 
  3165.       VTS_HANDLE  ;
  3166.  
  3167.    InvokeHelper(dispidTwainSelect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3168.       hWnd);   
  3169.       
  3170.    return result;
  3171.  
  3172. short CLead::Sharpen(short iChange)
  3173. {
  3174.    short   result;
  3175.    static BYTE BASED_CODE parms[] = 
  3176.       VTS_I2  ;
  3177.  
  3178.    InvokeHelper(dispidSharpen, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3179.       iChange);   
  3180.       
  3181.    return result;
  3182.  
  3183. short CLead::Saturation(short iChange)
  3184. {
  3185.    short   result;
  3186.    static BYTE BASED_CODE parms[] = 
  3187.       VTS_I2  ;
  3188.  
  3189.    InvokeHelper(dispidSaturation, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3190.       iChange);   
  3191.       
  3192.    return result;
  3193.  
  3194. short CLead::Reverse()
  3195. {
  3196.    short   result;
  3197.  
  3198.    InvokeHelper(dispidReverse, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3199.    
  3200.    return result;
  3201.  
  3202. short CLead::ForceRepaint()
  3203. {
  3204.    short   result;
  3205.  
  3206.    InvokeHelper(dispidForceRepaint, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3207.    
  3208.    return result;
  3209.  
  3210. short CLead::Mosaic(short iDim)
  3211. {
  3212.    short   result;
  3213.    static BYTE BASED_CODE parms[] = 
  3214.       VTS_I2  ;
  3215.  
  3216.    InvokeHelper(dispidMosaic, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3217.       iDim);   
  3218.       
  3219.    return result;
  3220.  
  3221. short CLead::SpatialFilter(short iType)
  3222. {
  3223.    short   result;
  3224.    static BYTE BASED_CODE parms[] = 
  3225.       VTS_I2  ;
  3226.  
  3227.    InvokeHelper(dispidSpatialFilter, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3228.       iType);   
  3229.       
  3230.    return result;
  3231.  
  3232. short CLead::BinaryFilter(short iType)
  3233. {
  3234.    short   result;
  3235.    static BYTE BASED_CODE parms[] = 
  3236.       VTS_I2  ;
  3237.  
  3238.    InvokeHelper(dispidBinaryFilter, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3239.       iType);   
  3240.       
  3241.    return result;
  3242.  
  3243. VOID CLead::UnlockSupport(short iType, LPCTSTR pszKey)
  3244. {
  3245.    static BYTE BASED_CODE parms[] = 
  3246.       VTS_I2 VTS_BSTR  ;
  3247.  
  3248.    InvokeHelper(dispidUnlockSupport, DISPATCH_METHOD, VT_EMPTY, (void*)NULL, parms,
  3249.       iType, pszKey);
  3250.       
  3251. }
  3252.  
  3253. BOOL CLead::IsSupportLocked(short iType)
  3254. {
  3255.    BOOL   result;
  3256.    static BYTE BASED_CODE parms[] = 
  3257.       VTS_I2  ;
  3258.  
  3259.    InvokeHelper(dispidIsSupportLocked, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  3260.       iType);
  3261.       
  3262.    return result;
  3263. }
  3264.  
  3265. short CLead::StartFeedLoad(short iBitsPerPixel, short iPage, short iPages)
  3266. {
  3267.    short   result;
  3268.    static BYTE BASED_CODE parms[] = 
  3269.       VTS_I2 VTS_I2 VTS_I2  ;
  3270.  
  3271.    InvokeHelper(dispidStartFeedLoad, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3272.       iBitsPerPixel, iPage, iPages);
  3273.       
  3274.    return result;
  3275. }
  3276.  
  3277. short CLead::StopFeedLoad()
  3278. {
  3279.    short   result;
  3280.  
  3281.    InvokeHelper(dispidStopFeedLoad, DISPATCH_METHOD, VT_I2, (void*)&result, NULL );
  3282.       
  3283.    return result;
  3284. }
  3285.  
  3286. short CLead::SaveMemory(OLE_HANDLE FAR *phMem, short iFormat, short iBitsPerPixel, short iQuality, long FAR *piSize)
  3287. {
  3288.    short   result;
  3289.    static BYTE BASED_CODE parms[] = 
  3290.       VTS_PHANDLE VTS_I2 VTS_I2 VTS_I2 VTS_PI4  ;
  3291.  
  3292.    InvokeHelper(dispidSaveMemory, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3293.       phMem, iFormat, iBitsPerPixel, iQuality, piSize);   
  3294.       
  3295.    return result;
  3296. }
  3297.  
  3298. short CLead::LoadMemory(OLE_HANDLE hMem, short iBitsPerPixel, short iPage, long iSize)
  3299. {
  3300.    short   result;
  3301.    static BYTE BASED_CODE parms[] = 
  3302.       VTS_HANDLE VTS_I2 VTS_I2 VTS_I4  ;
  3303.  
  3304.    InvokeHelper(dispidLoadMemory, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3305.       hMem, iBitsPerPixel, iPage, iSize);
  3306.       
  3307.    return result;
  3308. }
  3309.  
  3310. short CLead::GetMemoryInfo(OLE_HANDLE hMem, short iPage, long iSize)
  3311. {
  3312.    short   result;
  3313.    static BYTE BASED_CODE parms[] = 
  3314.       VTS_HANDLE VTS_I2 VTS_I4  ;
  3315.  
  3316.    InvokeHelper(dispidGetMemoryInfo, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3317.       hMem, iPage, iSize);
  3318.       
  3319.    return result;
  3320. }
  3321.  
  3322. short CLead::FeedLoad(const VARIANT FAR& vBuffer, long iSize)
  3323. {
  3324.    short   result;
  3325.    static BYTE BASED_CODE parms[] = 
  3326.       VTS_VARIANT VTS_I4  ;
  3327.  
  3328.    InvokeHelper(dispidFeedLoad, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3329.       &vBuffer, iSize);
  3330.       
  3331.    return result;
  3332. }
  3333.  
  3334. short CLead::Save(LPCTSTR pszName, short iFormat, short iBitsPerPixel, short iQuality, BOOL bMultiPage)
  3335. {
  3336.    short   result;
  3337.    static BYTE BASED_CODE parms[] = 
  3338.       VTS_BSTR VTS_I2 VTS_I2 VTS_I2 VTS_BOOL  ;
  3339.  
  3340.    InvokeHelper(dispidSave, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3341.       pszName, iFormat, iBitsPerPixel, iQuality, bMultiPage);   
  3342.       
  3343.    return result;
  3344.  
  3345. short CLead::Posterize(short iLevels)
  3346. {
  3347.    short   result;
  3348.    static BYTE BASED_CODE parms[] = 
  3349.       VTS_I2  ;
  3350.  
  3351.    InvokeHelper(dispidPosterize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3352.       iLevels);   
  3353.       
  3354.    return result;
  3355.  
  3356. LPPICTUREDISP CLead::GetPicture()
  3357. {
  3358.    LPPICTUREDISP result;
  3359.  
  3360.    InvokeHelper(dispidGetPicture, DISPATCH_METHOD, VT_PICTURE, (void*)&result, NULL);
  3361.    
  3362.    return result;
  3363.  
  3364. short CLead::SetPicture(LPPICTUREDISP pPicture)
  3365. {
  3366.    short   result;
  3367.    static BYTE BASED_CODE parms[] = 
  3368.       VTS_PICTURE  ;
  3369.  
  3370.    InvokeHelper(dispidSetPicture, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3371.       pPicture);   
  3372.       
  3373.    return result;
  3374.  
  3375. short CLead::Rotate(long iAngle, BOOL bResize, OLE_COLOR crFill)
  3376. {
  3377.    short   result;
  3378.    static BYTE BASED_CODE parms[] = 
  3379.       VTS_I4 VTS_BOOL VTS_I4  ;
  3380.  
  3381.    InvokeHelper(dispidRotate, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3382.       iAngle, bResize, crFill);   
  3383.       
  3384.    return result;
  3385.  
  3386. short CLead::Emboss(short iDirection, short iDepth)
  3387. {
  3388.    short   result;
  3389.    static BYTE BASED_CODE parms[] = 
  3390.       VTS_I2 VTS_I2  ;
  3391.  
  3392.    InvokeHelper(dispidEmboss, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3393.       iDirection, iDepth);   
  3394.       
  3395.    return result;
  3396.  
  3397. short CLead::AddNoise(short iRange, short iChannel)
  3398. {
  3399.    short   result;
  3400.    static BYTE BASED_CODE parms[] = 
  3401.       VTS_I2 VTS_I2  ;
  3402.  
  3403.    InvokeHelper(dispidAddNoise, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3404.       iRange, iChannel);   
  3405.       
  3406.    return result;
  3407.  
  3408. short CLead::IntensityDetect(short iLow, short iHigh)
  3409. {
  3410.    short   result;
  3411.    static BYTE BASED_CODE parms[] = 
  3412.       VTS_I2 VTS_I2  ;
  3413.  
  3414.    InvokeHelper(dispidIntensityDetect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3415.       iLow, iHigh);   
  3416.       
  3417.    return result;
  3418.  
  3419. short CLead::Fill(OLE_COLOR crFill)
  3420. {
  3421.    short   result;
  3422.    static BYTE BASED_CODE parms[] = 
  3423.       VTS_I4  ;
  3424.  
  3425.    InvokeHelper(dispidFill, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3426.       crFill);   
  3427.       
  3428.    return result;
  3429.  
  3430. short CLead::StretchIntensity()
  3431. {
  3432.    short   result;
  3433.  
  3434.    InvokeHelper(dispidStretchIntensity, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3435.    
  3436.    return result;
  3437.  
  3438. short CLead::Deskew()
  3439. {
  3440.    short   result;
  3441.  
  3442.    InvokeHelper(dispidDeskew, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3443.    
  3444.    return result;
  3445.  
  3446. short CLead::GammaCorrect(short iGamma)
  3447. {
  3448.    short   result;
  3449.    static BYTE BASED_CODE parms[] = 
  3450.       VTS_I2  ;
  3451.  
  3452.    InvokeHelper(dispidGammaCorrect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3453.       iGamma);   
  3454.       
  3455.    return result;
  3456.  
  3457. short CLead::Shear(short iAngle, BOOL bHorizontal, OLE_COLOR crFill)
  3458. {
  3459.    short   result;
  3460.    static BYTE BASED_CODE parms[] = 
  3461.       VTS_I2 VTS_BOOL VTS_I4  ;
  3462.  
  3463.    InvokeHelper(dispidShear, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3464.       iAngle, bHorizontal, crFill);   
  3465.       
  3466.    return result;
  3467.  
  3468. short CLead::CreateBitmap(float fWidth, float fHeight, short iBitsPerPixel)
  3469. {
  3470.    short   result;
  3471.    static BYTE BASED_CODE parms[] = 
  3472.       VTS_R4 VTS_R4 VTS_I2  ;
  3473.  
  3474.    InvokeHelper(dispidCreateBitmap, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3475.       fWidth, fHeight, iBitsPerPixel);   
  3476.       
  3477.    return result;
  3478.  
  3479. short CLead::Render(OLE_HANDLE hDC, float fLeft, float fTop, float fWidth, float fHeight)
  3480. {
  3481.    short   result;
  3482.    static BYTE BASED_CODE parms[] = 
  3483.       VTS_HANDLE VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3484.  
  3485.    InvokeHelper(dispidRender, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3486.       hDC, fLeft, fTop, fWidth, fHeight);   
  3487.       
  3488.    return result;
  3489.  
  3490. OLE_HANDLE CLead::GetBitmapDC()
  3491. {
  3492.    OLE_HANDLE   result;
  3493.  
  3494.    InvokeHelper(dispidGetBitmapDC, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  3495.    
  3496.    return result;
  3497.  
  3498. short CLead::ReleaseBitmapDC()
  3499. {
  3500.    short   result;
  3501.  
  3502.    InvokeHelper(dispidReleaseBitmapDC, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3503.    
  3504.    return result;
  3505.  
  3506. short CLead::Halftone(short iType, long iAngle)
  3507. {
  3508.    short   result;
  3509.    static BYTE BASED_CODE parms[] = 
  3510.       VTS_I2 VTS_I4  ;
  3511.  
  3512.    InvokeHelper(dispidHalftone, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3513.       iType, iAngle);   
  3514.       
  3515.    return result;
  3516.  
  3517. short CLead::Size(float fWidth, float fHeight, short iFlags)
  3518. {
  3519.    short   result;
  3520.    static BYTE BASED_CODE parms[] = 
  3521.       VTS_R4 VTS_R4 VTS_I2  ;
  3522.  
  3523.    InvokeHelper(dispidSize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3524.       fWidth, fHeight, iFlags);   
  3525.       
  3526.    return result;
  3527.  
  3528. short CLead::Copy(short iFlags)
  3529. {
  3530.    short   result;
  3531.    static BYTE BASED_CODE parms[] = 
  3532.       VTS_I2  ;
  3533.  
  3534.    InvokeHelper(dispidCopy, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3535.       iFlags);   
  3536.       
  3537.    return result;
  3538.  
  3539. short CLead::Paste(short iFlags)
  3540. {
  3541.    short   result;
  3542.    static BYTE BASED_CODE parms[] = 
  3543.       VTS_I2  ;
  3544.  
  3545.    InvokeHelper(dispidPaste, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3546.       iFlags);   
  3547.       
  3548.    return result;
  3549.  
  3550. short CLead::Load(LPCTSTR pszName, short iBitsPerPixel, short iPage, short iPages)
  3551. {
  3552.    short   result;
  3553.    static BYTE BASED_CODE parms[] = 
  3554.       VTS_BSTR VTS_I2 VTS_I2 VTS_I2 ;
  3555.  
  3556.    InvokeHelper(dispidLoad, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3557.       pszName, iBitsPerPixel, iPage, iPages);   
  3558.       
  3559.    return result;
  3560.  
  3561. short CLead::SetDIB(OLE_HANDLE hDIB)
  3562. {
  3563.    short   result;
  3564.    static BYTE BASED_CODE parms[] = 
  3565.       VTS_HANDLE  ;
  3566.  
  3567.    InvokeHelper(dispidSetDIB, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3568.       hDIB);   
  3569.       
  3570.    return result;
  3571.  
  3572. OLE_HANDLE CLead::GetDIB()
  3573. {
  3574.    OLE_HANDLE   result;
  3575.  
  3576.    InvokeHelper(dispidGetDIB, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  3577.    
  3578.    return result;
  3579.  
  3580. short CLead::SetDDB(OLE_HANDLE hDC, OLE_HANDLE hBitmap, OLE_HANDLE hPalette)
  3581. {
  3582.    short   result;
  3583.    static BYTE BASED_CODE parms[] = 
  3584.       VTS_HANDLE VTS_HANDLE VTS_HANDLE  ;
  3585.  
  3586.    InvokeHelper(dispidSetDDB, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3587.       hDC, hBitmap, hPalette);   
  3588.       
  3589.    return result;
  3590.  
  3591. OLE_HANDLE CLead::GetDDB(OLE_HANDLE hDC)
  3592. {
  3593.    OLE_HANDLE   result;
  3594.    static BYTE BASED_CODE parms[] = 
  3595.       VTS_HANDLE  ;
  3596.  
  3597.    InvokeHelper(dispidGetDDB, DISPATCH_METHOD, VT_HANDLE, (void*)&result, parms,
  3598.       hDC);   
  3599.       
  3600.    return result;
  3601.  
  3602. short CLead::RemapIntensity(short iChannel)
  3603. {
  3604.    short   result;
  3605.    static BYTE BASED_CODE parms[] = 
  3606.       VTS_I2  ;
  3607.  
  3608.    InvokeHelper(dispidRemapIntensity, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3609.       iChannel);   
  3610.       
  3611.    return result;
  3612.  
  3613. short CLead::GetHistogram(short iChannel)
  3614. {
  3615.    short   result;
  3616.    static BYTE BASED_CODE parms[] = 
  3617.       VTS_I2  ;
  3618.  
  3619.    InvokeHelper(dispidGetHistogram, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3620.       iChannel);   
  3621.       
  3622.    return result;
  3623.  
  3624. short CLead::ColorRes(short iBitsPerPixel, short iPalette, short iDither, short iColors)
  3625. {
  3626.    short   result;
  3627.    static BYTE BASED_CODE parms[] = 
  3628.       VTS_I2 VTS_I2 VTS_I2 VTS_I2  ;
  3629.  
  3630.    InvokeHelper(dispidColorRes, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3631.       iBitsPerPixel, iPalette, iDither, iColors);   
  3632.       
  3633.    return result;
  3634.  
  3635. short CLead::Capture(OLE_HANDLE hDC, float fLeft, float fTop, float fWidth, float fHeight)
  3636. {
  3637.    short   result;
  3638.    static BYTE BASED_CODE parms[] = 
  3639.       VTS_HANDLE VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3640.  
  3641.    InvokeHelper(dispidCapture, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3642.       hDC, fLeft, fTop, fWidth, fHeight);   
  3643.       
  3644.    return result;
  3645.  
  3646. short CLead::ColorSeparate(long iFlags)
  3647. {
  3648.    short   result;
  3649.    static BYTE BASED_CODE parms[] = 
  3650.       VTS_I4  ;
  3651.  
  3652.    InvokeHelper(dispidColorSeparate, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3653.       iFlags);   
  3654.       
  3655.    return result;
  3656.  
  3657. short CLead::GetServerBitmap(long pServer)
  3658. {
  3659.    short result;
  3660.    static BYTE parms[] =
  3661.       VTS_I4;
  3662.    InvokeHelper(dispidGetServerBitmap, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3663.       pServer);
  3664.    return result;
  3665. }
  3666.  
  3667. short CLead::SetServerBitmap(long pServer)
  3668. {
  3669.    short result;
  3670.    static BYTE parms[] =
  3671.       VTS_I4;
  3672.    InvokeHelper(dispidSetServerBitmap, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3673.       pServer);
  3674.    return result;
  3675. }
  3676.  
  3677. short CLead::DeleteBitmapListItems(short iIndex, short iCount)
  3678. {
  3679.    short result;
  3680.    static BYTE parms[] =
  3681.       VTS_I2 VTS_I2;
  3682.    InvokeHelper(dispidDeleteBitmapListItems, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3683.       iIndex, iCount);
  3684.    return result;
  3685. }
  3686.  
  3687. short CLead::AnnLoadMemory(OLE_HANDLE hMem, long iSize)
  3688. {
  3689.    short result;
  3690.    static BYTE parms[] =
  3691.       VTS_HANDLE VTS_I4;
  3692.    InvokeHelper(dispidAnnLoadMemory, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3693.       hMem, iSize);
  3694.    return result;
  3695. }
  3696.  
  3697. short CLead::AnnSaveMemory(OLE_HANDLE* phMem, short iFormat, BOOL bSelected, long* piSize)
  3698. {
  3699.    short result;
  3700.    static BYTE parms[] =
  3701.       VTS_PI4 VTS_I2 VTS_BOOL VTS_PI4;
  3702.    InvokeHelper(dispidAnnSaveMemory, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3703.       phMem, iFormat, bSelected, piSize);
  3704.    return result;
  3705. }
  3706.  
  3707. short CLead::DrawEllipse(float fLeft, float fTop, float fWidth, float fHeight)
  3708. {
  3709.    short result;
  3710.    static BYTE parms[] =
  3711.       VTS_R4 VTS_R4 VTS_R4 VTS_R4;
  3712.    InvokeHelper(dispidDrawEllipse, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3713.       fLeft, fTop, fWidth, fHeight);
  3714.    return result;
  3715. }
  3716.  
  3717. short CLead::DrawRectangle(float fLeft, float fTop, float fWidth, float fHeight)
  3718. {
  3719.    short result;
  3720.    static BYTE parms[] =
  3721.       VTS_R4 VTS_R4 VTS_R4 VTS_R4;
  3722.    InvokeHelper(dispidDrawRectangle, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3723.       fLeft, fTop, fWidth, fHeight);
  3724.    return result;
  3725. }
  3726.  
  3727. short CLead::DrawLine(float fX1, float fY1, float fX2, float fY2)
  3728. {
  3729.    short result;
  3730.    static BYTE parms[] =
  3731.       VTS_R4 VTS_R4 VTS_R4 VTS_R4;
  3732.    InvokeHelper(dispidDrawLine, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3733.       fX1, fY1, fX2, fY2);
  3734.    return result;
  3735. }
  3736.  
  3737. short CLead::DrawTextOut(float fX, float fY, LPCSTR pszText)
  3738. {
  3739.    short result;
  3740.    static BYTE parms[] =
  3741.       VTS_R4 VTS_R4 VTS_BSTR;
  3742.    InvokeHelper(dispidDrawTextOut, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3743.       fX, fY, pszText);
  3744.    return result;
  3745. }
  3746.  
  3747. float CLead::DrawTextWidth(LPCSTR pszText)
  3748. {
  3749.    float result;
  3750.    static BYTE parms[] =
  3751.       VTS_BSTR;
  3752.    InvokeHelper(dispidDrawTextWidth, DISPATCH_METHOD, VT_R4, (void *)&result, parms,
  3753.       pszText);
  3754.    return result;
  3755. }
  3756.  
  3757. float CLead::DrawTextHeight(LPCSTR pszText)
  3758. {
  3759.    float result;
  3760.    static BYTE parms[] =
  3761.       VTS_BSTR;
  3762.    InvokeHelper(dispidDrawTextHeight, DISPATCH_METHOD, VT_R4, (void *)&result, parms,
  3763.       pszText);
  3764.    return result;
  3765. }
  3766.  
  3767. short CLead::ZoomToRect(float fLeft, float fTop, float fWidth, float fHeight)
  3768. {
  3769.    short result;
  3770.    static BYTE parms[] =
  3771.       VTS_R4 VTS_R4 VTS_R4 VTS_R4;
  3772.    InvokeHelper(dispidZoomToRect, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3773.       fLeft, fTop, fWidth, fHeight);
  3774.    return result;
  3775. }
  3776.  
  3777. short CLead::Solarize(short iThreshold)
  3778. {
  3779.    short result;
  3780.    static BYTE parms[] =
  3781.       VTS_I2;
  3782.    InvokeHelper(dispidSolarize, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3783.       iThreshold);
  3784.    return result;
  3785. }
  3786.  
  3787. short CLead::AutoTrim(short iThreshold)
  3788. {
  3789.    short result;
  3790.    static BYTE parms[] =
  3791.       VTS_I2;
  3792.    InvokeHelper(dispidAutoTrim, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3793.       iThreshold);
  3794.    return result;
  3795. }
  3796.  
  3797. short CLead::MinFilter(short iDim)
  3798. {
  3799.    short result;
  3800.    static BYTE parms[] =
  3801.       VTS_I2;
  3802.    InvokeHelper(dispidMinFilter, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3803.       iDim);
  3804.    return result;
  3805. }
  3806.  
  3807. short CLead::MaxFilter(short iDim)
  3808. {
  3809.    short result;
  3810.    static BYTE parms[] =
  3811.       VTS_I2;
  3812.    InvokeHelper(dispidMaxFilter, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3813.       iDim);
  3814.    return result;
  3815. }
  3816.  
  3817. short CLead::Oilify(short iDim)
  3818. {
  3819.    short result;
  3820.    static BYTE parms[] =
  3821.       VTS_I2;
  3822.    InvokeHelper(dispidOilify, DISPATCH_METHOD, VT_I2, (void *)&result, parms,
  3823.       iDim);
  3824.    return result;
  3825. }
  3826.  
  3827. short CLead::ColorMerge(long iFlags)
  3828. {
  3829.    short   result;
  3830.    static BYTE BASED_CODE parms[] = 
  3831.       VTS_I4  ;
  3832.  
  3833.    InvokeHelper(dispidColorMerge, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3834.       iFlags);   
  3835.       
  3836.    return result;
  3837.  
  3838. short CLead::Underlay(OLE_HANDLE hBitmap, short iFlags)
  3839. {
  3840.    short   result;
  3841.    static BYTE BASED_CODE parms[] = 
  3842.       VTS_HANDLE VTS_I2  ;
  3843.  
  3844.    InvokeHelper(dispidUnderlay, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3845.       hBitmap, iFlags);   
  3846.       
  3847.    return result;
  3848.  
  3849. short CLead::Combine(float fLeft, float fTop, float fWidth, float fHeight, OLE_HANDLE hBitmap, float fSrcLeft, float fSrcTop, long iFlags)
  3850. {
  3851.    short   result;
  3852.    static BYTE BASED_CODE parms[] = 
  3853.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_HANDLE VTS_R4 VTS_R4 VTS_I4  ;
  3854.  
  3855.    InvokeHelper(dispidCombine, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3856.       fLeft, fTop, fWidth, fHeight, hBitmap, fSrcLeft, fSrcTop, iFlags);   
  3857.       
  3858.    return result;
  3859.  
  3860. short CLead::SetDstRect(float fLeft, float fTop, float fWidth, float fHeight)
  3861. {
  3862.    short   result;
  3863.    static BYTE BASED_CODE parms[] = 
  3864.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3865.  
  3866.    InvokeHelper(dispidSetDstRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3867.       fLeft, fTop, fWidth, fHeight);   
  3868.       
  3869.    return result;
  3870.  
  3871. short CLead::SetDstClipRect(float fLeft, float fTop, float fWidth, float fHeight)
  3872. {
  3873.    short   result;
  3874.    static BYTE BASED_CODE parms[] = 
  3875.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3876.  
  3877.    InvokeHelper(dispidSetDstClipRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3878.       fLeft, fTop, fWidth, fHeight);   
  3879.       
  3880.    return result;
  3881.  
  3882. short CLead::SetSrcRect(float fLeft, float fTop, float fWidth, float fHeight)
  3883. {
  3884.    short   result;
  3885.    static BYTE BASED_CODE parms[] = 
  3886.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3887.  
  3888.    InvokeHelper(dispidSetSrcRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3889.       fLeft, fTop, fWidth, fHeight);   
  3890.       
  3891.    return result;
  3892.  
  3893. short CLead::SetSrcClipRect(float fLeft, float fTop, float fWidth, float fHeight)
  3894. {
  3895.    short   result;
  3896.    static BYTE BASED_CODE parms[] = 
  3897.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3898.  
  3899.    InvokeHelper(dispidSetSrcClipRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3900.       fLeft, fTop, fWidth, fHeight);   
  3901.       
  3902.    return result;
  3903.  
  3904. short CLead::Trim(float fLeft, float fTop, float fWidth, float fHeight)
  3905. {
  3906.    short   result;
  3907.    static BYTE BASED_CODE parms[] = 
  3908.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3909.  
  3910.    InvokeHelper(dispidTrim, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3911.       fLeft, fTop, fWidth, fHeight);   
  3912.       
  3913.    return result;
  3914.  
  3915. short CLead::HistoContrast(short iChange)
  3916. {
  3917.    short   result;
  3918.    static BYTE BASED_CODE parms[] = 
  3919.       VTS_I2  ;
  3920.  
  3921.    InvokeHelper(dispidHistoContrast, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3922.       iChange);   
  3923.       
  3924.    return result;
  3925.  
  3926. short CLead::GetFileInfo(LPCTSTR pszName, short iPage)
  3927. {
  3928.    short   result;
  3929.    static BYTE BASED_CODE parms[] = 
  3930.       VTS_BSTR VTS_I2  ;
  3931.  
  3932.    InvokeHelper(dispidGetFileInfo, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3933.       pszName, iPage);   
  3934.       
  3935.    return result;
  3936.  
  3937. short CLead::SaveWithStamp(LPCTSTR pszName, short iFormat, short iBitsPerPixel, short iQuality, float fStampWidth, float fStampHeight, short iStampBits)
  3938. {
  3939.    short   result;
  3940.    static BYTE BASED_CODE parms[] = 
  3941.       VTS_BSTR VTS_I2 VTS_I2 VTS_I2 VTS_R4 VTS_R4 VTS_I2  ;
  3942.  
  3943.    InvokeHelper(dispidSaveWithStamp, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3944.       pszName, iFormat, iBitsPerPixel, iQuality, fStampWidth, fStampHeight, iStampBits);   
  3945.       
  3946.    return result;
  3947.  
  3948. short CLead::LoadStamp(LPCTSTR pszName)
  3949. {
  3950.    short   result;
  3951.    static BYTE BASED_CODE parms[] = 
  3952.       VTS_BSTR  ;
  3953.  
  3954.    InvokeHelper(dispidLoadStamp, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  3955.       pszName);   
  3956.       
  3957.    return result;
  3958.  
  3959. void CLead::SetRubberBandRect(float fLeft, float fTop, float fWidth, float fHeight)
  3960. {
  3961.    static BYTE BASED_CODE parms[] = 
  3962.       VTS_R4 VTS_R4 VTS_R4 VTS_R4  ;
  3963.  
  3964.    InvokeHelper(dispidSetRubberBandRect, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
  3965.       fLeft, fTop, fWidth, fHeight);
  3966. }
  3967.  
  3968. OLE_HANDLE CLead::GetClientDC()
  3969. {
  3970.    OLE_HANDLE   result;
  3971.  
  3972.    InvokeHelper(dispidGetClientDC, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  3973.    
  3974.    return result;
  3975.  
  3976. short CLead::ReleaseClientDC()
  3977. {
  3978.    short   result;
  3979.  
  3980.    InvokeHelper(dispidReleaseClientDC, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  3981.    
  3982.    return result;
  3983.  
  3984. OLE_HANDLE CLead::GetPalette(OLE_HANDLE hDC)
  3985. {
  3986.    OLE_HANDLE   result;
  3987.    static BYTE BASED_CODE parms[] = 
  3988.       VTS_HANDLE  ;
  3989.  
  3990.    InvokeHelper(dispidGetPalette, DISPATCH_METHOD, VT_HANDLE, (void*)&result, parms,
  3991.       hDC);   
  3992.       
  3993.    return result;
  3994.  
  3995. void CLead::dbAddNew()
  3996. {
  3997.    InvokeHelper(dispidDbAddNew, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  3998. }
  3999.  
  4000. void CLead::dbDelete()
  4001. {
  4002.    InvokeHelper(dispidDbDelete, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4003. }
  4004. void CLead::dbEdit()
  4005. {
  4006.    InvokeHelper(dispidDbEdit, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4007. }
  4008. void CLead::dbMove(long lRows)
  4009. {
  4010.    static BYTE BASED_CODE parms[] = 
  4011.       VTS_I4  ;
  4012.  
  4013.    InvokeHelper(dispidDbMove, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
  4014.       lRows);
  4015. }
  4016. void CLead::dbMoveFirst()
  4017. {
  4018.    InvokeHelper(dispidDbMoveFirst, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4019. }
  4020. void CLead::dbMoveLast()
  4021. {
  4022.    InvokeHelper(dispidDbMoveLast, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4023. }
  4024. void CLead::dbMoveNext()
  4025. {
  4026.    InvokeHelper(dispidDbMoveNext, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4027. }
  4028. void CLead::dbMovePrev()
  4029. {
  4030.    InvokeHelper(dispidDbMovePrev, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4031. }
  4032. void CLead::dbClose()
  4033. {
  4034.    InvokeHelper(dispidDbClose, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4035. }
  4036. OLE_COLOR CLead::GetBitmapPalette(short iIndex)
  4037. {
  4038.    OLE_COLOR   result;
  4039.    static BYTE BASED_CODE parms[] = 
  4040.       VTS_I2  ;
  4041.  
  4042.    InvokeHelper(dispidBitmapPalette, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4043.       iIndex);
  4044.    return result;
  4045.  
  4046. void CLead::SetBitmapPalette(short iIndex, OLE_COLOR param1)
  4047. {
  4048.    static BYTE BASED_CODE parms[] = 
  4049.       VTS_I2 VTS_I4  ;
  4050.  
  4051.    InvokeHelper(dispidBitmapPalette, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4052.       iIndex, param1);
  4053. }
  4054.  
  4055. short CLead::GetRemapTable(short iIndex)
  4056. {
  4057.    short   result;
  4058.    static BYTE BASED_CODE parms[] = 
  4059.       VTS_I2  ;
  4060.  
  4061.    InvokeHelper(dispidRemapTable, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4062.       iIndex);
  4063.    return result;
  4064.  
  4065. void CLead::SetRemapTable(short iIndex, short param1)
  4066. {
  4067.    static BYTE BASED_CODE parms[] = 
  4068.       VTS_I2 VTS_I2  ;
  4069.  
  4070.    InvokeHelper(dispidRemapTable, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4071.       iIndex, param1);
  4072. }
  4073.  
  4074. long CLead::GetHistogramTable(short iIndex)
  4075. {
  4076.    long   result;
  4077.    static BYTE BASED_CODE parms[] = 
  4078.       VTS_I2  ;
  4079.  
  4080.    InvokeHelper(dispidHistogramTable, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4081.       iIndex);
  4082.    return result;
  4083.  
  4084. void CLead::SetHistogramTable(short iIndex, long param1)
  4085. {
  4086.    static BYTE BASED_CODE parms[] = 
  4087.       VTS_I2 VTS_I4  ;
  4088.  
  4089.    InvokeHelper(dispidHistogramTable, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4090.       iIndex, param1);
  4091. }
  4092.  
  4093. OLE_COLOR CLead::GetUserPalette(short iIndex)
  4094. {
  4095.    OLE_COLOR   result;
  4096.    static BYTE BASED_CODE parms[] = 
  4097.       VTS_I2  ;
  4098.  
  4099.    InvokeHelper(dispidUserPalette, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4100.       iIndex);
  4101.    return result;
  4102.  
  4103. void CLead::SetUserPalette(short iIndex, OLE_COLOR param1)
  4104. {
  4105.    static BYTE BASED_CODE parms[] = 
  4106.       VTS_I2 VTS_I4  ;
  4107.  
  4108.    InvokeHelper(dispidUserPalette, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4109.       iIndex, param1);
  4110. }
  4111.  
  4112. OLE_HANDLE CLead::GetColorPlanes(short iIndex)
  4113. {
  4114.    OLE_HANDLE   result;
  4115.    static BYTE BASED_CODE parms[] = 
  4116.       VTS_I2  ;
  4117.  
  4118.    InvokeHelper(dispidColorPlanes, DISPATCH_METHOD, VT_HANDLE, (void*)&result, parms,
  4119.       iIndex);
  4120.    return result;
  4121.  
  4122. void CLead::SetColorPlanes(short iIndex, OLE_HANDLE param1)
  4123. {
  4124.    static BYTE BASED_CODE parms[] = 
  4125.       VTS_I2 VTS_HANDLE  ;
  4126.  
  4127.    InvokeHelper(dispidColorPlanes, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4128.       iIndex, param1);
  4129. }
  4130.  
  4131. BOOL CLead::GetInfoPCDRes(short iIndex)
  4132. {
  4133.    BOOL   result;
  4134.    static BYTE BASED_CODE parms[] = 
  4135.       VTS_I2  ;
  4136.  
  4137.    InvokeHelper(dispidInfoPCDRes, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  4138.       iIndex);
  4139.    return result;
  4140.  
  4141. BOOL CLead::dbRequery()
  4142. {
  4143.    BOOL   result;
  4144.  
  4145.    InvokeHelper(dispidDbRequery, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL);
  4146.    
  4147.    return result;
  4148.  
  4149. BOOL CLead::dbOpen(LPCTSTR pszConnect, LPCTSTR pszSQL, LPCTSTR pszField, long iOptions)
  4150. {
  4151.    BOOL   result;
  4152.    static BYTE BASED_CODE parms[] = 
  4153.       VTS_BSTR VTS_BSTR VTS_BSTR VTS_I4  ;
  4154.  
  4155.    InvokeHelper(dispidDbOpen, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  4156.       pszConnect, pszSQL, pszField, iOptions);   
  4157.       
  4158.    return result;
  4159.  
  4160. short CLead::dbUpdate(short iFormat, short iBitsPerPixel, short iQuality)
  4161. {
  4162.    short   result;
  4163.    static BYTE BASED_CODE parms[] = 
  4164.       VTS_I2 VTS_I2 VTS_I2  ;
  4165.  
  4166.    InvokeHelper(dispidDbUpdate, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4167.       iFormat, iBitsPerPixel, iQuality);   
  4168.       
  4169.    return result;
  4170.  
  4171. void CLead::AboutBox()
  4172. {
  4173.    InvokeHelper(0xFFFFFDD8, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
  4174. }
  4175.  
  4176. short CLead::TwainEnumSources(OLE_HANDLE hWnd)
  4177. {
  4178.    short result;
  4179.    static BYTE BASED_CODE parms[] = 
  4180.       VTS_HANDLE  ;
  4181.  
  4182.    InvokeHelper(dispidTwainEnumSources, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4183.       hWnd);
  4184.    return result;
  4185.  
  4186. short CLead::TwainRealize(OLE_HANDLE hWnd)
  4187. {
  4188.    short result;
  4189.    static BYTE BASED_CODE parms[] = 
  4190.       VTS_HANDLE  ;
  4191.  
  4192.    InvokeHelper(dispidTwainRealize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4193.       hWnd);
  4194.    return result;
  4195.  
  4196. BOOL CLead::DeleteRgnHandle(OLE_HANDLE hRgn)
  4197. {
  4198.    BOOL result;
  4199.    static BYTE BASED_CODE parms[] = 
  4200.       VTS_HANDLE  ;
  4201.  
  4202.    InvokeHelper(dispidDeleteRgnHandle, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  4203.       hRgn);
  4204.    return result;
  4205. }
  4206.  
  4207. short CLead::FreeRgn()
  4208. {
  4209.    short result;
  4210.  
  4211.    InvokeHelper(dispidFreeRgn, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  4212.    return result;
  4213. }
  4214.  
  4215. long CLead::GetRgnArea()
  4216. {
  4217.    long result;
  4218.  
  4219.    InvokeHelper(dispidGetRgnArea, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
  4220.    return result;
  4221. }
  4222.  
  4223. OLE_HANDLE CLead::GetRgnHandle()
  4224. {
  4225.    OLE_HANDLE result;
  4226.  
  4227.    InvokeHelper(dispidGetRgnHandle, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  4228.    return result;
  4229. }
  4230.  
  4231. BOOL CLead::IsPtInRgn(float fx, float fy)
  4232. {
  4233.    BOOL result;
  4234.    static BYTE BASED_CODE parms[] = 
  4235.       VTS_R4 VTS_R4 ;
  4236.  
  4237.    InvokeHelper(dispidIsPtInRgn, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  4238.       fx, fy);
  4239.    return result;
  4240. }
  4241.  
  4242. short CLead::OffsetRgn(float fDx, float fDy)
  4243. {
  4244.    short result;
  4245.    static BYTE BASED_CODE parms[] = 
  4246.       VTS_R4 VTS_R4 ;
  4247.  
  4248.    InvokeHelper(dispidOffsetRgn, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4249.       fDx, fDy);
  4250.    return result;
  4251. }
  4252.  
  4253. short CLead::SetRgnColor(OLE_COLOR crMatch, short iCombineMode)
  4254. {
  4255.    short result;
  4256.    static BYTE BASED_CODE parms[] = 
  4257.       VTS_I4 VTS_I2 ;
  4258.  
  4259.    InvokeHelper(dispidSetRgnColor, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4260.       crMatch, iCombineMode);
  4261.    return result;
  4262. }
  4263.  
  4264. short CLead::SetRgnHandle(OLE_HANDLE hRgn, float fDx, float fDy, short iCombineMode)
  4265. {
  4266.    short result;
  4267.    static BYTE BASED_CODE parms[] = 
  4268.       VTS_HANDLE VTS_R4 VTS_R4 VTS_I2 ;
  4269.  
  4270.    InvokeHelper(dispidSetRgnHandle, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4271.       hRgn, fDx, fDy, iCombineMode);
  4272.    return result;
  4273. }
  4274.  
  4275. short CLead::SetRgnEllipse(float fLeft, float fTop, float fWidth, float fHeight, short iCombineMode)
  4276. {
  4277.    short result;
  4278.    static BYTE BASED_CODE parms[] = 
  4279.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_I2 ;
  4280.  
  4281.    InvokeHelper(dispidSetRgnEllipse, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4282.       fLeft, fTop, fWidth, fHeight, iCombineMode );
  4283.    return result;
  4284. }
  4285.  
  4286. short CLead::SetRgnRect(float fLeft, float fTop, float fWidth, float fHeight, short iCombineMode)
  4287. {
  4288.    short result;
  4289.    static BYTE BASED_CODE parms[] = 
  4290.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_I2 ;
  4291.  
  4292.    InvokeHelper(dispidSetRgnRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4293.       fLeft, fTop, fWidth, fHeight, iCombineMode );
  4294.    return result;
  4295. }
  4296.  
  4297. short CLead::SetRgnRoundRect(float fLeft, float fTop, float fWidth, float fHeight, float fWidthEllipse, float fHeightEllipse, short iCombineMode)
  4298. {
  4299.    short result;
  4300.    static BYTE BASED_CODE parms[] = 
  4301.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_I2 ;
  4302.  
  4303.    InvokeHelper(dispidSetRgnRoundRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4304.       fLeft, fTop, fWidth, fHeight, iCombineMode );
  4305.    return result;
  4306. }
  4307.  
  4308. BOOL CLead::IsPtInFloater(float fx, float fy)
  4309. {
  4310.    BOOL result;
  4311.    static BYTE BASED_CODE parms[] = 
  4312.       VTS_R4 VTS_R4 ;
  4313.  
  4314.    InvokeHelper(dispidIsPtInFloater, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  4315.       fx, fy);
  4316.    return result;
  4317. }
  4318.  
  4319. OLE_HANDLE CLead::GetFloaterHandle()
  4320. {
  4321.    OLE_HANDLE result;
  4322.  
  4323.    InvokeHelper(dispidGetFloaterHandle, DISPATCH_METHOD, VT_HANDLE, (void*)&result, NULL);
  4324.    return result;
  4325. }
  4326.  
  4327. short CLead::SetFloaterDstRect(float fLeft, float fTop, float fWidth, float fHeight)
  4328. {
  4329.    short result;
  4330.    static BYTE BASED_CODE parms[] = 
  4331.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 ;
  4332.  
  4333.    InvokeHelper(dispidSetFloaterDstRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4334.             fLeft, fTop, fWidth, fHeight );
  4335.    return result;
  4336. }
  4337.  
  4338. short CLead::SetFloaterDstClipRect(float fLeft, float fTop, float fWidth, float fHeight)
  4339. {
  4340.    short result;
  4341.    static BYTE BASED_CODE parms[] = 
  4342.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 ;
  4343.  
  4344.    InvokeHelper(dispidSetFloaterDstClipRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4345.             fLeft, fTop, fWidth, fHeight );
  4346.    return result;
  4347. }
  4348.  
  4349. float CLead::GetPolygonX(short iIndex)                // CLead Property implemented via Methods
  4350. {
  4351.    float result;
  4352.    static BYTE BASED_CODE parms[] = 
  4353.       VTS_I2  ;
  4354.  
  4355.    InvokeHelper(dispidPolygonX, DISPATCH_METHOD, VT_R4, (void*)&result, parms,
  4356.       iIndex);
  4357.    return result;
  4358.  
  4359. void CLead::SetPolygonX(short iIndex, float newValue) // PolygonX Property implemented via Methods
  4360. {
  4361.    static BYTE BASED_CODE parms[] = 
  4362.       VTS_I2 VTS_R4  ;
  4363.  
  4364.    InvokeHelper(dispidPolygonX, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4365.       iIndex, newValue);
  4366. }
  4367.  
  4368. float CLead::GetPolygonY(short iIndex)                // CLead Property implemented via Methods
  4369. {
  4370.    float result;
  4371.    static BYTE BASED_CODE parms[] = 
  4372.       VTS_I2  ;
  4373.  
  4374.    InvokeHelper(dispidPolygonY, DISPATCH_METHOD, VT_R4, (void*)&result, parms,
  4375.       iIndex);
  4376.    return result;
  4377.  
  4378. void CLead::SetPolygonY(short iIndex, float newValue) // PolygonX Property implemented via Methods
  4379. {
  4380.    static BYTE BASED_CODE parms[] = 
  4381.       VTS_I2 VTS_R4  ;
  4382.  
  4383.    InvokeHelper(dispidPolygonY, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4384.       iIndex, newValue);
  4385. }
  4386.  
  4387. short CLead::SetRgnPolygon(short iFillMode, short iCombineMode)
  4388. {
  4389.    short result;
  4390.    static BYTE BASED_CODE parms[] = 
  4391.       VTS_I2 VTS_I2 ;
  4392.  
  4393.    InvokeHelper(dispidSetRgnPolygon, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4394.       iFillMode, iCombineMode);
  4395.    return result;
  4396. }
  4397.  
  4398. short CLead::RepaintRect(float fLeft, float fTop, float fWidth, float fHeight, BOOL bErase)
  4399. {
  4400.    short result;
  4401.    static BYTE BASED_CODE parms[] = 
  4402.       VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_BOOL;
  4403.  
  4404.    InvokeHelper(dispidRepaintRect, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4405.       fLeft, fTop, fWidth, fHeight, bErase);
  4406.    return result;
  4407. }
  4408.  
  4409.  
  4410. CString CLead::GetTwainSourceList(short iIndex)
  4411. {
  4412.    CString result;
  4413.    static BYTE BASED_CODE parms[] = 
  4414.       VTS_I2 ;
  4415.  
  4416.    InvokeHelper(dispidTwainSourceList, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
  4417.       iIndex);
  4418.    return result;
  4419.  
  4420. short CLead::AnnSetTag(OLE_HANDLE hObject, long iTag)
  4421. {
  4422.    short result;
  4423.    static BYTE parms[] =
  4424.       VTS_HANDLE VTS_I4;
  4425.    InvokeHelper(dispidAnnSetTag, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4426.       hObject, iTag);
  4427.    return result;
  4428. }
  4429.  
  4430. long CLead::AnnGetTag(OLE_HANDLE hObject)
  4431. {
  4432.    long result;
  4433.    static BYTE parms[] =
  4434.       VTS_HANDLE;
  4435.    InvokeHelper(dispidAnnGetTag, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4436.       hObject);
  4437.    return result;
  4438. }
  4439.  
  4440. short CLead::AnnGetType(OLE_HANDLE hObject)
  4441. {
  4442.    short result;
  4443.    static BYTE parms[] =
  4444.       VTS_HANDLE;
  4445.    InvokeHelper(dispidAnnGetType, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4446.       hObject);
  4447.    return result;
  4448. }
  4449.  
  4450. short CLead::AnnSave(LPCTSTR pszFile, short iFormat, BOOL fSelected)
  4451. {
  4452.    short result;
  4453.    static BYTE parms[] =
  4454.       VTS_BSTR VTS_I2 VTS_BOOL;
  4455.    InvokeHelper(dispidAnnSave, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4456.       pszFile, iFormat, fSelected);
  4457.    return result;
  4458. }
  4459.  
  4460. short CLead::AnnLoad(LPCTSTR pszFile)
  4461. {
  4462.    short result;
  4463.    static BYTE parms[] =
  4464.       VTS_BSTR;
  4465.    InvokeHelper(dispidAnnLoad, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4466.       pszFile);
  4467.    return result;
  4468. }
  4469.  
  4470. short CLead::AnnCopy(short iFormat, BOOL fSelected, BOOL fEmpty)
  4471. {
  4472.    short result;
  4473.    static BYTE parms[] =
  4474.       VTS_I2 VTS_BOOL VTS_BOOL;
  4475.    InvokeHelper(dispidAnnCopy, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4476.       iFormat, fSelected, fEmpty);
  4477.    return result;
  4478. }
  4479.  
  4480. short CLead::AnnPaste()
  4481. {
  4482.    short result;
  4483.    InvokeHelper(dispidAnnPaste, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  4484.    return result;
  4485. }
  4486.  
  4487. short CLead::AnnRealize(BOOL fRedactOnly)
  4488. {
  4489.    short result;
  4490.    static BYTE parms[] =
  4491.       VTS_BOOL;
  4492.    InvokeHelper(dispidAnnRealize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4493.       fRedactOnly);
  4494.    return result;
  4495. }
  4496.  
  4497. short CLead::AnnSetAutoText(short iItem, LPCTSTR pszText)
  4498. {
  4499.    short result;
  4500.    static BYTE parms[] =
  4501.       VTS_I2 VTS_BSTR;
  4502.    InvokeHelper(dispidAnnSetAutoText, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4503.       iItem, pszText);
  4504.    return result;
  4505. }
  4506.  
  4507. CString CLead::AnnGetAutoText(short iItem)
  4508. {
  4509.    CString  result;
  4510.    static BYTE parms[] =
  4511.       VTS_I2;
  4512.    InvokeHelper(dispidAnnGetAutoText, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
  4513.       iItem);
  4514.    return result;
  4515. }
  4516.  
  4517. short CLead::ColorResList(short iBitsPerPixel, short iPalette, short iDither, short iColors)
  4518. {
  4519.    short  result;
  4520.    static BYTE parms[] =
  4521.       VTS_I2 VTS_I2 VTS_I2 VTS_I2 ;
  4522.    InvokeHelper(dispidColorResList, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4523.       iBitsPerPixel, iPalette, iDither, iColors);
  4524.    return result;
  4525. }
  4526.  
  4527. long CLead::GetColorCount()
  4528. {
  4529.    long  result;
  4530.    InvokeHelper(dispidGetColorCount, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
  4531.    return result;
  4532. }
  4533.  
  4534. short CLead::InsertBitmapListItem(short iIndex, OLE_HANDLE hBitmap)
  4535. {
  4536.    short  result;
  4537.    static BYTE parms[] =
  4538.       VTS_I2 VTS_HANDLE;
  4539.    InvokeHelper(dispidInsertBitmapListItem, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4540.       iIndex, hBitmap);
  4541.    return result;
  4542. }
  4543.  
  4544. short CLead::EnumDimensions(LPCTSTR pszFile)
  4545. {
  4546.    short  result;
  4547.    static BYTE parms[] =
  4548.       VTS_BSTR;
  4549.    InvokeHelper(dispidEnumDimensions, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4550.       pszFile);
  4551.    return result;
  4552. }
  4553.  
  4554. short CLead::SetDimension(short iFormat, float fWidth, float fHeight)
  4555. {
  4556.    short  result;
  4557.    static BYTE parms[] =
  4558.       VTS_I2 VTS_R4 VTS_R4;
  4559.    InvokeHelper(dispidSetDimension, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4560.       iFormat, fWidth, fHeight);
  4561.    return result;
  4562. }
  4563.  
  4564. short CLead::GetDimension(short iFormat)
  4565. {
  4566.    short  result;
  4567.    static BYTE parms[] =
  4568.       VTS_I2;
  4569.    InvokeHelper(dispidGetDimension, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4570.       iFormat);
  4571.    return result;
  4572. }
  4573.  
  4574. long CLead::AnnGetPointCount(OLE_HANDLE hObject)
  4575. {
  4576.    long result;
  4577.    static BYTE parms[] =
  4578.       VTS_HANDLE;
  4579.    InvokeHelper(dispidAnnGetPointCount, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4580.       hObject);
  4581.    return result;
  4582. }
  4583.  
  4584. VARIANT CLead::AnnGetPointX(OLE_HANDLE hObject)
  4585. {
  4586.    VARIANT result;
  4587.    static BYTE parms[] =
  4588.       VTS_HANDLE;
  4589.    InvokeHelper(dispidAnnGetPointX, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms,
  4590.       hObject);
  4591.    return result;
  4592. }
  4593.  
  4594. VARIANT CLead::AnnGetPointY(OLE_HANDLE hObject)
  4595. {
  4596.    VARIANT result;
  4597.    static BYTE parms[] =
  4598.       VTS_HANDLE;
  4599.    InvokeHelper(dispidAnnGetPointY, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms,
  4600.       hObject);
  4601.    return result;
  4602. }
  4603.  
  4604. short CLead::AnnGetSelectCount()
  4605. {
  4606.    short result;
  4607.    InvokeHelper(dispidAnnGetSelectCount, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  4608.    return result;
  4609. }
  4610.  
  4611. VARIANT CLead::AnnGetSelectList()
  4612. {
  4613.    VARIANT result;
  4614.    InvokeHelper(dispidAnnGetSelectList, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
  4615.    return result;
  4616. }
  4617.  
  4618. short CLead::FastRotate(short iAngle)
  4619. {
  4620.    short result;
  4621.    static BYTE parms[] =
  4622.       VTS_I2;
  4623.    InvokeHelper(dispidFastRotate, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4624.       iAngle);
  4625.    return result;
  4626. }
  4627.  
  4628. short CLead::AnnMove(float dxOffset, float dyOffset, BOOL bSelected)
  4629. {
  4630.    short result;
  4631.    static BYTE parms[] =
  4632.       VTS_R4 VTS_R4 VTS_BOOL;
  4633.    InvokeHelper(dispidAnnMove, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4634.       dxOffset, dyOffset, bSelected);
  4635.    return result;
  4636. }
  4637.  
  4638. short CLead::DrawShape(short uShape, OLE_HANDLE BackgroundImage)
  4639. {
  4640.    short result;
  4641.    static BYTE parms[] =
  4642.       VTS_I2 VTS_HANDLE;
  4643.    InvokeHelper(dispidDrawShape, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4644.       uShape, BackgroundImage);
  4645.    return result;
  4646. }
  4647.  
  4648. short CLead::DrawText(LPCTSTR szText, OLE_HANDLE BackgroundImage)
  4649. {
  4650.    short result;
  4651.    static BYTE parms[] =
  4652.       VTS_BSTR VTS_HANDLE;
  4653.    InvokeHelper(dispidDrawText, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  4654.       szText, BackgroundImage);
  4655.    return result;
  4656. }
  4657.  
  4658. /* Properties with parameters */
  4659.  
  4660. OLE_COLOR CLead::GetAnimationPalette(short iIndex)
  4661. {
  4662.    OLE_COLOR  result;
  4663.    static BYTE parms[] =
  4664.       VTS_I2;
  4665.    InvokeHelper(dispidAnimationPalette, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  4666.       iIndex);
  4667.    return result;
  4668. }
  4669.  
  4670. void CLead::SetAnimationPalette(short iIndex, OLE_COLOR nNewValue)
  4671. {
  4672.    static BYTE parms[] =
  4673.       VTS_I2 VTS_I4;
  4674.    InvokeHelper(dispidAnimationPalette, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4675.       iIndex, nNewValue);
  4676. }
  4677.  
  4678. float CLead::GetDimensionWidth(short iIndex)
  4679. {
  4680.    float  result;
  4681.    static BYTE parms[] =
  4682.       VTS_I2;
  4683.    InvokeHelper(dispidDimensionWidth, DISPATCH_METHOD, VT_R4, (void*)&result, parms,
  4684.       iIndex);
  4685.    return result;
  4686. }
  4687.  
  4688. float CLead::GetDimensionHeight(short iIndex)
  4689. {
  4690.    float  result;
  4691.    static BYTE parms[] =
  4692.       VTS_I2;
  4693.    InvokeHelper(dispidDimensionHeight, DISPATCH_METHOD, VT_R4, (void*)&result, parms,
  4694.       iIndex);
  4695.    return result;
  4696. }
  4697.  
  4698. VARIANT CLead::GetComment(short iIndex)
  4699. {
  4700.    VARIANT result;
  4701.    static BYTE parms[] =
  4702.       VTS_I2;
  4703.    InvokeHelper(dispidComment, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, parms,
  4704.       iIndex);
  4705.    return result;
  4706. }
  4707.  
  4708. void CLead::SetComment(short iIndex, const VARIANT& newValue)
  4709. {
  4710.    static BYTE parms[] =
  4711.       VTS_I2 VTS_VARIANT;
  4712.    InvokeHelper(dispidComment, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4713.        iIndex, &newValue);
  4714. }
  4715.  
  4716. OLE_COLOR CLead::GetPixel(float x, float y)
  4717. {
  4718.    OLE_COLOR result;
  4719.    static BYTE parms[] =
  4720.       VTS_R4 VTS_R4;
  4721.    InvokeHelper(dispidPixel, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
  4722.       x, y);
  4723.    return result;
  4724. }
  4725.  
  4726. void CLead::SetPixel(float x, float y, OLE_COLOR nNewValue)
  4727. {
  4728.    static BYTE parms[] =
  4729.       VTS_R4 VTS_R4 VTS_I4;
  4730.    InvokeHelper(dispidPixel, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  4731.        x, y, nNewValue);
  4732. }
  4733.  
  4734. void CLead::Delete(BOOL bAutoDelete)
  4735. {
  4736.  
  4737.    Release();      
  4738.  
  4739.    if (bAutoDelete)
  4740.    {
  4741.       InternalRelease();  
  4742.    }
  4743. }
  4744.  
  4745. void CLead::Release(OLECLOSE dwCloseOption)
  4746. {
  4747.  
  4748.    m_scLast = S_OK;
  4749.  
  4750.    if (m_pIObject)
  4751.    {
  4752.       if (m_pIViewObject2)
  4753.       {
  4754.          DWORD dwAspect;
  4755.          VERIFY(m_pIViewObject2->GetAdvise(&dwAspect, NULL, NULL) == NOERROR);
  4756.          VERIFY(m_pIViewObject2->SetAdvise(dwAspect, 0, NULL) == NOERROR);
  4757.          RELEASE(m_pIViewObject2);
  4758.       }
  4759.  
  4760.       if (m_dwConnection != 0)
  4761.       {
  4762.          VERIFY(m_pIObject->Unadvise(m_dwConnection) == NOERROR);
  4763.          m_dwConnection = 0;
  4764.       }
  4765.         
  4766.       RELEASE(m_pIOleControl);
  4767.       RELEASE(m_pIDispatchControl);
  4768.       RELEASE(m_pIOleInPlaceObject);
  4769.       RELEASE(m_pIOleInPlaceActiveObject);
  4770.          
  4771.       if (m_pEventsRedirDispatch)
  4772.       {                         
  4773.          InterfaceDisconnect(m_pIObject, m_pEventsRedirDispatch->GetAliasIID(), &m_dwEventConnProp);
  4774.          delete m_pEventsRedirDispatch;
  4775.          m_pEventsRedirDispatch = NULL;
  4776.       }
  4777.       m_DispatchDriver.ReleaseDispatch();
  4778.  
  4779.       if (m_pAmbientsDispatch)
  4780.       {
  4781.          RELEASE(m_pAmbientsDispatch);
  4782.          m_pLeadContainer->RemoveControl(this);
  4783.       }
  4784.  
  4785.       m_scLast = GetScode(m_pIObject->Close(dwCloseOption));
  4786.       RELEASE(m_pIObject);
  4787.       RELEASE(m_pIPersistStreamInit);
  4788.          
  4789.       m_hWnd = NULL;
  4790.          
  4791.       m_nState = emptyState;      
  4792.    }
  4793. }
  4794.  
  4795. void CLead::Close(OLECLOSE dwCloseOption)
  4796. {
  4797.  
  4798.    if (m_bInClose)
  4799.       return;
  4800.  
  4801.    m_bInClose = TRUE;
  4802.  
  4803.    m_scLast = GetScode(m_pIObject->Close(dwCloseOption));
  4804.  
  4805.  
  4806.    if (m_nState != loadedState)
  4807.    {
  4808.       if (m_nState == activeUIState)
  4809.          OnDeactivateUI(FALSE);
  4810.  
  4811.       if (m_nState == activeState)
  4812.          OnDeactivate();
  4813.  
  4814.       if (m_nState != loadedState)
  4815.       {
  4816.          OnChange(OLE_CHANGED_STATE, (DWORD)loadedState);
  4817.          m_nState = loadedState; 
  4818.       }
  4819.    }
  4820.  
  4821.    m_bInClose = FALSE; 
  4822. }
  4823.  
  4824. void CLead::Connect(HRESULT hr)
  4825. {
  4826. #if IS_MFC40
  4827.     USES_CONVERSION;
  4828. #endif
  4829.  
  4830.    TRY 
  4831.    {
  4832.       CheckGeneral(hr);
  4833.  
  4834.       LPADVISESINK lpAdviseSink = (LPADVISESINK)GetInterface(&IID_IAdviseSink);
  4835.       CheckGeneral(m_pIObject->Advise(lpAdviseSink, &m_dwConnection));
  4836.  
  4837.       CheckGeneral(m_pIObject->QueryInterface(IID_IOleControl, (LPLP)&m_pIOleControl));
  4838.       CheckGeneral(m_pIObject->QueryInterface(IID_IOleInPlaceObject, (LPLP)&m_pIOleInPlaceObject));
  4839.       CheckGeneral(m_pIObject->QueryInterface(IID_IOleInPlaceActiveObject, (LPLP)&m_pIOleInPlaceActiveObject));
  4840.       CheckGeneral(m_pIObject->QueryInterface(IID_IPersistStreamInit, (LPLP)&m_pIPersistStreamInit));
  4841.       CheckGeneral(m_pIObject->QueryInterface(IID_IViewObject2, (LPLP)&m_pIViewObject2));
  4842.       CheckGeneral(m_pIObject->QueryInterface(IID_IDispatch,(LPLP)&m_pIDispatchControl));
  4843.  
  4844.       m_DispatchDriver.AttachDispatch(m_pIDispatchControl);
  4845.       m_pIDispatchControl->AddRef();
  4846.  
  4847.       CheckGeneral(m_pIViewObject2->SetAdvise(DVASPECT_CONTENT, 0, lpAdviseSink));
  4848.          
  4849. #if IS_MFC40
  4850.       m_pIObject->SetHostNames(T2COLE(AfxGetAppName()), L"");
  4851. #else
  4852.       m_pIObject->SetHostNames(AfxGetAppName(), _T(""));
  4853. #endif
  4854.  
  4855.       
  4856.       CheckGeneral(m_pIObject->SetClientSite(GetClientSite()));
  4857.  
  4858.       ::OleSetContainedObject(m_pIObject, TRUE);
  4859.         
  4860.       m_nState = loadedState;
  4861.  
  4862.       CheckGeneral(m_pIObject->GetMiscStatus(DVASPECT_CONTENT, &m_dwStatus));
  4863.       CheckGeneral(m_pIOleControl->GetControlInfo(&m_cntrlInfo));
  4864.         
  4865.    }
  4866.    CATCH_ALL(e)
  4867.    {
  4868.       Release();
  4869.       THROW_LAST();
  4870.    }
  4871.    END_CATCH_ALL
  4872.  
  4873. }
  4874.  
  4875. void CLead::ConnectEvents(CCmdTarget *pEventsCmdTarget, AFX_DISPMAP FAR *pDispMap)
  4876. {
  4877.  
  4878.     HRESULT             hr;
  4879.     LPTYPEATTR          pTA;               
  4880.     LPTYPEINFO         pTypeInfo;
  4881.     IID               eventsIID;
  4882.  
  4883.     eventsIID=CLSID_NULL;
  4884.  
  4885.     CheckGeneral(ObjectTypeInfoEvents(m_pIObject, &pTypeInfo));
  4886.  
  4887.     if (!SUCCEEDED(hr = pTypeInfo->GetTypeAttr(&pTA)))
  4888.     {
  4889.        pTypeInfo->Release();
  4890.       Release();
  4891.       AfxThrowOleException(hr);
  4892.     }
  4893.  
  4894.     eventsIID=pTA->guid;
  4895.     m_pEventsRedirDispatch = new COleDispatchRedir( this, pEventsCmdTarget, pDispMap, eventsIID);
  4896.  
  4897.     hr = InterfaceConnect(m_pIObject, eventsIID, m_pEventsRedirDispatch, &m_dwEventConnProp);
  4898.     pTypeInfo->ReleaseTypeAttr(pTA);
  4899.     pTypeInfo->Release();
  4900.    
  4901.     if (!SUCCEEDED(hr))           
  4902.     {
  4903.       delete m_pEventsRedirDispatch;
  4904.       m_pEventsRedirDispatch = NULL;
  4905.  
  4906.       Release();
  4907.       AfxThrowOleException(hr);
  4908.     }
  4909. }
  4910.  
  4911.  
  4912. BSTR CLead::GetLicenseKey() const
  4913. {
  4914.    return SysAllocString(_szLicString);
  4915. }
  4916.  
  4917.  
  4918. void CLead::CreateInstance(CLeadContainer *pContainer, CWnd *pWnd, int ctrlID)
  4919. {
  4920.    CWnd   *pWndCtrl;
  4921.    WINDOWPLACEMENT   wp;
  4922.  
  4923.    if (m_hWnd)
  4924.       DestroyWindow();   
  4925.    
  4926.    pWndCtrl = CWnd::FromHandle(::GetDlgItem(pWnd->m_hWnd, ctrlID));
  4927.    
  4928.    wp.length = sizeof(wp);
  4929.    pWndCtrl->GetWindowPlacement(&wp);
  4930.    pWndCtrl->DestroyWindow();
  4931.    
  4932.    CreateInstance(pContainer, pWnd, wp.rcNormalPosition);
  4933.  
  4934. }
  4935.  
  4936.  
  4937. void CLead::CreateInstance(CLeadContainer *pContainer, CWnd *pWnd, const RECT &rect)
  4938. {
  4939.  
  4940.    if (m_hWnd)       
  4941.       Release();
  4942.    
  4943.    m_hWndParent = pWnd->m_hWnd;
  4944.    m_rcClient = rect;
  4945.  
  4946.    ::SetWindowLong(pWnd->m_hWnd, GWL_STYLE, pWnd->GetStyle()|WS_CLIPCHILDREN);
  4947.  
  4948.    if (m_pAmbientsDispatch)
  4949.    {
  4950.       m_pLeadContainer->RemoveControl(this);
  4951.       RELEASE(m_pAmbientsDispatch);               
  4952.    }
  4953.  
  4954.    m_pAmbientsDispatch = (LPDISPATCH)pContainer->GetInterface(&IID_IDispatch);
  4955.     
  4956.    m_pAmbientsDispatch->AddRef();
  4957.    m_pLeadContainer = pContainer;
  4958.    m_pLeadContainer->AddControl(this);
  4959.     
  4960.    if (m_pIObject)
  4961.       CheckGeneral(m_pIObject->SetClientSite(GetClientSite()));
  4962.  
  4963.    
  4964.    REFCLSID   refClassIID = GetClassID(); 
  4965.    BSTR      bstrKey = GetLicenseKey();
  4966.       
  4967.    if (bstrKey)
  4968.    {
  4969.       LPCLASSFACTORY2   pIClassFactory2;
  4970.  
  4971.       if (SUCCEEDED(::CoGetClassObject(refClassIID, CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory2, (LPLP)&pIClassFactory2)))
  4972.       {
  4973.          HRESULT hr;
  4974.          hr = pIClassFactory2->CreateInstanceLic(NULL, NULL, IID_IOleObject, bstrKey, (LPLP)&m_pIObject);
  4975.          RELEASE(pIClassFactory2);
  4976.          ::SysFreeString(bstrKey);
  4977.          Connect(hr);
  4978.       }
  4979.       else
  4980.          Connect(::CoCreateInstance(refClassIID, NULL, CLSCTX_INPROC_SERVER, IID_IOleObject, (LPLP)&m_pIObject));
  4981.    }
  4982.    else
  4983.       Connect(::CoCreateInstance(refClassIID, NULL, CLSCTX_INPROC_SERVER, IID_IOleObject, (LPLP)&m_pIObject));
  4984.  
  4985.    if (m_pIPersistStreamInit)
  4986.       m_pIPersistStreamInit->InitNew();
  4987.  
  4988.    Activate();
  4989. }
  4990.  
  4991.  
  4992. BOOL CLead::IsInPlaceActive() const
  4993. {
  4994.    return (activeUIState == m_nState) || (activeState == m_nState);
  4995. }
  4996.  
  4997.  
  4998. void CLead::OnChange(OLE_NOTIFICATION nCode, DWORD dwParam)
  4999. {
  5000. }
  5001.  
  5002. void CLead::OnDataChange(
  5003.    LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium)
  5004. {
  5005. }
  5006.  
  5007. void CLead::OnShowItem()
  5008. {
  5009. }
  5010.  
  5011. BOOL CLead::OnChangeItemPosition(const CRect& rectPos)
  5012. {
  5013.    return TRUE;
  5014. }
  5015.  
  5016. void CLead::OnActivate()
  5017. {
  5018. }
  5019.  
  5020. void CLead::OnActivateUI()
  5021. {
  5022. }
  5023.  
  5024. void CLead::OnDeactivate()
  5025. {
  5026.  
  5027. }
  5028.  
  5029. void CLead::OnDeactivateUI(BOOL bUndoable)
  5030. {
  5031. }
  5032.  
  5033. void CLead::OnPropertyChanged(DISPID dispid)
  5034. {
  5035.  
  5036. }
  5037.  
  5038. BOOL CLead::OnPropertyRequestEdit(DISPID dispid)
  5039. {
  5040.    return TRUE;
  5041. }
  5042.  
  5043. void CLead::DoProperties()
  5044. {                      
  5045.    m_pIObject->DoVerb(OLEIVERB_PROPERTIES,NULL, GetClientSite(), 0 , m_hWnd, NULL);
  5046. }
  5047.  
  5048. void CLead::Deactivate()
  5049. {
  5050.    if (!m_uLockInPlace)
  5051.    {
  5052.       m_scLast = GetScode(m_pIOleInPlaceObject->InPlaceDeactivate());
  5053.       m_nState = loadedState;
  5054.    }
  5055.    else
  5056.    {
  5057.       m_bPendingDeactivate = TRUE;
  5058.       m_scLast = GetScode(m_pIOleInPlaceObject->UIDeactivate());
  5059.       m_nState = activeState; 
  5060.    }
  5061.  
  5062. }
  5063.  
  5064. void CLead::DeactivateUI()
  5065. {
  5066.  
  5067.    if (m_pIOleInPlaceObject)
  5068.       m_scLast = GetScode(m_pIOleInPlaceObject->UIDeactivate());
  5069.    m_nState = activeState; 
  5070. }                     
  5071.  
  5072. void CLead::Activate()
  5073. {
  5074.    if (m_nState != activeState)
  5075.    {
  5076.       CRect   activeRect;
  5077.  
  5078.       m_pIObject->DoVerb(OLEIVERB_SHOW,NULL, GetClientSite(), 0 , m_hWndParent, m_rcClient);
  5079.       SetExtent();
  5080.    }
  5081. }
  5082.  
  5083.  
  5084. void CLead::ActivateUI()
  5085. {
  5086.    if (m_nState != activeUIState)
  5087.    {
  5088.       m_pIObject->DoVerb(OLEIVERB_UIACTIVATE,NULL, GetClientSite(), 0 , m_hWndParent, m_rcClient);
  5089.       SetExtent();
  5090.    }
  5091. }
  5092.  
  5093. LPOLECLIENTSITE CLead::GetClientSite()
  5094. {
  5095.  
  5096.    LPOLECLIENTSITE lpClientSite =
  5097.       (LPOLECLIENTSITE)GetInterface(&IID_IOleClientSite);
  5098.    return lpClientSite;
  5099. }
  5100.  
  5101.  
  5102. void CLead::CheckGeneral(HRESULT hr)
  5103.    
  5104. {
  5105.  
  5106.    m_scLast = S_OK;    
  5107.  
  5108.    if (hr != NOERROR)
  5109.    {
  5110.       m_scLast = GetScode(hr);
  5111.       if (!FAILED(m_scLast))
  5112.          return;
  5113.       AfxThrowOleException(hr);
  5114.    }
  5115. }
  5116.  
  5117.  
  5118. void CLead::InvokeHelper(DISPID dwDispID, WORD wFlags,
  5119.    VARTYPE vtRet, void* pvRet, const BYTE FAR* pbParamInfo, ...)
  5120. {
  5121.  
  5122.    va_list argList;
  5123.    va_start(argList, pbParamInfo);
  5124.  
  5125.    m_DispatchDriver.InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo, argList);
  5126.  
  5127.    va_end(argList);
  5128. }
  5129.  
  5130. void CLead::GetProperty(DISPID dwDispID, VARTYPE vtProp,
  5131.    void* pvProp) const
  5132. {
  5133.  
  5134.    ((COleDispatchDriver*)&m_DispatchDriver)->InvokeHelper(dwDispID,
  5135.       DISPATCH_PROPERTYGET, vtProp, pvProp, NULL);
  5136. }
  5137.  
  5138. void CLead::SetProperty(DISPID dwDispID, VARTYPE vtProp, ...)
  5139. {
  5140.  
  5141.    va_list argList;
  5142.    va_start(argList, vtProp);
  5143.  
  5144.    BYTE rgbparms[2];
  5145.    if (vtProp & VT_BYREF)
  5146.    {
  5147.       vtProp &= ~VT_BYREF;
  5148.       vtProp |= VT_MFCBYREF;
  5149.    }
  5150.    rgbparms[0] = (BYTE)vtProp;
  5151.    rgbparms[1] = 0;
  5152.    m_DispatchDriver.InvokeHelperV(dwDispID, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
  5153.       rgbparms, argList);
  5154.  
  5155.    va_end(argList);
  5156. }
  5157.  
  5158. void CLead::OnDestroy() 
  5159.    
  5160.    Release();
  5161.    CWnd::OnDestroy();
  5162. }
  5163.  
  5164. void CLead::OnPaint() 
  5165. {
  5166.    if (!m_pIObject)
  5167.       return;   
  5168.  
  5169.    CPaintDC dc(this); 
  5170.  
  5171.    RECTL rclBounds;
  5172.    CRect   clientRect, hiMetricRect;
  5173.    CRect   oldViewportRect, oldWindowRect;
  5174.  
  5175.    GetClientRect(clientRect);
  5176.  
  5177.    SetDCToDrawInHimetricRect(dc.m_hDC, clientRect,
  5178.       hiMetricRect, oldWindowRect, oldViewportRect);
  5179.  
  5180.    rclBounds.left = hiMetricRect.left;
  5181.    rclBounds.top = hiMetricRect.top;
  5182.    rclBounds.right = hiMetricRect.right;
  5183.    rclBounds.bottom = hiMetricRect.bottom;
  5184.  
  5185.    HRESULT hr = m_pIViewObject2->Draw(DVASPECT_CONTENT, -1, NULL,
  5186.          NULL, NULL, dc.m_hDC,
  5187.          &rclBounds, NULL, NULL, 0);
  5188.  
  5189.    if (hr != NOERROR && GetScode(hr) == OLE_E_BLANK)
  5190.       return;
  5191.  
  5192.    CheckGeneral(hr);
  5193. }
  5194.  
  5195.  
  5196. void CLead::SetExtent()
  5197. {                                                 
  5198.    
  5199.    SIZEL   pixelsSizel, hiMetricSizel;
  5200.    
  5201.    pixelsSizel.cx = m_rcClient.Width();
  5202.    pixelsSizel.cy = m_rcClient.Height();
  5203.    XformSizeInPixelsToHimetric(NULL, &pixelsSizel, &hiMetricSizel); 
  5204.  
  5205.    m_pIObject->SetExtent(DVASPECT_CONTENT, &hiMetricSizel);
  5206. }
  5207.  
  5208.  
  5209. void CLead::MoveControl(LPCRECT lpRect) 
  5210. {
  5211.  
  5212.    SIZEL   pixelsSizel, hiMetricSizel;
  5213.  
  5214.    m_rcClient = lpRect;
  5215.    m_pIOleInPlaceObject->SetObjectRects(lpRect, lpRect);
  5216.    
  5217.    pixelsSizel.cx = m_rcClient.Width();
  5218.    pixelsSizel.cy = m_rcClient.Height();
  5219.    XformSizeInPixelsToHimetric(NULL, &pixelsSizel, &hiMetricSizel); 
  5220.    m_pIObject->SetExtent(DVASPECT_CONTENT, &hiMetricSizel);
  5221.    
  5222. }
  5223.  
  5224.  
  5225. void CLead::DrawMetafile(CDC* pDC, const CRect& rcBounds)
  5226. {
  5227.  
  5228.    RECTL rclBounds;
  5229.    double   dblXFactor, dblYFactor;
  5230.    CRect   parentClientRect;
  5231.    CWnd   *pParent;
  5232.  
  5233.    
  5234.    pParent = GetParent();
  5235.    pParent->GetClientRect(parentClientRect);
  5236.    
  5237.    dblXFactor = rcBounds.Width() / parentClientRect.Width();
  5238.    dblYFactor = rcBounds.Height() / parentClientRect.Height();
  5239.    
  5240.    rclBounds.left = (long)(m_rcClient.left * dblXFactor);
  5241.    rclBounds.top = (long)(m_rcClient.top  * dblYFactor);
  5242.    rclBounds.right = (long)(m_rcClient.right * dblXFactor);
  5243.    rclBounds.bottom = (long)(m_rcClient.bottom * dblYFactor);
  5244.  
  5245.    RECTL rclWBounds;
  5246.    CPoint ptOrg = pDC->GetWindowOrg();
  5247.    CSize sizeExt = pDC->GetWindowExt();
  5248.    rclWBounds.left = ptOrg.x;
  5249.    rclWBounds.top = ptOrg.y;
  5250.    rclWBounds.right = sizeExt.cx;
  5251.    rclWBounds.bottom = sizeExt.cy;
  5252.  
  5253.    HRESULT hr;
  5254.    hr = m_pIViewObject2->Draw(DVASPECT_CONTENT, -1, NULL,
  5255.       NULL, NULL, pDC->m_hDC,
  5256.       &rclBounds, &rclWBounds, NULL, 0);
  5257. }
  5258.  
  5259. BEGIN_INTERFACE_MAP(CLead, CWnd)
  5260.    INTERFACE_PART(CLead, IID_IOleClientSite, OleClientSite)
  5261.    INTERFACE_PART(CLead, IID_IAdviseSink, AdviseSink)
  5262.    INTERFACE_PART(CLead, IID_IOleWindow, OleIPSite)
  5263.    INTERFACE_PART(CLead, IID_IOleInPlaceSite, OleIPSite)
  5264.    INTERFACE_PART(CLead, IID_IOleControlSite, OleControlSite)
  5265.    INTERFACE_PART(CLead, IID_IPropertyNotifySink, PropertyNotifySink)
  5266.    INTERFACE_PART(CLead, IID_IDispatch, Dispatch)
  5267. END_INTERFACE_MAP()
  5268.  
  5269.  
  5270. STDMETHODIMP_(ULONG) CLead::XOleClientSite::AddRef()
  5271. {
  5272.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5273.    return (ULONG)pThis->ExternalAddRef();
  5274. }
  5275.  
  5276. STDMETHODIMP_(ULONG) CLead::XOleClientSite::Release()
  5277. {
  5278.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5279.    return (ULONG)pThis->ExternalRelease();
  5280. }
  5281.  
  5282. STDMETHODIMP CLead::XOleClientSite::QueryInterface(
  5283.    REFIID iid, LPVOID far* ppvObj)
  5284. {
  5285.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5286.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5287. }
  5288.  
  5289. STDMETHODIMP CLead::XOleClientSite::SaveObject()
  5290. {
  5291.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5292.    return ResultFromScode(E_NOTIMPL);
  5293. }
  5294.  
  5295. STDMETHODIMP CLead::XOleClientSite::GetMoniker(
  5296.    DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER FAR* ppMoniker)
  5297. {
  5298.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5299.  
  5300.    return ResultFromScode(E_NOTIMPL);
  5301. }
  5302.  
  5303. STDMETHODIMP CLead::XOleClientSite::GetContainer(
  5304.    LPOLECONTAINER FAR* ppContainer)
  5305. {
  5306.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5307.  
  5308.    *ppContainer = NULL;
  5309.    return ResultFromScode(E_NOINTERFACE);
  5310. }
  5311.  
  5312. STDMETHODIMP CLead::XOleClientSite::ShowObject()
  5313. {
  5314.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5315.  
  5316.    TRY
  5317.    {
  5318.       HRESULT hr;
  5319.       hr = pThis->m_pIOleInPlaceObject->GetWindow(&pThis->m_hWnd);
  5320.    
  5321.       pThis->OnShowItem();
  5322.    }
  5323.    END_TRY
  5324.  
  5325.  
  5326.    return NOERROR;
  5327. }
  5328.  
  5329. STDMETHODIMP CLead::XOleClientSite::OnShowWindow(BOOL fShow)
  5330. {
  5331.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5332.  
  5333.    if (pThis->IsInPlaceActive())
  5334.       return NOERROR;
  5335.  
  5336.    TRY
  5337.    {
  5338.       CLead::State uNewState;
  5339.       uNewState = fShow ? CLead::openState :
  5340.          CLead::loadedState;
  5341.       if (uNewState != pThis->m_nState)
  5342.       {
  5343.          pThis->OnChange(OLE_CHANGED_STATE, (DWORD)uNewState);
  5344.          pThis->m_nState = uNewState;
  5345.       }
  5346.    }
  5347.    END_TRY
  5348.  
  5349.  
  5350.    return NOERROR;
  5351. }
  5352.  
  5353. STDMETHODIMP CLead::XOleClientSite::RequestNewObjectLayout()
  5354. {
  5355.    METHOD_MANAGE_STATE(CLead, OleClientSite)
  5356.  
  5357.    SIZEL   pixelsSizel, hiMetricSizel;
  5358.     
  5359.    pThis->m_pIObject->GetExtent(DVASPECT_CONTENT, &hiMetricSizel);
  5360.     
  5361.    XformSizeInHimetricToPixels(NULL, &pixelsSizel, &hiMetricSizel); 
  5362.  
  5363.    return NOERROR;
  5364. }
  5365.  
  5366. STDMETHODIMP_(ULONG) CLead::XAdviseSink::AddRef()
  5367. {
  5368.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5369.  
  5370.    return (ULONG)pThis->ExternalAddRef();
  5371. }
  5372.  
  5373. STDMETHODIMP_(ULONG) CLead::XAdviseSink::Release()
  5374. {
  5375.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5376.    return (ULONG)pThis->ExternalRelease();
  5377. }
  5378.  
  5379. STDMETHODIMP CLead::XAdviseSink::QueryInterface(
  5380.    REFIID iid, LPVOID far* ppvObj)
  5381. {
  5382.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5383.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5384. }
  5385.  
  5386. STDMETHODIMP_(void) CLead::XAdviseSink::OnDataChange(
  5387.    LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium)
  5388. {
  5389.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5390.  
  5391.  
  5392. }
  5393.  
  5394. STDMETHODIMP_(void) CLead::XAdviseSink::OnViewChange(
  5395.    DWORD aspects, LONG lindex)
  5396. {
  5397.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5398.  
  5399.    pThis->OnChange(OLE_CHANGED, (DVASPECT)aspects);
  5400. }
  5401.  
  5402. STDMETHODIMP_(void) CLead::XAdviseSink::OnRename(LPMONIKER lpMoniker)
  5403. {
  5404.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5405. }
  5406.  
  5407. STDMETHODIMP_(void) CLead::XAdviseSink::OnSave()
  5408. {
  5409.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5410.  
  5411.    pThis->OnChange(OLE_SAVED, (DVASPECT)0);
  5412. }
  5413.  
  5414. STDMETHODIMP_(void) CLead::XAdviseSink::OnClose()
  5415. {
  5416.    METHOD_MANAGE_STATE(CLead, AdviseSink)
  5417.  
  5418.    pThis->OnChange(OLE_CLOSED, (DVASPECT)0);
  5419. }
  5420.  
  5421.  
  5422. STDMETHODIMP_(ULONG) CLead::XOleIPSite::AddRef()
  5423. {
  5424.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5425.    return (ULONG)pThis->ExternalAddRef();
  5426. }
  5427.  
  5428. STDMETHODIMP_(ULONG) CLead::XOleIPSite::Release()
  5429. {
  5430.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5431.    return (ULONG)pThis->ExternalRelease();
  5432. }
  5433.  
  5434. STDMETHODIMP CLead::XOleIPSite::QueryInterface(
  5435.    REFIID iid, LPVOID far* ppvObj)
  5436. {
  5437.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5438.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5439. }
  5440.  
  5441. STDMETHODIMP CLead::XOleIPSite::GetWindow(HWND FAR* lphwnd)
  5442. {
  5443.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5444.  
  5445.    *lphwnd = pThis->m_hWndParent;
  5446.    
  5447.    return *lphwnd ? NOERROR : ResultFromScode(E_FAIL);
  5448. }
  5449.  
  5450. STDMETHODIMP CLead::XOleIPSite::ContextSensitiveHelp(
  5451.    BOOL fEnterMode)
  5452. {
  5453.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5454.  
  5455.    return ResultFromScode(E_NOTIMPL);
  5456. }
  5457.  
  5458. STDMETHODIMP CLead::XOleIPSite::CanInPlaceActivate()
  5459. {
  5460.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5461.  
  5462.  
  5463.    return S_OK;
  5464. }
  5465.  
  5466. STDMETHODIMP CLead::XOleIPSite::OnInPlaceActivate()
  5467. {
  5468.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5469.  
  5470.    SCODE sc = E_UNEXPECTED;
  5471.    TRY
  5472.    {
  5473.       pThis->m_bPendingDeactivate = FALSE;
  5474.  
  5475.       
  5476.       if (pThis->m_nState != activeState)
  5477.       {
  5478.          pThis->OnChange(OLE_CHANGED_STATE, (DWORD)activeState);
  5479.          pThis->m_nState = activeState;
  5480.       }
  5481.       pThis->OnActivate();    
  5482.  
  5483.       sc = S_OK;
  5484.    }
  5485.    END_TRY
  5486.  
  5487.    return ResultFromScode(sc);
  5488. }
  5489.  
  5490. STDMETHODIMP CLead::XOleIPSite::OnUIActivate()
  5491. {
  5492.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5493.  
  5494.    SCODE sc = E_UNEXPECTED;
  5495.    TRY
  5496.    {
  5497.       if (pThis->m_nState != activeUIState)
  5498.       {
  5499.          pThis->OnChange(OLE_CHANGED_STATE, (DWORD)activeUIState);
  5500.          pThis->m_nState = activeUIState;
  5501.       }
  5502.       pThis->OnActivateUI();
  5503.  
  5504.       pThis->m_pLeadContainer->OnSetUIActiveObject(pThis);
  5505.  
  5506.       sc = S_OK;
  5507.    }
  5508.    END_TRY
  5509.  
  5510.    return ResultFromScode(sc);
  5511. }                              
  5512.  
  5513.  
  5514. STDMETHODIMP CLead::XOleIPSite::OnUIDeactivate(BOOL fUndoable)
  5515. {
  5516.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5517.  
  5518.    SCODE sc = E_UNEXPECTED;
  5519.    TRY
  5520.    {   
  5521.       if (pThis->m_nState != activeState)
  5522.       {
  5523.          pThis->OnChange(OLE_CHANGED_STATE, (DWORD)activeState);
  5524.          pThis->m_nState = activeState;
  5525.       }
  5526.       pThis->OnDeactivateUI(fUndoable);
  5527.       
  5528.       sc = S_OK;
  5529.    }
  5530.    END_TRY
  5531.  
  5532.    return ResultFromScode(sc);
  5533. }
  5534.  
  5535. STDMETHODIMP CLead::XOleIPSite::OnInPlaceDeactivate()
  5536. {
  5537.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5538.  
  5539.    SCODE sc = E_UNEXPECTED;
  5540.    TRY
  5541.    {
  5542.       pThis->m_hWnd = NULL;
  5543.       pThis->m_hWndParent = NULL;
  5544.       
  5545.       pThis->m_bPendingDeactivate = FALSE;
  5546.    
  5547.       if (pThis->m_nState != loadedState)
  5548.       {
  5549.          pThis->OnChange(OLE_CHANGED_STATE, (DWORD)loadedState);
  5550.          pThis->m_nState = loadedState;
  5551.       }
  5552.  
  5553.       pThis->OnDeactivate();
  5554.  
  5555.       sc = S_OK;
  5556.    }
  5557.    END_TRY
  5558.  
  5559.    return ResultFromScode(sc);
  5560. }
  5561.  
  5562.  
  5563. STDMETHODIMP CLead::XOleIPSite::GetWindowContext(
  5564.    LPOLEINPLACEFRAME FAR* lplpFrame,
  5565.    LPOLEINPLACEUIWINDOW FAR* lplpDoc,
  5566.    LPRECT lpPosRect,   LPRECT lpClipRect,
  5567.    LPOLEINPLACEFRAMEINFO lpFrameInfo)
  5568. {
  5569.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5570.  
  5571.    *lplpFrame = NULL;  
  5572.    *lplpDoc = NULL;
  5573.  
  5574.    SCODE sc = E_UNEXPECTED;
  5575.    TRY
  5576.    {
  5577.       pThis->m_pLeadContainer->GetWindowContext(pThis, lplpFrame, lplpDoc, lpPosRect, lpClipRect, lpFrameInfo);
  5578.       sc = S_OK;
  5579.    }
  5580.    END_TRY
  5581.  
  5582.  
  5583.    return ResultFromScode(sc);
  5584. }
  5585.  
  5586. STDMETHODIMP CLead::XOleIPSite::Scroll(SIZE scrollExtent)
  5587. {
  5588.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5589.  
  5590.    return ResultFromScode(E_NOTIMPL);
  5591. }
  5592.  
  5593. STDMETHODIMP CLead::XOleIPSite::DiscardUndoState()
  5594. {
  5595.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5596.  
  5597.    return ResultFromScode(E_NOTIMPL);
  5598. }
  5599.  
  5600. STDMETHODIMP CLead::XOleIPSite::DeactivateAndUndo()
  5601. {
  5602.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5603.  
  5604.    return ResultFromScode(E_NOTIMPL);
  5605. }
  5606.  
  5607. STDMETHODIMP CLead::XOleIPSite::OnPosRectChange(
  5608.    LPCRECT lpPosRect)
  5609. {
  5610.    METHOD_MANAGE_STATE(CLead, OleIPSite)
  5611.  
  5612.  
  5613.    SCODE sc = E_UNEXPECTED;
  5614.    TRY
  5615.    {
  5616.       if (!pThis->OnChangeItemPosition(lpPosRect))      
  5617.       {                  
  5618.          SIZEL   pixelsSizel, hiMetricSizel;
  5619.       
  5620.          pThis->m_rcClient = lpPosRect;
  5621.          
  5622.          pThis->m_pIOleInPlaceObject->SetObjectRects(lpPosRect, lpPosRect);
  5623.          
  5624.          pixelsSizel.cx = pThis->m_rcClient.Width();
  5625.          pixelsSizel.cy = pThis->m_rcClient.Height();
  5626.          XformSizeInPixelsToHimetric(NULL, &pixelsSizel, &hiMetricSizel); 
  5627.          pThis->m_pIObject->SetExtent(DVASPECT_CONTENT, &hiMetricSizel);
  5628.       
  5629.       }
  5630.       sc = S_OK;
  5631.    }
  5632.    END_TRY
  5633.  
  5634.  
  5635.  
  5636.    return ResultFromScode(sc);
  5637. }
  5638.  
  5639.  
  5640. STDMETHODIMP_(ULONG) CLead::XOleControlSite::AddRef()
  5641. {
  5642.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5643.  
  5644.    return (ULONG)pThis->ExternalAddRef();
  5645. }
  5646.  
  5647. STDMETHODIMP_(ULONG) CLead::XOleControlSite::Release()
  5648. {
  5649.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5650.  
  5651.    return (ULONG)pThis->ExternalRelease();
  5652. }
  5653.  
  5654. STDMETHODIMP CLead::XOleControlSite::QueryInterface(
  5655.    REFIID iid, LPVOID far* ppvObj)
  5656. {
  5657.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5658.  
  5659.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5660. }
  5661.  
  5662.  
  5663. STDMETHODIMP CLead::XOleControlSite::OnControlInfoChanged()
  5664. {
  5665.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5666.  
  5667.    VERIFY(SUCCEEDED(pThis->m_pIOleControl->GetControlInfo(&pThis->m_cntrlInfo)));
  5668.  
  5669.    return NOERROR;
  5670. }
  5671.  
  5672.  
  5673. STDMETHODIMP CLead::XOleControlSite::LockInPlaceActive(
  5674.    BOOL fLock)
  5675. {
  5676.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5677.  
  5678.  
  5679.    if (fLock)
  5680.       pThis->m_uLockInPlace++;
  5681.    else                  
  5682.    if ( (0 == --pThis->m_uLockInPlace) && pThis->m_bPendingDeactivate )
  5683.       pThis->Deactivate();
  5684.    
  5685.    return NOERROR;
  5686. }
  5687.  
  5688. STDMETHODIMP CLead::XOleControlSite::GetExtendedControl(
  5689.    LPDISPATCH FAR* ppDisp)
  5690. {
  5691.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5692.  
  5693.    return ResultFromScode(E_NOTIMPL);
  5694. }
  5695.  
  5696. STDMETHODIMP CLead::XOleControlSite::TransformCoords(
  5697.    POINTL FAR* lpptlHimetric, POINTF FAR* lpptfContainer, DWORD flags) 
  5698. {
  5699.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5700.  
  5701.     
  5702.     if (XFORMCOORDS_HIMETRICTOCONTAINER & flags)
  5703.     {
  5704.       lpptfContainer->x = (float)XformWidthInHimetricToPixels(NULL, (int)lpptlHimetric->x);
  5705.       lpptfContainer->y = (float)XformHeightInHimetricToPixels(NULL, (int)lpptlHimetric->y);
  5706.    }
  5707.    else
  5708.    {
  5709.       lpptlHimetric->x = XformWidthInPixelsToHimetric(NULL, (int)lpptfContainer->x);
  5710.       lpptlHimetric->y = XformHeightInPixelsToHimetric(NULL, (int)lpptfContainer->y);
  5711.    }
  5712.  
  5713.    return NOERROR;
  5714. }
  5715.  
  5716. STDMETHODIMP CLead::XOleControlSite::TranslateAccelerator(
  5717.    LPMSG lpMsg, DWORD grfModifiers) 
  5718. {
  5719.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5720.  
  5721.  
  5722.    if (pThis->m_pLeadContainer)
  5723.       return pThis->m_pLeadContainer->OnTranslateAccelerator(lpMsg);
  5724.  
  5725.    return ResultFromScode(S_FALSE);
  5726. }
  5727.  
  5728. STDMETHODIMP CLead::XOleControlSite::OnFocus(
  5729.    BOOL fGotFocus)
  5730. {
  5731.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5732.  
  5733.  
  5734.    if (pThis->m_pLeadContainer)
  5735.       pThis->m_pLeadContainer->OnFocus(pThis, fGotFocus);
  5736.  
  5737.    return NOERROR;
  5738. }
  5739.  
  5740. STDMETHODIMP CLead::XOleControlSite::ShowPropertyFrame()
  5741. {
  5742.    METHOD_MANAGE_STATE(CLead, OleControlSite)
  5743.  
  5744.    
  5745.    return ResultFromScode(E_NOTIMPL);
  5746. }
  5747.                 
  5748. STDMETHODIMP_(ULONG) CLead::XPropertyNotifySink::AddRef()
  5749. {
  5750.    METHOD_MANAGE_STATE(CLead, PropertyNotifySink)
  5751.  
  5752.    return (ULONG)pThis->ExternalAddRef();
  5753. }
  5754.  
  5755. STDMETHODIMP_(ULONG) CLead::XPropertyNotifySink::Release()
  5756. {
  5757.    METHOD_MANAGE_STATE(CLead, PropertyNotifySink)
  5758.  
  5759.    return (ULONG)pThis->ExternalRelease();
  5760. }
  5761.  
  5762. STDMETHODIMP CLead::XPropertyNotifySink::QueryInterface(
  5763.    REFIID iid, LPVOID far* ppvObj)
  5764. {
  5765.    METHOD_MANAGE_STATE(CLead, PropertyNotifySink)
  5766.  
  5767.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5768. }
  5769.  
  5770.  
  5771. STDMETHODIMP CLead::XPropertyNotifySink::OnChanged(
  5772.    DISPID dispid)
  5773. {
  5774.    METHOD_MANAGE_STATE(CLead, PropertyNotifySink)
  5775.  
  5776.  
  5777.    pThis->OnPropertyChanged(dispid);
  5778.  
  5779.    return NOERROR;
  5780. }
  5781.  
  5782.  
  5783. STDMETHODIMP CLead::XPropertyNotifySink::OnRequestEdit(
  5784.    DISPID dispid)
  5785. {
  5786.    METHOD_MANAGE_STATE(CLead, PropertyNotifySink)
  5787.  
  5788.  
  5789.    if (pThis->OnPropertyRequestEdit(dispid))
  5790.       return NOERROR;
  5791.  
  5792.    return ResultFromScode(S_FALSE);
  5793. }
  5794.     
  5795.     
  5796.  
  5797. STDMETHODIMP_(ULONG) CLead::XDispatch::AddRef()
  5798. {
  5799.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5800.    return (ULONG)pThis->ExternalAddRef();
  5801. }
  5802.  
  5803.  
  5804. STDMETHODIMP_(ULONG) CLead::XDispatch::Release()
  5805. {
  5806.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5807.    return (ULONG)pThis->ExternalRelease();
  5808. }
  5809.  
  5810.  
  5811. STDMETHODIMP CLead::XDispatch::QueryInterface(
  5812.    REFIID iid, LPVOID far* ppvObj)
  5813. {
  5814.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5815.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5816. }
  5817.  
  5818.  
  5819. STDMETHODIMP CLead::XDispatch::GetTypeInfoCount(unsigned int FAR* pctinfo)
  5820. {
  5821.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5822.  
  5823.    *pctinfo = 1;
  5824.    return NOERROR;
  5825. }
  5826.  
  5827.  
  5828. STDMETHODIMP CLead::XDispatch::GetTypeInfo(
  5829.      unsigned int itinfo,
  5830.      LCID lcid,
  5831.      ITypeInfo FAR* FAR* pptinfo)
  5832. {
  5833.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5834.  
  5835.     return ResultFromScode(E_NOTIMPL);
  5836. }
  5837.  
  5838.  
  5839. #ifdef IS_MFC40
  5840. STDMETHODIMP CLead::XDispatch::GetIDsOfNames(
  5841.      REFIID riid,
  5842.      LPOLESTR * rgszNames,
  5843.      unsigned int cNames,
  5844.      LCID lcid,
  5845.      DISPID FAR* rgdispid)
  5846. #else
  5847. STDMETHODIMP CLead::XDispatch::GetIDsOfNames(
  5848.      REFIID riid,
  5849.      LPTSTR FAR* rgszNames,
  5850.      unsigned int cNames,
  5851.      LCID lcid,
  5852.      DISPID FAR* rgdispid)
  5853. #endif
  5854. {
  5855.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5856.  
  5857.     return ResultFromScode(E_NOTIMPL);
  5858. }
  5859.  
  5860.  
  5861. STDMETHODIMP CLead::XDispatch::Invoke(
  5862.      DISPID dispidMember,
  5863.      REFIID riid,
  5864.      LCID lcid,
  5865.      unsigned short wFlags,
  5866.      DISPPARAMS FAR* pdispparams,
  5867.      VARIANT FAR* pvarResult,
  5868.      EXCEPINFO FAR* pexcepinfo,
  5869.      unsigned int FAR* puArgErr)
  5870. {
  5871.    METHOD_MANAGE_STATE(CLead, Dispatch)
  5872.  
  5873.    if (DISPID_AMBIENT_DISPLAYASDEFAULT == dispidMember)
  5874.    {
  5875.       VARIANT varResult;
  5876.       
  5877.       if (NULL == pvarResult)
  5878.          pvarResult=&varResult;
  5879.  
  5880.  
  5881.       if (pThis->m_dwStatus && OLEMISC_ACTSLIKEBUTTON)
  5882.          V_BOOL(pvarResult) = (BOOL)pThis->m_bDisplayAsDefault;
  5883.       else
  5884.          V_BOOL(pvarResult) = FALSE;
  5885.  
  5886.       return NOERROR;
  5887.    }
  5888.  
  5889.    if (pThis->m_pAmbientsDispatch)
  5890.       return pThis->m_pAmbientsDispatch->Invoke(
  5891.             dispidMember,
  5892.             riid,
  5893.             lcid,
  5894.             wFlags,
  5895.             pdispparams,
  5896.             pvarResult,
  5897.             pexcepinfo,
  5898.             puArgErr);
  5899.  
  5900.     return ResultFromScode(E_NOTIMPL);
  5901.  
  5902. }
  5903.  
  5904.     
  5905. STDMETHODIMP_(ULONG) CLead::XSimpleFrameSite::AddRef()
  5906. {
  5907.    METHOD_MANAGE_STATE(CLead, SimpleFrameSite)
  5908.  
  5909.    return (ULONG)pThis->ExternalAddRef();
  5910. }
  5911.  
  5912.  
  5913. STDMETHODIMP_(ULONG) CLead::XSimpleFrameSite::Release()
  5914. {
  5915.    METHOD_MANAGE_STATE(CLead, SimpleFrameSite)
  5916.    return (ULONG)pThis->ExternalRelease();
  5917. }
  5918.  
  5919.  
  5920. STDMETHODIMP CLead::XSimpleFrameSite::QueryInterface(
  5921.    REFIID iid, LPVOID far* ppvObj)
  5922. {
  5923.    METHOD_MANAGE_STATE(CLead, SimpleFrameSite)
  5924.  
  5925.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  5926. }
  5927.  
  5928. STDMETHODIMP CLead::XSimpleFrameSite::PreMessageFilter(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
  5929.          LRESULT FAR* lplResult, DWORD FAR * lpdwCookie)
  5930. {
  5931.    METHOD_MANAGE_STATE(CLead, SimpleFrameSite)
  5932.  
  5933.    return pThis->m_pLeadContainer->PreMessageFilter(hwnd, msg, wp, lp, lplResult, lpdwCookie);
  5934. }
  5935.  
  5936.  
  5937. STDMETHODIMP CLead::XSimpleFrameSite::PostMessageFilter(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
  5938.          LRESULT FAR* lplResult, DWORD dwCookie)
  5939. {
  5940.    METHOD_MANAGE_STATE(CLead, SimpleFrameSite)
  5941.  
  5942.    return pThis->m_pLeadContainer->PostMessageFilter(hwnd, msg, wp, lp, lplResult, dwCookie);
  5943. }
  5944.  
  5945.  
  5946. class CCmdTargetAccess : public CCmdTarget
  5947. {
  5948. public:
  5949.    friend class COleDispatchRedir;
  5950.    
  5951. private:
  5952.    CCmdTargetAccess ();
  5953. };
  5954.  
  5955.  
  5956. COleDispatchRedir::COleDispatchRedir()
  5957. {
  5958.    m_pDispatchMap = NULL;
  5959.     m_pCmdTarget = NULL;
  5960.     m_pRedirCmdTarget = NULL;
  5961. }
  5962.  
  5963. COleDispatchRedir::COleDispatchRedir(CCmdTarget FAR *pCmdTarget, CCmdTarget FAR *pRedirCmdTarget, AFX_DISPMAP FAR *pDispatchMap, REFIID aliasIID)
  5964. {
  5965.  
  5966.    m_pDispatchMap = pDispatchMap;
  5967.     m_pCmdTarget = pCmdTarget;
  5968.     m_pRedirCmdTarget = pRedirCmdTarget;
  5969.     m_AliasIID = aliasIID;
  5970.  
  5971.    if (m_pCmdTarget)
  5972.       m_pCmdTarget->InternalAddRef();
  5973. }
  5974.  
  5975. COleDispatchRedir::~COleDispatchRedir()
  5976. {
  5977.    if (m_pCmdTarget)
  5978.       m_pCmdTarget->InternalRelease();
  5979. }
  5980.  
  5981.  
  5982. STDMETHODIMP COleDispatchRedir::QueryInterface(REFIID riid, LPVOID far* ppvObj)
  5983. {
  5984.     *ppvObj=NULL;
  5985.  
  5986.     if (IID_IUnknown==riid || IID_IDispatch==riid || m_AliasIID==riid)
  5987.     {
  5988.         *ppvObj=this;
  5989.         AddRef();
  5990.         return NOERROR;
  5991.    }
  5992.    else
  5993.    if (m_pCmdTarget)
  5994.       return (HRESULT)m_pCmdTarget->ExternalQueryInterface(&riid, ppvObj);
  5995.    
  5996.     return ResultFromScode(E_NOINTERFACE);
  5997. }
  5998.  
  5999. STDMETHODIMP_(ULONG) COleDispatchRedir::AddRef(void)
  6000. {
  6001.    return   m_pCmdTarget->ExternalAddRef();
  6002. }
  6003.  
  6004. STDMETHODIMP_(ULONG) COleDispatchRedir::Release(void)
  6005. {
  6006.    return m_pCmdTarget->ExternalRelease();
  6007. }
  6008.  
  6009.  
  6010. STDMETHODIMP COleDispatchRedir::GetTypeInfoCount(UINT *pctInfo)
  6011. {
  6012.     *pctInfo=NULL;
  6013.     return ResultFromScode(E_NOTIMPL);
  6014. }
  6015.  
  6016. STDMETHODIMP COleDispatchRedir::GetTypeInfo(UINT itinfo
  6017.     , LCID lcid, ITypeInfo **pptInfo)
  6018. {
  6019.     *pptInfo=NULL;
  6020.     return ResultFromScode(E_NOTIMPL);
  6021. }
  6022.  
  6023. #if IS_MFC40
  6024. STDMETHODIMP COleDispatchRedir::GetIDsOfNames(REFIID riid
  6025.     , LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispID)
  6026. #else
  6027. STDMETHODIMP COleDispatchRedir::GetIDsOfNames(REFIID riid
  6028.     , TCHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispID)
  6029. #endif
  6030. {
  6031.     *rgszNames=NULL;
  6032.     *rgDispID=NULL;    
  6033.     
  6034.     
  6035.     return ResultFromScode(E_NOTIMPL);
  6036. }
  6037.  
  6038.  
  6039. STDMETHODIMP COleDispatchRedir::Invoke(DISPID dispIDMember, REFIID riid
  6040.     , LCID lcid, unsigned short wFlags, DISPPARAMS * pDispParams
  6041.     , VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
  6042. {                 
  6043.    if (!(m_pRedirCmdTarget && m_pDispatchMap))
  6044.       return NOERROR;
  6045.  
  6046.    if (riid != IID_NULL)
  6047.       return ResultFromScode(DISP_E_UNKNOWNINTERFACE);
  6048.  
  6049.    if (pDispParams->cNamedArgs != 0)
  6050.    {
  6051.       if (pDispParams->cNamedArgs != 1 ||
  6052.          pDispParams->rgdispidNamedArgs[0] != DISPID_PROPERTYPUT)
  6053.       {
  6054.          return ResultFromScode(DISP_E_NONAMEDARGS);
  6055.       }
  6056.    }
  6057.    if (wFlags & DISPATCH_PROPERTYPUTREF)
  6058.       return ResultFromScode(DISP_E_TYPEMISMATCH);
  6059.  
  6060.    AFX_DISPMAP_ENTRY FAR* pEntry = GetDispEntry(dispIDMember);
  6061.    if (!pEntry)
  6062.       return ResultFromScode(S_OK); 
  6063.  
  6064.    if (VT_VOID == pEntry->vt)
  6065.       pEntry->vt = VT_EMPTY;
  6066.  
  6067.    if ((wFlags & DISPATCH_METHOD) == DISPATCH_METHOD &&
  6068.       ((pEntry->pfn == NULL && pEntry->pfnSet == NULL) ||
  6069.        (pEntry->pfn != NULL && pEntry->pfnSet != NULL)))
  6070.    {
  6071.       wFlags &= ~DISPATCH_METHOD;
  6072.  
  6073. #ifndef _WIN32
  6074.       if (pDispParams->cArgs == (UINT)lstrlen((LPCTSTR)pEntry->pbParams))
  6075.          wFlags |= DISPATCH_PROPERTYGET;
  6076.       else
  6077.          wFlags |= DISPATCH_PROPERTYPUT;
  6078. #else
  6079.       if (pDispParams->cArgs == (UINT)lstrlen((LPCTSTR)pEntry->lpszParams))
  6080.          wFlags |= DISPATCH_PROPERTYGET;
  6081.       else
  6082.          wFlags |= DISPATCH_PROPERTYPUT;
  6083. #endif
  6084.    }
  6085.  
  6086.    if (wFlags & DISPATCH_PROPERTYGET)
  6087.    {
  6088.       if (pEntry->pfn == NULL && pDispParams->cArgs != 0)
  6089.          return ResultFromScode(DISP_E_BADPARAMCOUNT);
  6090.       if (pEntry->vt == VT_EMPTY)
  6091.          return ResultFromScode(DISP_E_BADPARAMCOUNT);
  6092.       if (!pVarResult)
  6093.          return ResultFromScode(DISP_E_PARAMNOTOPTIONAL);
  6094.    }
  6095.    if (wFlags & DISPATCH_PROPERTYPUT)
  6096.    {
  6097.       if (pEntry->pfn == NULL && pDispParams->cArgs > 1)
  6098.          return ResultFromScode(DISP_E_BADPARAMCOUNT);
  6099.    }
  6100.  
  6101.    UINT uArgErr = 0;  
  6102.    SCODE sc = S_OK;
  6103.  
  6104.    TRY
  6105.    {
  6106.       if (pEntry->pfn == NULL)
  6107.       {
  6108.          if (pDispParams->cArgs == 0)
  6109.             ((CCmdTargetAccess *)m_pRedirCmdTarget)->GetStandardProp(pEntry, pVarResult, &uArgErr);
  6110.          else
  6111.             ((CCmdTargetAccess *)m_pRedirCmdTarget)->SetStandardProp(pEntry, pDispParams, &uArgErr);
  6112.       }
  6113.       else
  6114.       {
  6115. #ifndef _WIN32
  6116.          sc = (SCODE)((CCmdTargetAccess *)m_pRedirCmdTarget)->InvokeHelper(pEntry, wFlags,
  6117.             pVarResult, pDispParams, &uArgErr);
  6118. #else
  6119.          sc = ((CCmdTargetAccess *)m_pRedirCmdTarget)->CallMemberFunc(pEntry, wFlags,
  6120.             pVarResult, pDispParams, &uArgErr);
  6121. #endif
  6122.       }
  6123.    }
  6124.    CATCH_ALL(e)
  6125.    {
  6126.       if (pExcepInfo)
  6127.       {
  6128.          COleDispatchException::Process(pExcepInfo, e);
  6129.       }
  6130.       return ResultFromScode(DISP_E_EXCEPTION);
  6131.    }
  6132.    END_CATCH_ALL
  6133.  
  6134.    if (sc != S_OK && puArgErr && uArgErr != -1)
  6135.       *puArgErr = uArgErr;
  6136.  
  6137.    return ResultFromScode(sc);
  6138.  
  6139. }
  6140.  
  6141. void COleDispatchRedir::SetDispatchMap(CCmdTarget FAR *pCmdTarget, CCmdTarget FAR *pRedirCmdTarget, AFX_DISPMAP FAR *pDispMap, REFIID aliasIID)
  6142. {                         
  6143.    if (m_pCmdTarget)
  6144.       m_pCmdTarget->InternalRelease();
  6145.  
  6146.     m_pDispatchMap = pDispMap;
  6147.     m_pCmdTarget = pCmdTarget;
  6148.     m_pRedirCmdTarget = pRedirCmdTarget;
  6149.     m_AliasIID = aliasIID;
  6150.  
  6151.     if (m_pCmdTarget)
  6152.        m_pCmdTarget->InternalAddRef();
  6153.  
  6154. }
  6155.  
  6156. AFX_DISPMAP_ENTRY FAR* COleDispatchRedir::GetDispEntry(MEMBERID memid)
  6157. {
  6158.    const AFX_DISPMAP FAR* pDispMap = m_pDispatchMap;
  6159.    const AFX_DISPMAP_ENTRY FAR* pEntry;
  6160.  
  6161.    while (pDispMap)
  6162.    {
  6163.       pEntry = pDispMap->lpEntries;
  6164.       while ((pEntry->lDispID != memid) && (pEntry->nPropOffset != -1))
  6165.          ++pEntry;
  6166.       
  6167.       if (memid == pEntry->lDispID)
  6168.          return (struct AFX_DISPMAP_ENTRY*)pEntry;
  6169.  
  6170. #ifndef _WIN32
  6171.       pDispMap = pDispMap->lpBaseDispMap;
  6172. #else
  6173. #ifndef _AFXDLL            
  6174.       pDispMap = pDispMap->pBaseMap;
  6175. #else
  6176.       if (NULL != pDispMap->pfnGetBaseMap)
  6177.          pDispMap = (*pDispMap->pfnGetBaseMap)();
  6178.       else
  6179.          pDispMap = NULL;
  6180. #endif
  6181. #endif
  6182.  
  6183.     }
  6184.  
  6185.    return NULL;    
  6186. }
  6187.  
  6188. CLeadContainer::CLeadContainer()
  6189.                : m_fontHolder(&m_xFontNotification)
  6190. {
  6191.    EnableAutomation();
  6192.    InitializeAmbientProperties();
  6193. }
  6194.  
  6195. CLeadContainer::~CLeadContainer()
  6196. {
  6197. }
  6198.  
  6199. void CLeadContainer::OnFinalRelease()
  6200. {
  6201. }
  6202.  
  6203. void CLeadContainer::InitializeAmbientProperties()
  6204. {
  6205.  
  6206.    m_backColor = 0x80000000+ COLOR_WINDOW;
  6207.    m_foreColor = 0x80000000+ COLOR_WINDOWTEXT;
  6208.    m_localeID = 0; 
  6209.    m_scaleUnits = "Pixels";
  6210.    m_textAlign = 0;
  6211.    m_bMessageReflect = FALSE;
  6212.    m_bUserMode = TRUE;
  6213.    m_bUIDead = FALSE;
  6214.    m_bShowGrabHandles = FALSE;
  6215.    m_bShowHatching = FALSE;
  6216.    m_bSupportsMnemonics = TRUE;
  6217.    m_bAutoClip = TRUE;
  6218.  
  6219.    m_fontHolder.InitializeFont();
  6220.  
  6221.    m_bPropertyChanged = FALSE;
  6222.    m_bFontPropertyChanged = FALSE;
  6223.    m_pUIActiveItem = NULL;   
  6224.    m_pFocusItem = NULL;
  6225.    m_pDefaultBttn = NULL;
  6226.    m_pEscapeBttn = NULL;
  6227. }   
  6228.  
  6229. void CLeadContainer::AddControl(CLead *pNewControl)
  6230. {
  6231.  
  6232.    m_OleControls.AddTail(pNewControl);
  6233. }
  6234.  
  6235. void CLeadContainer::RemoveControl(CLead *pOldControl)
  6236. {
  6237.  
  6238.    POSITION   thisPos;
  6239.    thisPos = m_OleControls.Find(pOldControl);
  6240.          
  6241.    if (thisPos)
  6242.       m_OleControls.RemoveAt(thisPos);
  6243. }
  6244.  
  6245. BOOL CLeadContainer::SetDefaultButton(CLead *pDefBttn)
  6246. {
  6247.                      
  6248.    if ((pDefBttn) && !(pDefBttn->m_dwStatus & OLEMISC_ACTSLIKEBUTTON))
  6249.       return FALSE;
  6250.  
  6251.    if (m_pDefaultBttn && (m_pDefaultBttn != pDefBttn))
  6252.    {
  6253.       if (TRUE == pDefBttn->m_bDisplayAsDefault)
  6254.       {
  6255.          m_pDefaultBttn->m_bDisplayAsDefault = FALSE;
  6256.          m_pDefaultBttn->m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DISPLAYASDEFAULT);
  6257.       }
  6258.    }
  6259.       
  6260.    m_pDefaultBttn = pDefBttn;
  6261.    
  6262.    if (m_pUIActiveItem)
  6263.       OnFocus(m_pUIActiveItem, TRUE);
  6264.    else
  6265.    {
  6266.       m_pDefaultBttn->m_bDisplayAsDefault = FALSE;
  6267.       m_pDefaultBttn->m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DISPLAYASDEFAULT);
  6268.    }
  6269.       
  6270.    return TRUE;
  6271.    
  6272. }
  6273.  
  6274. BOOL CLeadContainer::SetEscapeButton(CLead *pEscBttn)
  6275. {
  6276.    if ((pEscBttn) && !(pEscBttn->m_dwStatus & OLEMISC_ACTSLIKEBUTTON))
  6277.       return FALSE;
  6278.    m_pEscapeBttn = pEscBttn;
  6279.    return TRUE;
  6280. }
  6281.  
  6282. void CLeadContainer::OnSetActiveObject(CLead *pActiveControl)
  6283. {
  6284. }
  6285.  
  6286. void CLeadContainer::OnSetUIActiveObject(CLead *pUIActiveControl)
  6287. {
  6288.    if (pUIActiveControl && m_pUIActiveItem && (pUIActiveControl != m_pUIActiveItem))
  6289.       m_pUIActiveItem->DeactivateUI();    
  6290.  
  6291.    m_pUIActiveItem = pUIActiveControl;
  6292. }
  6293.  
  6294. void CLeadContainer::OnFocus(CLead *pFocus, BOOL fGotFocus)
  6295. {                                                          
  6296.    BOOL bShowDefaultAsDefault = FALSE;
  6297.    BOOL bShowCurrentAsDefault = FALSE;
  6298.          
  6299.    if (pFocus == m_pDefaultBttn)
  6300.    {
  6301.       bShowDefaultAsDefault = TRUE;
  6302.       bShowCurrentAsDefault = TRUE;
  6303.    }                               
  6304.    else
  6305.    if ( fGotFocus && 
  6306.        ((pFocus->m_dwStatus & OLEMISC_ACTSLIKEBUTTON) ||
  6307.         (pFocus->m_cntrlInfo.dwFlags & CTRLINFO_EATS_RETURN)) )
  6308.    {                       
  6309.       bShowDefaultAsDefault = FALSE;
  6310.       bShowCurrentAsDefault = (BOOL)(pFocus->m_dwStatus & OLEMISC_ACTSLIKEBUTTON);
  6311.    }
  6312.    else
  6313.    {
  6314.       bShowDefaultAsDefault = TRUE;
  6315.       bShowCurrentAsDefault = FALSE;
  6316.    }
  6317.  
  6318.    if (pFocus->m_bDisplayAsDefault != bShowCurrentAsDefault)
  6319.    {
  6320.       pFocus->m_bDisplayAsDefault = bShowCurrentAsDefault;
  6321.       pFocus->m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DISPLAYASDEFAULT);
  6322.    }
  6323.  
  6324.    if (m_pDefaultBttn && 
  6325.       (m_pDefaultBttn->m_bDisplayAsDefault != bShowDefaultAsDefault))
  6326.    {
  6327.       m_pDefaultBttn->m_bDisplayAsDefault = bShowDefaultAsDefault;
  6328.       m_pDefaultBttn->m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DISPLAYASDEFAULT);
  6329.    }
  6330.  
  6331.    if (fGotFocus)
  6332.    {
  6333.       m_pFocusItem = pFocus;
  6334.       if (m_pUIActiveItem && (m_pUIActiveItem != pFocus))
  6335.          m_pUIActiveItem->DeactivateUI();
  6336.    }
  6337.    else
  6338.    if (m_pFocusItem == pFocus)
  6339.       m_pFocusItem = NULL;
  6340. }
  6341.  
  6342. BOOL CLeadContainer::ProcessKey(LPMSG lpmsg)
  6343. {
  6344.  
  6345.    if ((WM_CHAR == lpmsg->message) && 
  6346.       (VK_RETURN == lpmsg->wParam) && m_pDefaultBttn)
  6347.    {
  6348.       if (m_pUIActiveItem && (m_pUIActiveItem->m_cntrlInfo.dwFlags & CTRLINFO_EATS_RETURN)) 
  6349.          return FALSE;
  6350.                           
  6351.       m_pDefaultBttn->m_pIOleControl->OnMnemonic(lpmsg);
  6352.       
  6353.       return TRUE;
  6354.    }
  6355.  
  6356.    if ((WM_CHAR == lpmsg->message) && 
  6357.       (VK_ESCAPE == lpmsg->wParam) && m_pEscapeBttn)
  6358.    {
  6359.       if (m_pUIActiveItem && (m_pUIActiveItem->m_cntrlInfo.dwFlags & CTRLINFO_EATS_ESCAPE)) 
  6360.          return FALSE;
  6361.                           
  6362.       m_pEscapeBttn->m_pIOleControl->OnMnemonic(lpmsg);
  6363.       
  6364.       return TRUE;
  6365.    }                   
  6366.    
  6367.    if ((WM_KEYDOWN == lpmsg->message) && 
  6368.       (VK_TAB == lpmsg->wParam))
  6369.    {                            
  6370.       if (!m_pUIActiveItem)
  6371.          return TRUE;
  6372.          
  6373.       POSITION      thisPos;
  6374.       CLead   *nextControl = NULL;
  6375.       BOOL         bShiftState;
  6376.       
  6377.       bShiftState = GetKeyState(VK_SHIFT) >> 1;
  6378.       
  6379.       thisPos = m_OleControls.Find(m_pUIActiveItem);
  6380.       
  6381.       if (bShiftState)
  6382.          m_OleControls.GetPrev(thisPos);
  6383.       else
  6384.          m_OleControls.GetNext(thisPos);
  6385.       
  6386.       while (nextControl != m_pUIActiveItem)
  6387.       {
  6388.          if (NULL == thisPos)
  6389.          {
  6390.             if (bShiftState)
  6391.                thisPos = m_OleControls.GetTailPosition();
  6392.             else
  6393.                thisPos = m_OleControls.GetHeadPosition();
  6394.          }
  6395.  
  6396.          if (bShiftState)
  6397.             nextControl = (CLead *)m_OleControls.GetPrev(thisPos);
  6398.          else
  6399.             nextControl = (CLead *)m_OleControls.GetNext(thisPos);
  6400.  
  6401.          if ( ! ((nextControl->m_dwStatus & OLEMISC_ACTSLIKELABEL) ||
  6402.                (nextControl->m_dwStatus & OLEMISC_NOUIACTIVATE)) )
  6403.             break;   
  6404.       }
  6405.  
  6406.       if (m_pUIActiveItem != nextControl)
  6407.       {
  6408.          nextControl->SetFocus();
  6409.          nextControl->ActivateUI();
  6410.          return TRUE;
  6411.       }
  6412.    }                  
  6413.  
  6414.    if ((WM_CHAR == lpmsg->message) && 
  6415.       (VK_TAB == lpmsg->wParam))
  6416.       return TRUE;
  6417.    
  6418.    return FALSE; 
  6419. }
  6420.  
  6421. BOOL CLeadContainer::ProcessMnemonics(LPMSG lpmsg)
  6422. {
  6423.    POSITION      pos;
  6424.    CLead   *pOcxItem;
  6425.    WORD          wID;
  6426.    
  6427.    for (pos = m_OleControls.GetHeadPosition(); pos;)
  6428.    {
  6429.       pOcxItem = (CLead *)m_OleControls.GetNext(pos);
  6430.       
  6431.       if (pOcxItem->m_cntrlInfo.hAccel)
  6432.       {
  6433.          for (UINT ai = 0; ai < pOcxItem->m_cntrlInfo.cAccel; ai++)
  6434.             if (IsAccelerator(pOcxItem->m_cntrlInfo.hAccel, pOcxItem->m_cntrlInfo.cAccel,
  6435.                      lpmsg, &wID))
  6436.             {                           
  6437.                pOcxItem->m_pIOleControl->OnMnemonic(lpmsg);
  6438.                return TRUE;
  6439.             }
  6440.       }   
  6441.    }
  6442.  
  6443.    return FALSE;
  6444.  
  6445. }
  6446.  
  6447. HRESULT CLeadContainer::OnTranslateAccelerator(LPMSG lpmsg)
  6448.  
  6449.    if (ProcessMnemonics(lpmsg))
  6450.       ResultFromScode(S_OK);
  6451.  
  6452.    return ResultFromScode(S_FALSE);
  6453. }
  6454.  
  6455. BOOL CLeadContainer::PreTranslateMessage(LPMSG lpmsg)
  6456. {
  6457.    
  6458.    if (lpmsg->message >= WM_KEYFIRST && lpmsg->message <= WM_KEYLAST)
  6459.    {
  6460.       if (ProcessKey(lpmsg))
  6461.          return TRUE;
  6462.  
  6463.       if (m_pUIActiveItem && m_pUIActiveItem->m_pIOleInPlaceActiveObject)
  6464.       {   
  6465.          if (m_pUIActiveItem->m_pIOleInPlaceActiveObject->TranslateAccelerator(lpmsg) == S_OK)
  6466.             return TRUE;
  6467.       }
  6468.    
  6469.  
  6470.       if (ProcessMnemonics(lpmsg))
  6471.               return TRUE;
  6472.    }
  6473.         
  6474.    return FALSE;
  6475. }
  6476.  
  6477.  
  6478. HRESULT CLeadContainer::PreMessageFilter(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
  6479.          LRESULT FAR* lplResult, DWORD FAR * lpdwCookie)
  6480. {
  6481.    return S_OK;
  6482. }
  6483.  
  6484.  
  6485. HRESULT CLeadContainer::PostMessageFilter(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
  6486.          LRESULT FAR* lplResult, DWORD dwCookie)
  6487. {
  6488.    return S_OK;
  6489. }
  6490.  
  6491. void CLeadContainer::GetWindowContext(
  6492.       CLead *pControl, 
  6493.       LPOLEINPLACEFRAME FAR* lplpFrame,
  6494.       LPOLEINPLACEUIWINDOW FAR* lplpDoc,
  6495.       LPRECT lpPosRect,   LPRECT lpClipRect,
  6496.       LPOLEINPLACEFRAMEINFO lpFrameInfo)
  6497. {
  6498.  
  6499.    ::CopyRect(lpPosRect, &pControl->m_rcClient);
  6500.    ::CopyRect(lpClipRect, &pControl->m_rcClient);
  6501.    lpFrameInfo->hwndFrame = pControl->m_hWndParent;
  6502.  
  6503.    *lplpFrame = (LPOLEINPLACEFRAME)GetInterface(&IID_IOleInPlaceFrame);
  6504.    *lplpDoc = NULL;
  6505.  
  6506.    lpFrameInfo->fMDIApp = FALSE;
  6507.    lpFrameInfo->haccel = NULL;
  6508.    lpFrameInfo->cAccelEntries = 0;
  6509.  
  6510. }
  6511.  
  6512. HRESULT CLeadContainer::OnGetWindow(HWND FAR*)
  6513. {
  6514.    return ResultFromScode(E_NOTIMPL);
  6515. }
  6516.  
  6517. HRESULT CLeadContainer::OnContextSensitiveHelp(BOOL)
  6518. {
  6519.    return ResultFromScode(E_NOTIMPL);
  6520. }
  6521.  
  6522. HRESULT CLeadContainer::OnGetBorder(LPRECT)
  6523. {
  6524.    return ResultFromScode(E_NOTIMPL);
  6525. }
  6526.  
  6527. HRESULT CLeadContainer::OnRequestBorderSpace(LPCBORDERWIDTHS)
  6528. {
  6529.    return ResultFromScode(E_NOTIMPL);
  6530. }
  6531.  
  6532. HRESULT CLeadContainer::OnSetBorderSpace(LPCBORDERWIDTHS)
  6533. {
  6534.    return ResultFromScode(E_NOTIMPL);
  6535. }
  6536.  
  6537. HRESULT CLeadContainer::OnInsertMenus(CMenu *, LPOLEMENUGROUPWIDTHS)
  6538. {
  6539.    return ResultFromScode(E_NOTIMPL);
  6540. }
  6541.  
  6542. HRESULT CLeadContainer::OnSetMenu(CMenu *, HOLEMENU, CLead *pActiveOcx)
  6543. {
  6544.    return ResultFromScode(E_NOTIMPL);
  6545. }
  6546.  
  6547. HRESULT CLeadContainer::OnRemoveMenus(CMenu *)
  6548. {
  6549.    return ResultFromScode(E_NOTIMPL);
  6550. }
  6551.  
  6552. #if IS_MFC40
  6553. /*
  6554.     This is for 32-bit code compiled with Visual C++ 4.0 only
  6555. */
  6556. HRESULT CLeadContainer::OnSetStatusText(LPCOLESTR)
  6557. #else
  6558. HRESULT CLeadContainer::OnSetStatusText(LPCTSTR)
  6559. #endif
  6560. {
  6561.    return ResultFromScode(E_NOTIMPL);
  6562. }
  6563.  
  6564. HRESULT CLeadContainer::OnEnableModeless(BOOL)
  6565. {
  6566.    return ResultFromScode(E_NOTIMPL);
  6567. }
  6568.  
  6569. CLead* CLeadContainer::GetControlFromActiveObject(LPOLEINPLACEACTIVEOBJECT lpActiveObject)
  6570. {
  6571.  
  6572.    CLead   *pControl;
  6573.    
  6574.    for (POSITION pos = m_OleControls.GetHeadPosition(); pos; )
  6575.    {
  6576.       pControl = (CLead *)m_OleControls.GetNext(pos);
  6577.       if (pControl->m_pIOleInPlaceActiveObject == lpActiveObject)
  6578.          return pControl;
  6579.    }
  6580.       
  6581.    return NULL;
  6582. }
  6583.  
  6584. CLead* CLeadContainer::GetControlFromHwnd(HWND hWnd)
  6585. {
  6586.  
  6587.    CLead   *pControl;
  6588.    
  6589.    for (POSITION pos = m_OleControls.GetHeadPosition(); pos; )
  6590.    {
  6591.       pControl = (CLead *)m_OleControls.GetNext(pos);
  6592.       if (pControl->m_hWnd == hWnd)
  6593.          return pControl;
  6594.    }
  6595.       
  6596.    return NULL;
  6597. }
  6598.  
  6599.  
  6600. BEGIN_MESSAGE_MAP(CLeadContainer, CCmdTarget)
  6601.    //{{AFX_MSG_MAP(CLeadContainer)
  6602.       // NOTE - the ClassWizard will add and remove mapping macros here.
  6603.    //}}AFX_MSG_MAP
  6604. END_MESSAGE_MAP()
  6605.  
  6606. BEGIN_DISPATCH_MAP(CLeadContainer, CCmdTarget)
  6607.    //{{AFX_DISPATCH_MAP(CLeadContainer)
  6608.    DISP_PROPERTY_EX_ID(CLeadContainer, "ForeColor",       DISPID_AMBIENT_FORECOLOR,       GetForeColor, NULL, VT_COLOR)
  6609.    DISP_PROPERTY_EX_ID(CLeadContainer, "BackColor",       DISPID_AMBIENT_BACKCOLOR,       GetBackColor, NULL, VT_COLOR)
  6610.    DISP_PROPERTY_EX_ID(CLeadContainer, "Font",          DISPID_AMBIENT_FONT,          GetFont, NULL, VT_FONT)
  6611.    DISP_PROPERTY_EX_ID(CLeadContainer, "ScaleUnits",    DISPID_AMBIENT_SCALEUNITS,       GetScaleUnits, NULL, VT_BSTR)
  6612.    DISP_PROPERTY_EX_ID(CLeadContainer, "TextAlign",       DISPID_AMBIENT_TEXTALIGN,       GetTextAlign, NULL, VT_I2)
  6613.    DISP_PROPERTY_EX_ID(CLeadContainer, "MessageReflect", DISPID_AMBIENT_MESSAGEREFLECT,    GetMessageReflect, NULL, VT_BOOL)
  6614.    DISP_PROPERTY_EX_ID(CLeadContainer, "UserMode",       DISPID_AMBIENT_USERMODE,       GetUserMode, NULL, VT_BOOL)
  6615.    DISP_PROPERTY_EX_ID(CLeadContainer, "UIDead",       DISPID_AMBIENT_UIDEAD,          GetUIDead, NULL, VT_BOOL)
  6616.    DISP_PROPERTY_EX_ID(CLeadContainer, "ShowGrabHandles",DISPID_AMBIENT_SHOWGRABHANDLES, GetShowGrabHandles, NULL, VT_BOOL)
  6617.    DISP_PROPERTY_EX_ID(CLeadContainer, "ShowHatching",    DISPID_AMBIENT_SHOWHATCHING,    GetShowHatching, NULL, VT_BOOL)
  6618.    DISP_PROPERTY_EX_ID(CLeadContainer, "SupportsMnemonics",DISPID_AMBIENT_SUPPORTSMNEMONICS,   GetSupportsMnemonics, NULL, VT_BOOL)
  6619.    DISP_PROPERTY_EX_ID(CLeadContainer, "AutoClip",       DISPID_AMBIENT_AUTOCLIP,       GetAutoClip, NULL, VT_BOOL)
  6620.    //}}AFX_DISPATCH_MAP
  6621. END_DISPATCH_MAP()
  6622.  
  6623. OLE_COLOR CLeadContainer::GetForeColor() 
  6624. {
  6625.  
  6626.    return m_foreColor;
  6627. }
  6628.  
  6629. void CLeadContainer::SetForeColor(OLE_COLOR nNewValue, BOOL bNotify ) 
  6630. {
  6631.  
  6632.    m_foreColor = nNewValue;
  6633.  
  6634.    if (bNotify)
  6635.       OnPropertyChanged(DISPID_AMBIENT_FORECOLOR);
  6636.    else
  6637.       m_bPropertyChanged = TRUE;
  6638. }
  6639.  
  6640. OLE_COLOR CLeadContainer::GetBackColor() 
  6641. {
  6642.  
  6643.    return m_backColor;
  6644. }
  6645.  
  6646. void CLeadContainer::SetBackColor(OLE_COLOR nNewValue, BOOL bNotify ) 
  6647. {
  6648.  
  6649.    m_backColor = nNewValue;
  6650.  
  6651.    if (bNotify)
  6652.       OnPropertyChanged(DISPID_AMBIENT_BACKCOLOR);
  6653.    else
  6654.       m_bPropertyChanged = TRUE;
  6655. }
  6656.  
  6657. LPFONTDISP CLeadContainer::GetFont()
  6658. {
  6659.    return m_fontHolder.GetFontDispatch();
  6660. }
  6661.  
  6662. void CLeadContainer::SetFont(LPFONTDISP pFontDisp, BOOL bNotify) 
  6663. {
  6664.  
  6665.    m_fontHolder.InitializeFont(NULL, pFontDisp);
  6666.  
  6667.    if (bNotify)
  6668.       OnPropertyChanged(DISPID_AMBIENT_FONT);
  6669.    else
  6670.       m_bPropertyChanged = TRUE;
  6671. }
  6672.  
  6673.  
  6674. void CLeadContainer::SetFont(LPFONTDESC pFontDesc, BOOL bNotify) 
  6675. {
  6676.  
  6677.    m_fontHolder.InitializeFont(pFontDesc, NULL);
  6678.  
  6679.    if (bNotify)
  6680.       OnPropertyChanged(DISPID_AMBIENT_FONT);
  6681.    else
  6682.       m_bPropertyChanged = TRUE;
  6683. }
  6684.  
  6685.  
  6686. long CLeadContainer::GetLocaleID() 
  6687. {
  6688.  
  6689.    return m_localeID;
  6690. }
  6691.  
  6692. void CLeadContainer::SetLocaleID(long nNewValue, BOOL bNotify ) 
  6693. {
  6694.  
  6695.    m_localeID = nNewValue;
  6696.    if (bNotify)
  6697.       OnPropertyChanged(DISPID_AMBIENT_LOCALEID);
  6698.    else
  6699.       m_bPropertyChanged = TRUE;
  6700. }
  6701.  
  6702. BSTR CLeadContainer::GetScaleUnits() 
  6703. {
  6704.  
  6705.    return m_scaleUnits.AllocSysString();
  6706. }
  6707.  
  6708. void CLeadContainer::SetScaleUnits(LPCTSTR lpszNewValue, BOOL bNotify ) 
  6709. {
  6710.  
  6711.    m_scaleUnits = lpszNewValue;
  6712.    if (bNotify)
  6713.       OnPropertyChanged(DISPID_AMBIENT_SCALEUNITS);
  6714.    else
  6715.       m_bPropertyChanged = TRUE;
  6716. }
  6717.  
  6718. short CLeadContainer::GetTextAlign() 
  6719. {
  6720.  
  6721.    return m_textAlign;
  6722. }
  6723.  
  6724. void CLeadContainer::SetTextAlign(short nNewValue, BOOL bNotify ) 
  6725. {
  6726.  
  6727.    m_textAlign = nNewValue;
  6728.    if (bNotify)
  6729.       OnPropertyChanged(DISPID_AMBIENT_TEXTALIGN);
  6730.    else
  6731.       m_bPropertyChanged = TRUE;
  6732. }
  6733.  
  6734. BOOL CLeadContainer::GetMessageReflect() 
  6735. {
  6736.  
  6737.    return m_bMessageReflect;
  6738. }
  6739.  
  6740. void CLeadContainer::SetMessageReflect(BOOL bNewValue, BOOL bNotify ) 
  6741. {
  6742.  
  6743.    m_bMessageReflect = bNewValue;
  6744.    if (bNotify)
  6745.       OnPropertyChanged(DISPID_AMBIENT_MESSAGEREFLECT);
  6746.    else
  6747.       m_bPropertyChanged = TRUE;
  6748. }
  6749.  
  6750. BOOL CLeadContainer::GetUserMode() 
  6751. {
  6752.  
  6753.    return m_bUserMode;
  6754. }
  6755.  
  6756. void CLeadContainer::SetUserMode(BOOL bNewValue, BOOL bNotify ) 
  6757. {
  6758.  
  6759.    m_bUserMode = bNewValue;
  6760.  
  6761.    if (bNotify)
  6762.       OnPropertyChanged(DISPID_AMBIENT_USERMODE);
  6763.    else
  6764.       m_bPropertyChanged = TRUE;
  6765. }
  6766.  
  6767. BOOL CLeadContainer::GetUIDead() 
  6768. {
  6769.  
  6770.    return m_bUIDead;
  6771. }
  6772.  
  6773. void CLeadContainer::SetUIDead(BOOL bNewValue, BOOL bNotify ) 
  6774. {
  6775.  
  6776.    m_bUIDead = bNewValue;
  6777.  
  6778.    if (bNotify)
  6779.       OnPropertyChanged(DISPID_AMBIENT_UIDEAD);
  6780.    else
  6781.       m_bPropertyChanged = TRUE;
  6782. }
  6783.  
  6784. BOOL CLeadContainer::GetShowGrabHandles() 
  6785. {
  6786.    return m_bShowGrabHandles;
  6787. }
  6788.  
  6789. void CLeadContainer::SetShowGrabHandles(BOOL bNewValue, BOOL bNotify ) 
  6790. {
  6791.  
  6792.    m_bShowGrabHandles = bNewValue;
  6793.  
  6794.    if (bNotify)
  6795.       OnPropertyChanged(DISPID_AMBIENT_SHOWGRABHANDLES);
  6796.    else
  6797.       m_bPropertyChanged = TRUE;
  6798. }
  6799.  
  6800. BOOL CLeadContainer::GetShowHatching() 
  6801. {
  6802.  
  6803.    return m_bShowHatching;
  6804. }
  6805.  
  6806. void CLeadContainer::SetShowHatching(BOOL bNewValue, BOOL bNotify) 
  6807. {
  6808.  
  6809.    m_bShowHatching = bNewValue;
  6810.    
  6811.    if (bNotify)
  6812.       OnPropertyChanged(DISPID_AMBIENT_SHOWHATCHING);
  6813.    else
  6814.       m_bPropertyChanged = TRUE;
  6815. }
  6816.  
  6817. BOOL CLeadContainer::GetSupportsMnemonics() 
  6818. {
  6819.  
  6820.    return m_bSupportsMnemonics;
  6821. }
  6822.  
  6823. void CLeadContainer::SetSupportsMnemonics(BOOL bNewValue, BOOL bNotify ) 
  6824. {
  6825.  
  6826.    m_bSupportsMnemonics = bNewValue;
  6827.    
  6828.    if (bNotify)
  6829.       OnPropertyChanged(DISPID_AMBIENT_SUPPORTSMNEMONICS);
  6830.    else
  6831.       m_bPropertyChanged = TRUE;
  6832. }
  6833.  
  6834. BOOL CLeadContainer::GetAutoClip() 
  6835. {
  6836.  
  6837.    return m_bAutoClip;
  6838. }
  6839.  
  6840. void CLeadContainer::SetAutoClip(BOOL bNewValue, BOOL bNotify ) 
  6841. {
  6842.  
  6843.    m_bAutoClip = bNewValue;
  6844.    
  6845.    if (bNotify)
  6846.       OnPropertyChanged(DISPID_AMBIENT_AUTOCLIP);
  6847.    else
  6848.       m_bPropertyChanged = TRUE;
  6849. }
  6850.  
  6851.  
  6852. void CLeadContainer::OnFontChanged()
  6853. {
  6854.  
  6855.    m_bFontPropertyChanged = TRUE;
  6856.  
  6857. }
  6858.  
  6859. void CLeadContainer::OnPropertyChanged(DISPID   prop)
  6860. {
  6861.    
  6862.    if (m_bPropertyChanged)
  6863.       prop = -1;
  6864.    else
  6865.    if (m_bFontPropertyChanged && (prop != DISPID_AMBIENT_FONT))
  6866.       prop = -1;
  6867.  
  6868.    POSITION   pos;
  6869.    CLead   *pOcxItem;
  6870.    
  6871.    for (pos = m_OleControls.GetHeadPosition(); pos;)
  6872.    {
  6873.       pOcxItem = (CLead *)m_OleControls.GetNext(pos);
  6874.       pOcxItem->m_pIOleControl->OnAmbientPropertyChange(prop);
  6875.    }
  6876.  
  6877.    m_bPropertyChanged = m_bFontPropertyChanged = FALSE;
  6878. }
  6879.  
  6880. BEGIN_INTERFACE_MAP(CLeadContainer, CCmdTarget)
  6881.    INTERFACE_PART(CLeadContainer, IID_IOleInPlaceFrame, OleInPlaceFrame)
  6882.    INTERFACE_PART(CLeadContainer, IID_IPropertyNotifySink, FontNotification)
  6883. END_INTERFACE_MAP()
  6884.  
  6885.  
  6886. STDMETHODIMP_(ULONG) CLeadContainer::XOleInPlaceFrame::AddRef()
  6887. {
  6888.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6889.  
  6890.    return (ULONG)pThis->ExternalAddRef();
  6891. }
  6892.  
  6893. STDMETHODIMP_(ULONG) CLeadContainer::XOleInPlaceFrame::Release()
  6894. {
  6895.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6896.    return (ULONG)pThis->ExternalRelease();
  6897. }
  6898.  
  6899. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::QueryInterface(
  6900.    REFIID iid, LPVOID far* ppvObj)
  6901. {
  6902.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6903.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  6904. }
  6905.  
  6906. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::GetWindow(
  6907.    HWND FAR* lphwnd)
  6908. {
  6909.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6910.  
  6911.    *lphwnd = NULL;
  6912.  
  6913.    return pThis->OnGetWindow(lphwnd);
  6914. }
  6915.  
  6916. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::ContextSensitiveHelp(
  6917.    BOOL fEnterMode)
  6918. {
  6919.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6920.  
  6921.    return pThis->OnContextSensitiveHelp(fEnterMode);
  6922. }
  6923.  
  6924. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::GetBorder(
  6925.    LPRECT lpRectBorder)
  6926. {
  6927.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6928.  
  6929.    return pThis->OnGetBorder(lpRectBorder);
  6930. }
  6931.  
  6932. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::RequestBorderSpace(
  6933.    LPCRECT lpRectWidths)
  6934. {
  6935.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6936.  
  6937.    return pThis->OnRequestBorderSpace(lpRectWidths);
  6938. }
  6939.  
  6940. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetBorderSpace(
  6941.    LPCRECT lpRectWidths)
  6942. {
  6943.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6944.  
  6945.    return pThis->OnSetBorderSpace(lpRectWidths);
  6946. }
  6947.  
  6948. #if IS_MFC40
  6949. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetActiveObject(
  6950.    LPOLEINPLACEACTIVEOBJECT lpActiveObject, LPCOLESTR pszObjName)
  6951. #else
  6952. // this is for Visual C++ 2.0
  6953. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetActiveObject(
  6954.    LPOLEINPLACEACTIVEOBJECT lpActiveObject, LPCTSTR pszObjName)
  6955. #endif
  6956. {
  6957.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6958.  
  6959.  
  6960.    if (lpActiveObject)
  6961.    {   
  6962.       CLead *pControl;
  6963.       pControl = pThis->GetControlFromActiveObject(lpActiveObject);
  6964.    
  6965.       pThis->OnSetActiveObject(pControl);
  6966.    }
  6967.    else
  6968.       pThis->OnSetActiveObject(NULL);
  6969.    
  6970.    return S_OK;
  6971. }
  6972.  
  6973. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::InsertMenus(
  6974.    HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
  6975. {
  6976.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6977.  
  6978.    return pThis->OnInsertMenus(CMenu::FromHandle(hmenuShared), lpMenuWidths);
  6979. }
  6980.  
  6981. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetMenu(
  6982.    HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject)
  6983. {
  6984.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6985.  
  6986.  
  6987.    CLead *pControl;
  6988.    pControl = pThis->GetControlFromHwnd(hwndActiveObject);
  6989.    
  6990.    return pThis->OnSetMenu(CMenu::FromHandle(hmenuShared), holemenu, pControl);
  6991.  
  6992. }
  6993.  
  6994. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::RemoveMenus(
  6995.    HMENU hmenuShared)
  6996. {
  6997.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  6998.  
  6999.    return pThis->OnRemoveMenus(CMenu::FromHandle(hmenuShared));
  7000. }
  7001.  
  7002. // this is for Visual C++ 2.0
  7003. #if IS_MFC40
  7004. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetStatusText(
  7005.    LPCOLESTR lpszStatusText)
  7006. #else
  7007. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::SetStatusText(
  7008.    LPCTSTR lpszStatusText)
  7009. #endif
  7010. {
  7011.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  7012.  
  7013.    return pThis->OnSetStatusText(lpszStatusText);
  7014.  
  7015. }
  7016.  
  7017. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::EnableModeless(BOOL fEnable)
  7018. {
  7019.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  7020.  
  7021.    
  7022.    return pThis->OnEnableModeless(fEnable);
  7023. }
  7024.  
  7025. STDMETHODIMP CLeadContainer::XOleInPlaceFrame::TranslateAccelerator(
  7026.    LPMSG lpmsg, WORD wID)
  7027. {
  7028.    METHOD_MANAGE_STATE(CLeadContainer, OleInPlaceFrame)
  7029.                                     
  7030.    return pThis->OnTranslateAccelerator(lpmsg);
  7031.  
  7032. }
  7033.  
  7034.  
  7035. STDMETHODIMP_(ULONG) CLeadContainer::XFontNotification::AddRef()
  7036. {
  7037.    METHOD_MANAGE_STATE(CLeadContainer, FontNotification)
  7038.  
  7039.    return (ULONG)pThis->ExternalAddRef();
  7040. }
  7041.  
  7042.  
  7043. STDMETHODIMP_(ULONG) CLeadContainer::XFontNotification::Release()
  7044. {
  7045.    METHOD_MANAGE_STATE(CLeadContainer, FontNotification)
  7046.    return (ULONG)pThis->ExternalRelease();
  7047.  
  7048. }
  7049.  
  7050.  
  7051. STDMETHODIMP CLeadContainer::XFontNotification::QueryInterface(
  7052.    REFIID iid, LPVOID far* ppvObj)
  7053. {
  7054.    METHOD_MANAGE_STATE(CLeadContainer, FontNotification)
  7055.  
  7056.    return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
  7057. }
  7058.  
  7059.  
  7060. STDMETHODIMP CLeadContainer::XFontNotification::OnChanged(DISPID)
  7061. {
  7062.    METHOD_MANAGE_STATE(CLeadContainer, FontNotification)
  7063.  
  7064.    return NOERROR;
  7065. }
  7066.  
  7067. STDMETHODIMP CLeadContainer::XFontNotification::OnRequestEdit(DISPID)
  7068. {
  7069.    METHOD_MANAGE_STATE(CLeadContainer, FontNotification)
  7070.  
  7071.    return NOERROR;
  7072. }
  7073.  
  7074.  
  7075.  
  7076. #ifdef EXPORT
  7077. #undef EXPORT
  7078. #endif
  7079. #define EXPORT
  7080.  
  7081. EXPORT CFontHolder::CFontHolder(LPPROPERTYNOTIFYSINK pNotify) :
  7082.    m_pFont(NULL),
  7083.    m_dwConnectCookie(0),
  7084.    m_pNotify(pNotify)
  7085. {
  7086. }
  7087.  
  7088. EXPORT CFontHolder::~CFontHolder()
  7089. {
  7090.    ReleaseFont();
  7091. }
  7092.  
  7093. void EXPORT CFontHolder::ReleaseFont()
  7094. {
  7095.    if ((m_pFont) && (m_pNotify))
  7096.    {
  7097.       AfxConnectionUnadvise(m_pFont, IID_IPropertyNotifySink, m_pNotify,
  7098.          FALSE, m_dwConnectCookie);
  7099.    }
  7100.  
  7101.    RELEASE(m_pFont);
  7102. }
  7103.  
  7104.  
  7105.  
  7106.  
  7107. void EXPORT CFontHolder::InitializeFont(const FONTDESC FAR* pFontDesc,
  7108.    LPDISPATCH pFontDispAmbient)
  7109. {
  7110.  
  7111.    ReleaseFont();
  7112.  
  7113.    LPFONT pFontAmbient;
  7114.    LPFONT pFontNew = NULL;
  7115.  
  7116.    if ((pFontDispAmbient) &&
  7117.       SUCCEEDED(pFontDispAmbient->QueryInterface(IID_IFont,
  7118.             (LPVOID FAR*)&pFontAmbient)))
  7119.    {
  7120.  
  7121.       pFontAmbient->Clone(&pFontNew);
  7122.       pFontAmbient->Release();
  7123.    }
  7124.    else
  7125.    {
  7126.       if (!pFontDesc)
  7127.          pFontDesc = &_fdDefault;
  7128.  
  7129.       if (FAILED(CreateFontIndirect((LPFONTDESC)pFontDesc, IID_IFont,
  7130.             (LPVOID FAR *)&pFontNew)))
  7131.          pFontNew = NULL;
  7132.    }
  7133.  
  7134.    if (pFontNew)
  7135.       SetFont(pFontNew);
  7136. }
  7137.  
  7138.  
  7139. BOOL _AfxIsSameFont(CFontHolder& font, const FONTDESC FAR* pFontDesc,
  7140.    LPFONTDISP pFontDispAmbient)
  7141. {
  7142.    if (!font.m_pFont)
  7143.       return FALSE;
  7144.  
  7145.    BOOL bSame = FALSE;
  7146.  
  7147.    if (pFontDispAmbient)
  7148.    {
  7149.       LPFONT pFontAmbient;
  7150.       if (SUCCEEDED(pFontDispAmbient->QueryInterface(IID_IFont,
  7151.          (LPVOID FAR*)&pFontAmbient)))
  7152.       {
  7153.          bSame = pFontAmbient->IsEqual(font.m_pFont) == S_OK;
  7154.          pFontAmbient->Release();
  7155.       }
  7156.    }
  7157.    else
  7158.    {
  7159.       if (!pFontDesc)
  7160.          pFontDesc = &_fdDefault;
  7161.  
  7162.       bSame = TRUE;
  7163.       BOOL bFlag;
  7164.  
  7165.       font.m_pFont->get_Italic(&bFlag);
  7166.       bSame = (bFlag == pFontDesc->fItalic);
  7167.  
  7168.       if (bSame)
  7169.       {
  7170.          font.m_pFont->get_Underline(&bFlag);
  7171.          bSame = (bFlag == pFontDesc->fUnderline);
  7172.       }
  7173.  
  7174.       if (bSame)
  7175.       {
  7176.          font.m_pFont->get_Strikethrough(&bFlag);
  7177.          bSame = (bFlag == pFontDesc->fStrikethrough);
  7178.       }
  7179.  
  7180.       if (bSame)
  7181.       {
  7182.          short sCharset;
  7183.          font.m_pFont->get_Charset(&sCharset);
  7184.          bSame = (sCharset == pFontDesc->sCharset);
  7185.       }
  7186.  
  7187.       if (bSame)
  7188.       {
  7189.          short sWeight;
  7190.          font.m_pFont->get_Weight(&sWeight);
  7191.          bSame = (sWeight == pFontDesc->sWeight);
  7192.       }
  7193.  
  7194.       if (bSame)
  7195.       {
  7196.          CURRENCY cy;
  7197.          font.m_pFont->get_Size(&cy);
  7198.          bSame = (memcmp(&cy, &pFontDesc->cySize, sizeof(CURRENCY)) == 0);
  7199.       }
  7200.  
  7201.       if (bSame)
  7202.       {
  7203.          BSTR bstrName;
  7204.          font.m_pFont->get_Name(&bstrName);
  7205.          CString strName1(bstrName);
  7206.          CString strName2(pFontDesc->lpstrName);
  7207.          bSame = (strName1 == strName2);
  7208.          SysFreeString(bstrName);
  7209.       }
  7210.    }
  7211.  
  7212.    return bSame;
  7213. }
  7214.  
  7215.  
  7216.  
  7217.  
  7218. HFONT EXPORT CFontHolder::GetFontHandle()
  7219. {
  7220.    CDC dc;
  7221.    dc.CreateCompatibleDC(NULL);
  7222.    return GetFontHandle((long)dc.GetDeviceCaps(LOGPIXELSY), HIMETRIC_PER_INCH);
  7223. }
  7224.  
  7225. HFONT EXPORT CFontHolder::GetFontHandle(long cyLogical, long cyHimetric)
  7226. {
  7227.    HFONT hFont = NULL;
  7228.  
  7229.    if ((m_pFont) &&
  7230.       SUCCEEDED(m_pFont->SetRatio(cyLogical, cyHimetric)) &&
  7231.       SUCCEEDED(m_pFont->get_hFont(&hFont)))
  7232.    {
  7233.    }
  7234.  
  7235.    return hFont;
  7236. }
  7237.  
  7238. CFont* EXPORT CFontHolder::Select(CDC* pDC, long cyLogical, long cyHimetric)
  7239. {
  7240.  
  7241.    HFONT hFont = NULL;
  7242.  
  7243.    if (m_pFont)
  7244.       hFont = GetFontHandle(cyLogical, cyHimetric);
  7245.  
  7246.    if (hFont)
  7247.    {
  7248.       if ((pDC->m_hAttribDC != pDC->m_hDC) &&
  7249.          (pDC->m_hAttribDC))
  7250.       {
  7251.          ::SelectObject(pDC->m_hAttribDC, hFont);
  7252.       }
  7253.  
  7254.       return CFont::FromHandle((HFONT)::SelectObject(pDC->m_hDC, hFont));
  7255.    }
  7256.  
  7257.    return NULL;
  7258. }
  7259.  
  7260.  
  7261. void EXPORT CFontHolder::QueryTextMetrics(LPTEXTMETRIC lptm)
  7262. {
  7263.  
  7264.    if (m_pFont)
  7265.    {
  7266. #if defined(_UNICODE) || defined(OLE2ANSI) || !defined(WIN32)
  7267.       m_pFont->QueryTextMetrics(lptm);
  7268. #else
  7269.       TEXTMETRICW tmw;
  7270.       m_pFont->QueryTextMetrics(&tmw);
  7271.       AfxTextMetricW2A(lptm, &tmw);
  7272. #endif
  7273.    }
  7274.    else
  7275.    {
  7276.       memset(lptm, 0, sizeof(TEXTMETRIC));
  7277.    }
  7278. }
  7279.  
  7280.  
  7281. LPFONTDISP EXPORT CFontHolder::GetFontDispatch()
  7282. {
  7283.    LPFONTDISP pFontDisp = NULL;
  7284.  
  7285.    if (m_pFont)
  7286.       SUCCEEDED(m_pFont->QueryInterface(IID_IFontDisp, (LPVOID*)&pFontDisp));
  7287.  
  7288.    return pFontDisp;
  7289. }
  7290.  
  7291.  
  7292. void EXPORT CFontHolder::SetFont(LPFONT pFontNew)
  7293. {
  7294.  
  7295.    if (m_pFont)
  7296.       ReleaseFont();
  7297.  
  7298.    m_pFont = pFontNew;
  7299.  
  7300.    if (m_pNotify)
  7301.    {
  7302.       AfxConnectionAdvise(m_pFont, IID_IPropertyNotifySink, m_pNotify,
  7303.          FALSE, &m_dwConnectCookie);
  7304.    }
  7305. }
  7306.  
  7307.  
  7308. HRESULT CFontHolder::CreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, LPVOID FAR* lplpvObj)
  7309. {   
  7310.  
  7311.     HRESULT hresult;
  7312.     LPUNKNOWN punk;
  7313.     LPFONT pFont = NULL;
  7314.  
  7315.     hresult = CoCreateInstance(CLSID_StdFont, NULL,
  7316.          CLSCTX_INPROC_SERVER, IID_IUnknown, (LPLP)&punk);
  7317.  
  7318.    if (FAILED(hresult))
  7319.       return hresult;
  7320.  
  7321.     VERIFY(SUCCEEDED(punk->QueryInterface(IID_IFont, (LPLP) &pFont)));
  7322.     punk->Release();
  7323.  
  7324.  
  7325.    if (NULL == lpFontDesc)
  7326.       lpFontDesc = (LPFONTDESC)&_fdDefault;
  7327.  
  7328.    
  7329.    pFont->put_Name(lpFontDesc->lpstrName);
  7330.    pFont->put_Size(lpFontDesc->cySize);
  7331.    pFont->put_Weight(lpFontDesc->sWeight);
  7332.    pFont->put_Charset(lpFontDesc->sCharset);
  7333.    pFont->put_Italic(lpFontDesc->fItalic);
  7334.    pFont->put_Underline(lpFontDesc->fUnderline);
  7335.    pFont->put_Strikethrough(lpFontDesc->fStrikethrough);
  7336.  
  7337.    if (riid != IID_IFont)
  7338.    {
  7339.       VERIFY(SUCCEEDED(pFont->QueryInterface(riid, lplpvObj)));
  7340.       pFont->Release();
  7341.    }
  7342.    else
  7343.       *lplpvObj = pFont;
  7344.       
  7345.    return NOERROR;   
  7346. }
  7347.  
  7348.  
  7349. BOOL AFXAPI AfxConnectionAdvise(LPUNKNOWN pUnkSrc, REFIID iid,
  7350.    LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD FAR* pdwCookie)
  7351. {
  7352.  
  7353.    BOOL bSuccess = FALSE;
  7354.  
  7355.    LPCONNECTIONPOINTCONTAINER pCPC;
  7356.  
  7357.    if (SUCCEEDED(pUnkSrc->QueryInterface(
  7358.                IID_IConnectionPointContainer,
  7359.                (LPVOID FAR*)&pCPC)))
  7360.    {
  7361.  
  7362.       LPCONNECTIONPOINT pCP;
  7363.  
  7364.       if (SUCCEEDED(pCPC->FindConnectionPoint(iid, &pCP)))
  7365.       {
  7366.  
  7367.          if (SUCCEEDED(pCP->Advise(pUnkSink, pdwCookie)))
  7368.             bSuccess = TRUE;
  7369.  
  7370.          pCP->Release();
  7371.  
  7372.  
  7373.          if (bSuccess && !bRefCount)
  7374.             pUnkSink->Release();
  7375.       }
  7376.  
  7377.       pCPC->Release();
  7378.    }
  7379.  
  7380.    return bSuccess;
  7381. }
  7382.  
  7383.  
  7384. BOOL AFXAPI AfxConnectionUnadvise(LPUNKNOWN pUnkSrc, REFIID iid,
  7385.    LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD dwCookie)
  7386. {
  7387.  
  7388.  
  7389.    if (!bRefCount)
  7390.       pUnkSink->AddRef();
  7391.  
  7392.    BOOL bSuccess = FALSE;
  7393.  
  7394.    LPCONNECTIONPOINTCONTAINER pCPC;
  7395.  
  7396.    if (SUCCEEDED(pUnkSrc->QueryInterface(
  7397.                IID_IConnectionPointContainer,
  7398.                (LPVOID FAR*)&pCPC)))
  7399.    {
  7400.  
  7401.       LPCONNECTIONPOINT pCP;
  7402.  
  7403.       if (SUCCEEDED(pCPC->FindConnectionPoint(iid, &pCP)))
  7404.       {
  7405.  
  7406.          if (SUCCEEDED(pCP->Unadvise(dwCookie)))
  7407.             bSuccess = TRUE;
  7408.  
  7409.          pCP->Release();
  7410.       }
  7411.  
  7412.       pCPC->Release();
  7413.    }
  7414.  
  7415.  
  7416.    if (!bRefCount && !bSuccess)
  7417.       pUnkSink->Release();
  7418.  
  7419.    return bSuccess;
  7420. }
  7421.  
  7422. static HRESULT InterfaceConnect(LPUNKNOWN pObj, REFIID riid,
  7423.     LPUNKNOWN pIUnknownSink, LPDWORD pdwConn)
  7424. {
  7425.     HRESULT                     hr;
  7426.     LPCONNECTIONPOINTCONTAINER  pCPC;
  7427.     LPCONNECTIONPOINT           pCP;
  7428.  
  7429.     if (NULL==pObj || NULL==pIUnknownSink || NULL==pdwConn)
  7430.         return FALSE;
  7431.  
  7432.     hr=pObj->QueryInterface(IID_IConnectionPointContainer
  7433.         , (LPVOID *)&pCPC);
  7434.  
  7435.     if (FAILED(hr))
  7436.         return FALSE;
  7437.  
  7438.     hr=pCPC->FindConnectionPoint(riid, &pCP);
  7439.  
  7440.     if (SUCCEEDED(hr))
  7441.    {
  7442.         hr=pCP->Advise(pIUnknownSink, pdwConn);
  7443.         pCP->Release();
  7444.    }
  7445.  
  7446.     pCPC->Release();
  7447.     return hr;
  7448. }
  7449.  
  7450.  
  7451. static HRESULT InterfaceDisconnect(LPUNKNOWN pObj, REFIID riid, LPDWORD pdwConn)
  7452. {
  7453.     HRESULT                     hr;
  7454.     LPCONNECTIONPOINTCONTAINER  pCPC;
  7455.     LPCONNECTIONPOINT           pCP;
  7456.  
  7457.     if (NULL==pObj || NULL==pdwConn)
  7458.         return FALSE;
  7459.  
  7460.     if (0==*pdwConn)
  7461.         return FALSE;
  7462.  
  7463.     hr=pObj->QueryInterface(IID_IConnectionPointContainer
  7464.         , (LPVOID *)&pCPC);
  7465.  
  7466.     if (FAILED(hr))
  7467.         return FALSE;
  7468.  
  7469.     hr=pCPC->FindConnectionPoint(riid, &pCP);
  7470.  
  7471.     if (SUCCEEDED(hr))
  7472.         {
  7473.         hr=pCP->Unadvise(*pdwConn);
  7474.  
  7475.         if (SUCCEEDED(hr))
  7476.             *pdwConn=0L;
  7477.  
  7478.         pCP->Release();
  7479.         }
  7480.  
  7481.     pCPC->Release();
  7482.     return hr;
  7483. }
  7484.  
  7485.  
  7486. static HRESULT ObjectTypeInfo(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo)
  7487. {
  7488.     HRESULT             hr;
  7489.     LPPROVIDECLASSINFO  pIProvideClassInfo;
  7490.     
  7491.  
  7492.     *ppITypeInfo=NULL;
  7493.  
  7494.  
  7495.     hr=pObj->QueryInterface(IID_IProvideClassInfo
  7496.         , (LPVOID *)&pIProvideClassInfo);
  7497.  
  7498.     if (FAILED(hr))
  7499.         return hr;
  7500.  
  7501.     hr=pIProvideClassInfo->GetClassInfo(ppITypeInfo);
  7502.     pIProvideClassInfo->Release();
  7503.  
  7504.     return hr;
  7505. }
  7506.  
  7507.  
  7508. static HRESULT ObjectTypeInfoEvents(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo)
  7509. {
  7510.     HRESULT             hr;
  7511.     LPTYPEINFO          pITypeInfoAll;
  7512.     LPTYPEATTR          pTA;
  7513.  
  7514.  
  7515.     if (FAILED(hr = ObjectTypeInfo(pObj, &pITypeInfoAll)))
  7516.         return hr;
  7517.  
  7518.  
  7519.     *ppITypeInfo=NULL;  
  7520.  
  7521.     if (SUCCEEDED(hr = pITypeInfoAll->GetTypeAttr(&pTA)))
  7522.         {
  7523.         UINT        i;
  7524.         int         iFlags;
  7525.  
  7526.         for (i=0; i < pTA->cImplTypes; i++)
  7527.             {
  7528.             hr=pITypeInfoAll->GetImplTypeFlags(i, &iFlags);
  7529.  
  7530.             if (FAILED(hr))
  7531.                 continue;
  7532.  
  7533.             if ((iFlags & IMPLTYPEFLAG_FDEFAULT)
  7534.                 && (iFlags & IMPLTYPEFLAG_FSOURCE))
  7535.                 {
  7536.                 HREFTYPE    hRefType=NULL;
  7537.  
  7538.                 pITypeInfoAll->GetRefTypeOfImplType(i, &hRefType);
  7539.                 hr=pITypeInfoAll->GetRefTypeInfo(hRefType
  7540.                     , ppITypeInfo);
  7541.  
  7542.                 break;
  7543.                 }
  7544.             }
  7545.  
  7546.         pITypeInfoAll->ReleaseTypeAttr(pTA);
  7547.         }
  7548.  
  7549.     pITypeInfoAll->Release();
  7550.     return (hr);
  7551. }
  7552.  
  7553. static HRESULT ObjectEventsIID(LPUNKNOWN pObj, IID *piid)
  7554. {
  7555.     HRESULT             hr;
  7556.     LPTYPEINFO          pITypeInfo;
  7557.     LPTYPEATTR          pTA;
  7558.  
  7559.     *piid=CLSID_NULL;
  7560.  
  7561.     if (FAILED(hr = ObjectTypeInfoEvents(pObj, &pITypeInfo)))
  7562.         return hr;
  7563.  
  7564.     hr=pITypeInfo->GetTypeAttr(&pTA);
  7565.  
  7566.     if (SUCCEEDED(hr))
  7567.         {
  7568.         *piid=pTA->guid;
  7569.         pITypeInfo->ReleaseTypeAttr(pTA);
  7570.         }
  7571.  
  7572.     pITypeInfo->Release();
  7573.     return hr;
  7574. }
  7575.  
  7576. static long LongMulDiv(long numer, long denom)
  7577. {
  7578.    ldiv_t result;
  7579.    long quotient;
  7580.    long absrem;
  7581.  
  7582.    result = ldiv(numer, denom);
  7583.    quotient = result.quot;
  7584.    absrem = labs(result.rem);
  7585.  
  7586.    if (labs(denom) - absrem <= absrem)
  7587.    if (quotient >= 0)
  7588.       quotient++;
  7589.    else
  7590.       quotient--;
  7591.  
  7592.    return quotient;
  7593. }
  7594.  
  7595.  
  7596. static int XformWidthInPixelsToHimetric(HDC hDC, int iWidthInPix)
  7597. {
  7598.    int     iXppli;     
  7599.    int     iWidthInHiMetric;
  7600.    BOOL    fSystemDC=FALSE;
  7601.  
  7602.    if (NULL==hDC)
  7603.    {
  7604.       hDC=GetDC(NULL);
  7605.       fSystemDC=TRUE;
  7606.    }
  7607.  
  7608.    iXppli = GetDeviceCaps (hDC, LOGPIXELSX);
  7609.  
  7610.    iWidthInHiMetric = MAP_PIX_TO_LOGHIM(iWidthInPix, iXppli);
  7611.  
  7612.    if (fSystemDC)
  7613.       ReleaseDC(NULL, hDC);
  7614.  
  7615.    return iWidthInHiMetric;
  7616. }
  7617.  
  7618.  
  7619. static int XformWidthInHimetricToPixels(HDC hDC, int iWidthInHiMetric)
  7620. {
  7621.    int     iXppli;     
  7622.    int     iWidthInPix;
  7623.    BOOL    fSystemDC=FALSE;
  7624.  
  7625.    if (NULL==hDC)
  7626.    {
  7627.       hDC=GetDC(NULL);
  7628.       fSystemDC=TRUE;
  7629.    }
  7630.  
  7631.    iXppli = GetDeviceCaps (hDC, LOGPIXELSX);
  7632.  
  7633.    iWidthInPix = MAP_LOGHIM_TO_PIX(iWidthInHiMetric, iXppli);
  7634.  
  7635.    if (fSystemDC)
  7636.       ReleaseDC(NULL, hDC);
  7637.  
  7638.    return iWidthInPix;
  7639. }
  7640.  
  7641.  
  7642. static int XformHeightInPixelsToHimetric(HDC hDC, int iHeightInPix)
  7643. {
  7644.    int     iYppli;     
  7645.    int     iHeightInHiMetric;
  7646.    BOOL    fSystemDC=FALSE;
  7647.  
  7648.    if (NULL==hDC)
  7649.    {
  7650.       hDC=GetDC(NULL);
  7651.       fSystemDC=TRUE;
  7652.    }
  7653.  
  7654.    iYppli = GetDeviceCaps (hDC, LOGPIXELSY);
  7655.  
  7656.    iHeightInHiMetric = MAP_PIX_TO_LOGHIM(iHeightInPix, iYppli);
  7657.  
  7658.    if (fSystemDC)
  7659.       ReleaseDC(NULL, hDC);
  7660.  
  7661.    return iHeightInHiMetric;
  7662. }
  7663.  
  7664.  
  7665. static int XformHeightInHimetricToPixels(HDC hDC, int iHeightInHiMetric)
  7666. {
  7667.    int     iYppli;     
  7668.    int     iHeightInPix;
  7669.    BOOL    fSystemDC=FALSE;
  7670.  
  7671.    if (NULL==hDC)
  7672.    {
  7673.       hDC=GetDC(NULL);
  7674.       fSystemDC=TRUE;
  7675.    }
  7676.  
  7677.    iYppli = GetDeviceCaps (hDC, LOGPIXELSY);
  7678.  
  7679.    iHeightInPix = MAP_LOGHIM_TO_PIX(iHeightInHiMetric, iYppli);
  7680.  
  7681.    if (fSystemDC)
  7682.       ReleaseDC(NULL, hDC);
  7683.  
  7684.    return iHeightInPix;
  7685. }
  7686.  
  7687.  
  7688. static void XformSizeInPixelsToHimetric(
  7689.    HDC hDC, LPSIZEL lpSizeInPix, LPSIZEL lpSizeInHiMetric)
  7690. {
  7691.    int     iXppli;     
  7692.    int     iYppli;     
  7693.    BOOL    fSystemDC=FALSE;
  7694.  
  7695.    if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0)
  7696.    {
  7697.       hDC=GetDC(NULL);
  7698.       fSystemDC=TRUE;
  7699.    }
  7700.  
  7701.    iXppli = GetDeviceCaps (hDC, LOGPIXELSX);
  7702.    iYppli = GetDeviceCaps (hDC, LOGPIXELSY);
  7703.  
  7704.    lpSizeInHiMetric->cx = (long)MAP_PIX_TO_LOGHIM((int)lpSizeInPix->cx, iXppli);
  7705.    lpSizeInHiMetric->cy = (long)MAP_PIX_TO_LOGHIM((int)lpSizeInPix->cy, iYppli);
  7706.  
  7707.    if (fSystemDC)
  7708.       ReleaseDC(NULL, hDC);
  7709.  
  7710.    return;
  7711. }
  7712.  
  7713.  
  7714. static void XformSizeInHimetricToPixels(
  7715.    HDC hDC, LPSIZEL lpSizeInHiMetric, LPSIZEL lpSizeInPix)
  7716. {
  7717.    int     iXppli;     
  7718.    int     iYppli;     
  7719.    BOOL    fSystemDC=FALSE;
  7720.  
  7721.    if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0)
  7722.    {
  7723.       hDC=GetDC(NULL);
  7724.       fSystemDC=TRUE;
  7725.    }
  7726.  
  7727.    iXppli = GetDeviceCaps (hDC, LOGPIXELSX);
  7728.    iYppli = GetDeviceCaps (hDC, LOGPIXELSY);
  7729.  
  7730.    lpSizeInPix->cx = (long)MAP_LOGHIM_TO_PIX((int)lpSizeInHiMetric->cx, iXppli);
  7731.    lpSizeInPix->cy = (long)MAP_LOGHIM_TO_PIX((int)lpSizeInHiMetric->cy, iYppli);
  7732.  
  7733.    if (fSystemDC)
  7734.       ReleaseDC(NULL, hDC);
  7735.  
  7736.    return;
  7737. }
  7738.  
  7739. static void XformRectInPixelsToHimetric(
  7740.    HDC hDC, LPRECT lprcPix, LPRECT lprcHiMetric)
  7741. {
  7742.    int     iXppli;
  7743.    int     iYppli;
  7744.    int     iXextInPix=(lprcPix->right-lprcPix->left);
  7745.    int     iYextInPix=(lprcPix->bottom-lprcPix->top);
  7746.    BOOL    fSystemDC=FALSE;
  7747.  
  7748.    if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0)
  7749.    {
  7750.       hDC=GetDC(NULL);
  7751.       fSystemDC=TRUE;
  7752.    }
  7753.  
  7754.    iXppli = GetDeviceCaps (hDC, LOGPIXELSX);
  7755.    iYppli = GetDeviceCaps (hDC, LOGPIXELSY);
  7756.  
  7757.  
  7758.    lprcHiMetric->right = (int)LongMulDiv((LONG)iXextInPix * HIMETRIC_PER_INCH, iXppli);
  7759.    lprcHiMetric->top = (int)LongMulDiv((LONG)iYextInPix * HIMETRIC_PER_INCH, iYppli);
  7760.  
  7761.    lprcHiMetric->left = 0;
  7762.    lprcHiMetric->bottom = 0;
  7763.  
  7764.    if (fSystemDC)
  7765.       ReleaseDC(NULL, hDC);
  7766.  
  7767.    return;
  7768. }
  7769.  
  7770.  
  7771. static int SetDCToDrawInHimetricRect(HDC hDC, LPRECT lprcPix,
  7772.    LPRECT lprcHiMetric, LPRECT lprcWindowOld, LPRECT lprcViewportOld)
  7773. {
  7774.    int nMapModeOld = SetMapMode(hDC, MM_ANISOTROPIC);
  7775.    BOOL fSystemDC = FALSE;
  7776.  
  7777.    if (NULL==hDC)
  7778.    {
  7779.       hDC=GetDC(NULL);
  7780.       fSystemDC=TRUE;
  7781.    }
  7782.  
  7783.    XformRectInPixelsToHimetric(hDC, lprcPix, lprcHiMetric);
  7784.  
  7785.    SetWindowOrgEx(hDC, lprcHiMetric->left, lprcHiMetric->bottom,
  7786.       (LPPOINT)&lprcWindowOld->left);
  7787.    SetWindowExtEx(hDC, (lprcHiMetric->right-lprcHiMetric->left),
  7788.       (lprcHiMetric->top-lprcHiMetric->bottom), (LPSIZE)&lprcWindowOld->right);
  7789.    SetViewportOrgEx(hDC, lprcPix->left, lprcPix->bottom,
  7790.       (LPPOINT)&lprcViewportOld->left);
  7791.    SetViewportExtEx(hDC, (lprcPix->right-lprcPix->left),
  7792.       (lprcPix->top-lprcPix->bottom), (LPSIZE)&lprcViewportOld->right);
  7793.  
  7794.    if (fSystemDC)
  7795.       ReleaseDC(NULL, hDC);
  7796.  
  7797.    return nMapModeOld;
  7798. }
  7799.  
  7800.  
  7801. /////////////////////////////////////////////////////////////////////////////
  7802. // COleFont copy constructor
  7803.  
  7804. COleFont::COleFont(const COleFont& dispatchSrc) : COleDispatchDriver()
  7805. {
  7806.    ASSERT(this != &dispatchSrc);   // constructing from self?
  7807.  
  7808.    m_lpDispatch = dispatchSrc.m_lpDispatch;
  7809.    if (m_lpDispatch != NULL)
  7810.       m_lpDispatch->AddRef();
  7811.    m_bAutoRelease = TRUE;
  7812. }
  7813.  
  7814. /////////////////////////////////////////////////////////////////////////////
  7815. // COleFont properties
  7816.  
  7817. CString COleFont::GetName()
  7818. {
  7819.    CString result;
  7820.    GetProperty(0x0, VT_BSTR, (void*)&result);
  7821.    return result;
  7822. }
  7823.  
  7824. void COleFont::SetName(LPCTSTR propVal)
  7825. {
  7826.    SetProperty(0x0, VT_BSTR, propVal);
  7827. }
  7828.  
  7829. CY COleFont::GetSize()
  7830. {
  7831.    CY result;
  7832.    GetProperty(0x2, VT_CY, (void*)&result);
  7833.    return result;
  7834. }
  7835.  
  7836. void COleFont::SetSize(const CY& propVal)
  7837. {
  7838.    SetProperty(0x2, VT_CY, &propVal);
  7839. }
  7840.  
  7841. BOOL COleFont::GetBold()
  7842. {
  7843.    BOOL result;
  7844.    GetProperty(0x3, VT_BOOL, (void*)&result);
  7845.    return result;
  7846. }
  7847.  
  7848. void COleFont::SetBold(BOOL propVal)
  7849. {
  7850.    SetProperty(0x3, VT_BOOL, propVal);
  7851. }
  7852.  
  7853. BOOL COleFont::GetItalic()
  7854. {
  7855.    BOOL result;
  7856.    GetProperty(0x4, VT_BOOL, (void*)&result);
  7857.    return result;
  7858. }
  7859.  
  7860. void COleFont::SetItalic(BOOL propVal)
  7861. {
  7862.    SetProperty(0x4, VT_BOOL, propVal);
  7863. }
  7864.  
  7865. BOOL COleFont::GetUnderline()
  7866. {
  7867.    BOOL result;
  7868.    GetProperty(0x5, VT_BOOL, (void*)&result);
  7869.    return result;
  7870. }
  7871.  
  7872. void COleFont::SetUnderline(BOOL propVal)
  7873. {
  7874.    SetProperty(0x5, VT_BOOL, propVal);
  7875. }
  7876.  
  7877. BOOL COleFont::GetStrikethrough()
  7878. {
  7879.    BOOL result;
  7880.    GetProperty(0x6, VT_BOOL, (void*)&result);
  7881.    return result;
  7882. }
  7883.  
  7884. void COleFont::SetStrikethrough(BOOL propVal)
  7885. {
  7886.    SetProperty(0x6, VT_BOOL, propVal);
  7887. }
  7888.  
  7889. short COleFont::GetWeight()
  7890. {
  7891.    short result;
  7892.    GetProperty(0x7, VT_I2, (void*)&result);
  7893.    return result;
  7894. }
  7895.  
  7896. void COleFont::SetWeight(short propVal)
  7897. {
  7898.    SetProperty(0x7, VT_I2, propVal);
  7899. }
  7900.  
  7901. short COleFont::GetCharset()
  7902. {
  7903.    short result;
  7904.    GetProperty(0x8, VT_I2, (void*)&result);
  7905.    return result;
  7906. }
  7907.  
  7908. void COleFont::SetCharset(short propVal)
  7909. {
  7910.    SetProperty(0x8, VT_I2, propVal);
  7911. }
  7912.  
  7913. /////////////////////////////////////////////////////////////////////////////
  7914. // COleFont operations
  7915.  
  7916.  
  7917.  
  7918.  
  7919.  
  7920. // new methods/properties
  7921.  
  7922.  
  7923. // properties
  7924. short CLead::GetLevelLowBit()
  7925. {
  7926.    short result;
  7927.    GetProperty(dispidLevelLowBit, VT_I2, (void *)&result);
  7928.    return result;
  7929. }
  7930.  
  7931. void CLead::SetLevelLowBit(short nNewValue)
  7932. {
  7933.    SetProperty(dispidLevelLowBit, VT_I2, nNewValue);
  7934. }
  7935.  
  7936. short CLead::GetLevelHighBit()
  7937. {
  7938.    short result;
  7939.    GetProperty(dispidLevelHighBit, VT_I2, (void *)&result);
  7940.    return result;
  7941. }
  7942.  
  7943. void CLead::SetLevelHighBit(short nNewValue)
  7944. {
  7945.    SetProperty(dispidLevelHighBit, VT_I2, nNewValue);
  7946. }
  7947.  
  7948. long CLead::GetLevelLUTLength()
  7949. {
  7950.    long result;
  7951.    GetProperty(dispidLevelLUTLength, VT_I4, (void *)&result);
  7952.    return result;
  7953. }
  7954.  
  7955. void CLead::SetLevelLUTLength(long nNewValue)
  7956. {
  7957.    SetProperty(dispidLevelLUTLength, VT_I4, nNewValue);
  7958. }
  7959.  
  7960. long CLead::GetMinVal()
  7961. {
  7962.    long result;
  7963.    GetProperty(dispidMinVal, VT_I4, (void *)&result);
  7964.    return result;
  7965. }
  7966.  
  7967. void CLead::SetMinVal(long nNewValue)
  7968. {
  7969.    SetProperty(dispidMinVal, VT_I4, nNewValue);
  7970. }
  7971.  
  7972. long CLead::GetMaxVal()
  7973. {
  7974.    long result;
  7975.    GetProperty(dispidMaxVal, VT_I4, (void *)&result);
  7976.    return result;
  7977. }
  7978.  
  7979. void CLead::SetMaxVal(long nNewValue)
  7980. {
  7981.    SetProperty(dispidMaxVal, VT_I4, nNewValue);
  7982. }
  7983.  
  7984. short CLead::GetMinBit()
  7985. {
  7986.    short result;
  7987.    GetProperty(dispidMinBit, VT_I2, (void *)&result);
  7988.    return result;
  7989. }
  7990.  
  7991. void CLead::SetMinBit(short nNewValue)
  7992. {
  7993.    SetProperty(dispidMinBit, VT_I2, nNewValue);
  7994. }
  7995.  
  7996. short CLead::GetMaxBit()
  7997. {
  7998.    short result;
  7999.    GetProperty(dispidMaxBit, VT_I2, (void *)&result);
  8000.    return result;
  8001. }
  8002.  
  8003. void CLead::SetMaxBit(short nNewValue)
  8004. {
  8005.    SetProperty(dispidMaxBit, VT_I2, nNewValue);
  8006. }
  8007.  
  8008. BOOL CLead::GetAnnShowLockedIcon()
  8009. {
  8010.    BOOL result;
  8011.    GetProperty(dispidAnnShowLockedIcon, VT_BOOL, (void *)&result);
  8012.    return result;
  8013. }
  8014.  
  8015. void CLead::SetAnnShowLockedIcon(BOOL bNewValue)
  8016. {
  8017.    SetProperty(dispidAnnShowLockedIcon, VT_BOOL, bNewValue);
  8018. }
  8019.  
  8020. BOOL CLead::GetAnnHyperlinkMenuEnable()
  8021. {
  8022.    BOOL result;
  8023.    GetProperty(dispidAnnHyperlinkMenuEnable, VT_BOOL, (void *)&result);
  8024.    return result;
  8025. }
  8026.  
  8027. void CLead::SetAnnHyperlinkMenuEnable(BOOL bNewValue)
  8028. {
  8029.    SetProperty(dispidAnnHyperlinkMenuEnable, VT_BOOL, bNewValue);
  8030. }
  8031.  
  8032. BOOL CLead::GetEnableZoomInRect()
  8033. {
  8034.    BOOL result;
  8035.    GetProperty(dispidEnableZoomInRect, VT_BOOL, (void *)&result);
  8036.    return result;
  8037. }
  8038.  
  8039. void CLead::SetEnableZoomInRect(BOOL bNewValue)
  8040. {
  8041.    SetProperty(dispidEnableZoomInRect, VT_BOOL, bNewValue);
  8042. }
  8043.  
  8044. short CLead::GetTwainIntensity()
  8045. {
  8046.    short result;
  8047.    GetProperty(dispidTwainIntensity, VT_I2, (void *)&result);
  8048.    return result;
  8049. }
  8050.  
  8051. void CLead::SetTwainIntensity(short nNewValue)
  8052. {
  8053.    SetProperty(dispidTwainIntensity, VT_I2, nNewValue);
  8054. }
  8055.  
  8056. short CLead::GetTwainContrast()
  8057. {
  8058.    short result;
  8059.    GetProperty(dispidTwainContrast, VT_I2, (void *)&result);
  8060.    return result;
  8061. }
  8062.  
  8063. void CLead::SetTwainContrast(short nNewValue)
  8064. {
  8065.    SetProperty(dispidTwainContrast, VT_I2, nNewValue);
  8066. }
  8067.  
  8068. short CLead::GetEnableTwainFeeder()
  8069. {
  8070.    short result;
  8071.    GetProperty(dispidEnableTwainFeeder, VT_I2, (void *)&result);
  8072.    return result;
  8073. }
  8074.  
  8075. void CLead::SetEnableTwainFeeder(short nNewValue)
  8076. {
  8077.    SetProperty(dispidEnableTwainFeeder, VT_I2, nNewValue);
  8078. }
  8079.  
  8080. short CLead::GetEnableTwainAutoFeed()
  8081. {
  8082.    short result;
  8083.    GetProperty(dispidEnableTwainAutoFeed, VT_I2, (void *)&result);
  8084.    return result;
  8085. }
  8086.  
  8087. void CLead::SetEnableTwainAutoFeed(short nNewValue)
  8088. {
  8089.    SetProperty(dispidEnableTwainAutoFeed, VT_I2, nNewValue);
  8090. }
  8091.  
  8092. float CLead::GetPanWinX()
  8093. {
  8094.    float result;
  8095.    GetProperty(dispidPanWinX, VT_R4, (void *)&result);
  8096.    return result;
  8097. }
  8098.  
  8099. void CLead::SetPanWinX(float newValue)
  8100. {
  8101.    SetProperty(dispidPanWinX, VT_R4, newValue);
  8102. }
  8103.  
  8104. float CLead::GetPanWinY()
  8105. {
  8106.    float result;
  8107.    GetProperty(dispidPanWinY, VT_R4, (void *)&result);
  8108.    return result;
  8109. }
  8110.  
  8111. void CLead::SetPanWinY(float newValue)
  8112. {
  8113.    SetProperty(dispidPanWinY, VT_R4, newValue);
  8114. }
  8115.  
  8116. float CLead::GetPanWinWidth()
  8117. {
  8118.    float result;
  8119.    GetProperty(dispidPanWinWidth, VT_R4, (void *)&result);
  8120.    return result;
  8121. }
  8122.  
  8123. void CLead::SetPanWinWidth(float newValue)
  8124. {
  8125.    SetProperty(dispidPanWinWidth, VT_R4, newValue);
  8126. }
  8127.  
  8128. float CLead::GetPanWinHeight()
  8129. {
  8130.    float result;
  8131.    GetProperty(dispidPanWinHeight, VT_R4, (void *)&result);
  8132.    return result;
  8133. }
  8134.  
  8135. void CLead::SetPanWinHeight(float newValue)
  8136. {
  8137.    SetProperty(dispidPanWinHeight, VT_R4, newValue);
  8138. }
  8139.  
  8140. OLE_COLOR CLead::GetPanWinRectColor()
  8141. {
  8142.    OLE_COLOR result;
  8143.    GetProperty(dispidPanWinRectColor, VT_COLOR, (void *)&result);
  8144.    return result;
  8145. }
  8146.  
  8147. void CLead::SetPanWinRectColor(OLE_COLOR newValue)
  8148. {
  8149.    SetProperty(dispidPanWinRectColor, VT_COLOR, newValue);
  8150. }
  8151.  
  8152. CString CLead::GetPanWinTitle()
  8153. {
  8154.    CString result;
  8155.    GetProperty(dispidPanWinTitle, VT_BSTR, (void *)&result);
  8156.    return result;
  8157. }
  8158.  
  8159. void CLead::SetPanWinTitle(LPCTSTR newValue)
  8160. {
  8161.    SetProperty(dispidPanWinTitle, VT_BSTR, newValue);
  8162. }
  8163.  
  8164. BOOL CLead::GetPanWinSysMenu()
  8165. {
  8166.    BOOL result;
  8167.    GetProperty(dispidPanWinSysMenu, VT_BOOL, (void *)&result);
  8168.    return result;
  8169. }
  8170.  
  8171. void CLead::SetPanWinSysMenu(BOOL newValue)
  8172. {
  8173.    SetProperty(dispidPanWinSysMenu, VT_BOOL, newValue);
  8174. }
  8175.  
  8176. short CLead::GetPanWinPaintPalette()
  8177. {
  8178.    short result;
  8179.    GetProperty(dispidPanWinPaintPalette, VT_I2, (void *)&result);
  8180.    return result;
  8181. }
  8182.  
  8183. void CLead::SetPanWinPaintPalette(short newValue)
  8184. {
  8185.    SetProperty(dispidPanWinPaintPalette, VT_I2, newValue);
  8186. }
  8187.  
  8188. short CLead::GetPanWinBitonalScaling()
  8189. {
  8190.    short result;
  8191.    GetProperty(dispidPanWinBitonalScaling, VT_I2, (void *)&result);
  8192.    return result;
  8193. }
  8194.  
  8195. void CLead::SetPanWinBitonalScaling(short newValue)
  8196. {
  8197.    SetProperty(dispidPanWinBitonalScaling, VT_I2, newValue);
  8198. }
  8199.  
  8200. short CLead::GetPanWinPaintDither()
  8201. {
  8202.    short result;
  8203.    GetProperty(dispidPanWinPaintDither, VT_I2, (void *)&result);
  8204.    return result;
  8205. }
  8206.  
  8207. void CLead::SetPanWinPaintDither(short newValue)
  8208. {
  8209.    SetProperty(dispidPanWinPaintDither, VT_I2, newValue);
  8210. }
  8211.  
  8212. LPPICTUREDISP CLead::GetPanWinIcon()
  8213. {
  8214.    LPPICTUREDISP result;
  8215.    GetProperty(dispidPanWinIcon, VT_PICTURE, (void *)&result);
  8216.    return result;
  8217. }
  8218.  
  8219. void CLead::SetPanWinIcon(LPPICTUREDISP pPicture)
  8220. {
  8221.    SetProperty(dispidPanWinIcon, VT_PICTURE, pPicture);
  8222. }
  8223.  
  8224. short CLead::GetPanWinPointer()
  8225. {
  8226.    short result;
  8227.    GetProperty(dispidPanWinPointer, VT_I2, (void *)&result);
  8228.    return result;
  8229. }
  8230.  
  8231. void CLead::SetPanWinPointer(short newValue)
  8232. {
  8233.    SetProperty(dispidPanWinPointer, VT_I2, newValue);
  8234. }
  8235.  
  8236. LPPICTUREDISP CLead::GetPanWinCursor()
  8237. {
  8238.    LPPICTUREDISP result;
  8239.    GetProperty(dispidPanWinCursor, VT_PICTURE, (void *)&result);
  8240.    return result;
  8241. }
  8242.  
  8243. void CLead::SetPanWinCursor(LPPICTUREDISP newValue)
  8244. {
  8245.    SetProperty(dispidPanWinCursor, VT_PICTURE, newValue);
  8246. }
  8247.  
  8248. short CLead::GetInfoTotalPages()
  8249. {
  8250.    short result;
  8251.    GetProperty(dispidInfoTotalPages, VT_I2, (void *)&result);
  8252.    return result;
  8253. }
  8254.  
  8255. void CLead::SetInfoTotalPages(short newValue)
  8256. {
  8257.    SetProperty(dispidInfoTotalPages, VT_I2, newValue);
  8258. }
  8259.  
  8260. short CLead::GetSavePage()
  8261. {
  8262.    short result;
  8263.    GetProperty(dispidSavePage, VT_I2, (void *)&result);
  8264.    return result;
  8265. }
  8266.  
  8267. void CLead::SetSavePage(short newValue)
  8268. {
  8269.    SetProperty(dispidSavePage, VT_I2, newValue);
  8270. }
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278. // methods
  8279. short CLead::WindowLevel()
  8280. {
  8281.    short result;
  8282.  
  8283.    InvokeHelper(dispidWindowLevel, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  8284.  
  8285.    return result;
  8286. }
  8287. short CLead::GetMinMaxVal()
  8288. {
  8289.    short result;
  8290.  
  8291.    InvokeHelper(dispidGetMinMaxVal, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  8292.  
  8293.    return result;
  8294. }
  8295. short CLead::GetMinMaxBits()
  8296. {
  8297.    short result;
  8298.  
  8299.    InvokeHelper(dispidGetMinMaxBits, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
  8300.  
  8301.    return result;
  8302. }
  8303.  
  8304. short CLead::AnnLock(OLE_HANDLE hObject, LPCTSTR pszKey, BOOL fSelected)
  8305. {
  8306.    short result;
  8307.    static BYTE BASED_CODE parms[] =
  8308.       VTS_HANDLE VTS_BSTR VTS_BOOL ;
  8309.  
  8310.    InvokeHelper(dispidAnnLock, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8311.       hObject, pszKey, fSelected);
  8312.  
  8313.    return result;
  8314. }
  8315.  
  8316. short CLead::AnnUnlock(OLE_HANDLE hObject, LPCTSTR pszKey)
  8317. {
  8318.    short result;
  8319.    static BYTE BASED_CODE parms[] =
  8320.       VTS_HANDLE VTS_BSTR ;
  8321.  
  8322.    InvokeHelper(dispidAnnUnlock, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8323.       hObject, pszKey);
  8324.  
  8325.    return result;
  8326. }
  8327.  
  8328. BOOL CLead::AnnGetLocked(OLE_HANDLE hObject)
  8329. {
  8330.    BOOL result;
  8331.    static BYTE BASED_CODE parms[] =
  8332.       VTS_HANDLE;
  8333.  
  8334.    InvokeHelper(dispidAnnGetLocked, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
  8335.       hObject);
  8336.  
  8337.    return result;
  8338. }
  8339.  
  8340. short CLead::AnnUnrealize(OLE_HANDLE hObject, BOOL fSelected)
  8341. {
  8342.    short result;
  8343.    static BYTE BASED_CODE parms[] =
  8344.       VTS_HANDLE VTS_BOOL ;
  8345.  
  8346.    InvokeHelper(dispidAnnUnrealize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8347.       hObject, fSelected);
  8348.  
  8349.    return result;
  8350. }
  8351.  
  8352. short CLead::AnnSaveTag(BOOL fWangMode, BOOL fSelected)
  8353. {
  8354.    short result;
  8355.    static BYTE BASED_CODE parms[] =
  8356.       VTS_BOOL VTS_BOOL ;
  8357.  
  8358.    InvokeHelper(dispidAnnSaveTag, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8359.       fWangMode, fSelected);
  8360.  
  8361.    return result;
  8362. }
  8363.  
  8364. short CLead::AnnSetHyperlinkString(OLE_HANDLE hObject, short uType, LPCTSTR pszHyperlink)
  8365. {
  8366.    short result;
  8367.    static BYTE BASED_CODE parms[] =
  8368.       VTS_HANDLE VTS_I2 VTS_BSTR ;
  8369.  
  8370.    InvokeHelper(dispidAnnSetHyperlinkString, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8371.       hObject, uType, pszHyperlink);
  8372.  
  8373.    return result;
  8374. }
  8375.  
  8376. short CLead::AnnSetHyperlinkMsg(OLE_HANDLE hObject, short uType, long lParam1, long lParam2, long lParam3, long lParam4, long lParam5)
  8377. {
  8378.    short result;
  8379.    static BYTE BASED_CODE parms[] =
  8380.       VTS_HANDLE VTS_I2 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
  8381.  
  8382.    InvokeHelper(dispidAnnSetHyperlinkMsg, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8383.       hObject, uType, lParam1, lParam2, lParam3, lParam4, lParam5);
  8384.  
  8385.    return result;
  8386. }
  8387.  
  8388. short CLead::AnnGetHyperlinkType(OLE_HANDLE hObject)
  8389. {
  8390.    short result;
  8391.    static BYTE BASED_CODE parms[] =
  8392.       VTS_HANDLE;
  8393.  
  8394.    InvokeHelper(dispidAnnGetHyperlinkType, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8395.       hObject);
  8396.  
  8397.    return result;
  8398. }
  8399.  
  8400. CString CLead::AnnGetHyperlinkString(OLE_HANDLE hObject)
  8401. {
  8402.    CString result;
  8403.    static BYTE BASED_CODE parms[] =
  8404.       VTS_HANDLE;
  8405.  
  8406.    InvokeHelper(dispidAnnGetHyperlinkString, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
  8407.       hObject);
  8408.  
  8409.    return result;
  8410. }
  8411.  
  8412. long CLead::AnnGetHyperlinkParam(OLE_HANDLE hObject, short iParamIndex)
  8413. {
  8414.    long result;
  8415.    static BYTE BASED_CODE parms[] =
  8416.       VTS_HANDLE VTS_I2 ;
  8417.  
  8418.    InvokeHelper(dispidAnnGetHyperlinkParam, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  8419.       hObject, iParamIndex);
  8420.  
  8421.    return result;
  8422. }
  8423.  
  8424. short CLead::PreLoadFilters(short iFixedFilters, short iCachedFilters, LPCTSTR pszFilters)
  8425. {
  8426.    short result;
  8427.    static BYTE BASED_CODE parms[] =
  8428.       VTS_I2 VTS_I2 VTS_BSTR ;
  8429.  
  8430.    InvokeHelper(dispidPreLoadFilters, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8431.       iFixedFilters, iCachedFilters, pszFilters);
  8432.  
  8433.    return result;
  8434. }
  8435.  
  8436. short CLead::IgnoreFilters(LPCTSTR pszFilters)
  8437. {
  8438.    short result;
  8439.    static BYTE BASED_CODE parms[] =
  8440.       VTS_BSTR;
  8441.  
  8442.    InvokeHelper(dispidIgnoreFilters, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8443.       pszFilters);
  8444.  
  8445.    return result;
  8446. }
  8447.  
  8448. short CLead::ZoomIn()
  8449. {
  8450.    short result;
  8451.  
  8452.    InvokeHelper(dispidZoomIn, DISPATCH_METHOD, VT_I2, (void*)&result, NULL );
  8453.  
  8454.    return result;
  8455. }
  8456.  
  8457. short CLead::TwainCloseSession(OLE_HANDLE hWnd)
  8458. {
  8459.    short result;
  8460.    static BYTE BASED_CODE parms[] =
  8461.       VTS_HANDLE;
  8462.  
  8463.    InvokeHelper(dispidTwainCloseSession, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8464.       hWnd);
  8465.  
  8466.    return result;
  8467. }
  8468.  
  8469.  
  8470. OLE_COLOR CLead::GetLevelLUT(long iIndex)
  8471. {
  8472.    OLE_COLOR   result;
  8473.    static BYTE BASED_CODE parms[] = 
  8474.       VTS_I4  ;
  8475.  
  8476.    InvokeHelper(dispidLevelLUT, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
  8477.       iIndex);
  8478.    return result;
  8479.  
  8480. void CLead::SetLevelLUT(long iIndex, OLE_COLOR param1)
  8481. {
  8482.    static BYTE BASED_CODE parms[] = 
  8483.       VTS_I2 VTS_I4  ;
  8484.  
  8485.    InvokeHelper(dispidLevelLUT, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
  8486.       iIndex, param1);
  8487. }
  8488.  
  8489. short CLead::ShowPanWin(BOOL bShow)
  8490. {
  8491.    short result;
  8492.    static BYTE BASED_CODE parms[] =
  8493.       VTS_BOOL;
  8494.    
  8495.    InvokeHelper(dispidShowPanWin, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8496.       bShow);
  8497.    
  8498.    return result;
  8499. }
  8500.  
  8501. short CLead::DeletePage(LPCTSTR pszName, short iPage)
  8502. {
  8503.    short result;
  8504.    static BYTE BASED_CODE parms[] =
  8505.       VTS_BSTR VTS_I2;
  8506.    
  8507.    InvokeHelper(dispidDeletePage, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8508.       pszName, iPage);
  8509.    
  8510.    return result;
  8511. }
  8512.  
  8513. short CLead::Picturize(LPCTSTR pszDirectory, short iFlags, float fCellWidth, float fCellHeight)
  8514. {
  8515.    short result;
  8516.    static BYTE BASED_CODE parms[] =
  8517.       VTS_BSTR VTS_I2 VTS_R4 VTS_R4;
  8518.  
  8519.    InvokeHelper(dispidPicturize, DISPATCH_METHOD, VT_I2, (void*)&result, parms,
  8520.       pszDirectory, iFlags, fCellWidth, fCellHeight);
  8521.  
  8522.    return result;
  8523. }
  8524.  
  8525.