home *** CD-ROM | disk | FTP | other *** search
/ PC go! 2008 April / PCgo 2008-04 (DVD).iso / interface / contents / demoversionen_3846 / 13664 / files / Data1.cab / smartobjectinserdlg.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-16  |  6.4 KB  |  222 lines

  1. /******************************************************************/
  2. /*                                                                */
  3. /*                      TurboCAD for Windows                      */
  4. /*                   Copyright (c) 1993 - 2001                    */
  5. /*             International Microcomputer Software, Inc.         */
  6. /*                            (IMSI)                              */
  7. /*                      All rights reserved.                      */
  8. /*                                                                */
  9. /******************************************************************/
  10.  
  11. // SmartObjectInserDlg.cpp : implementation file
  12. //
  13.  
  14. #include "stdafx.h"
  15. #include "ltsample.h"
  16. #include "SmartObjectInserDlg.h"
  17.  
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CSmartObjectInserDlg dialog
  26.  
  27. #define W_COLUMN    20
  28.  
  29. #define IND_SUBITEMINDEX        0
  30. #define IND_SUBITEMID            1
  31. #define IND_SUBITEMTYPE            2
  32. #define IND_SUBITEMNAME            3
  33. #define IND_SUBITEMDESC            4
  34.  
  35. #define IND_COLUMNINDEX            0
  36. #define IND_COLUMNID            1
  37. #define IND_COLUMNTYPE            2
  38. #define IND_COLUMNAME            3
  39. #define IND_COLUMNDESC            4
  40.  
  41.  
  42. CSmartObjectInserDlg::CSmartObjectInserDlg(RegenMethods *pRegens, CWnd* pParent /*=NULL*/)
  43.     : CDialog(CSmartObjectInserDlg::IDD, pParent)
  44. {
  45.     m_pRegens = pRegens;
  46.     m_dwID = 0;
  47.     m_rmType = imsiVTbl;
  48.     //{{AFX_DATA_INIT(CSmartObjectInserDlg)
  49.         // NOTE: the ClassWizard will add member initialization here
  50.     //}}AFX_DATA_INIT
  51. }
  52.  
  53.  
  54. void CSmartObjectInserDlg::DoDataExchange(CDataExchange* pDX)
  55. {
  56.     CDialog::DoDataExchange(pDX);
  57.     //{{AFX_DATA_MAP(CSmartObjectInserDlg)
  58.     DDX_Control(pDX, IDC_LIST_SMARTOBJECT, m_lstRegens);
  59.     //}}AFX_DATA_MAP
  60.     if (pDX->m_bSaveAndValidate)
  61.     {
  62.         int iSelItem = m_lstRegens.GetNextItem(-1, LVNI_SELECTED);        
  63.         if (iSelItem >= 0)
  64.         {
  65.             m_dwID = m_lstRegens.GetItemData(iSelItem);
  66.             m_cstrName = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMNAME);
  67.             m_cstrDesc = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMDESC);
  68.             CString cstrType = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMTYPE);
  69.             if (cstrType == "imsiAutomation")
  70.                 m_rmType = imsiAutomation;
  71.             else if (cstrType == "imsiVTbl")
  72.                 m_rmType = imsiVTbl;
  73.             else if (cstrType == "imsiScript")
  74.                 m_rmType = imsiScript;
  75.         }
  76.     }
  77. }
  78.  
  79.  
  80. BEGIN_MESSAGE_MAP(CSmartObjectInserDlg, CDialog)
  81.     //{{AFX_MSG_MAP(CSmartObjectInserDlg)
  82.     //}}AFX_MSG_MAP
  83. END_MESSAGE_MAP()
  84.  
  85. /////////////////////////////////////////////////////////////////////////////
  86. // CSmartObjectInserDlg message handlers
  87.  
  88. BOOL CSmartObjectInserDlg::OnInitDialog() 
  89. {
  90.     CDialog::OnInitDialog();
  91.     
  92.     LV_COLUMN lvcolumn;
  93.     lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
  94.     lvcolumn.fmt = LVCFMT_LEFT;
  95.  
  96.     CString sResString;
  97.     sResString.LoadString(IDS_REGEN_INDEX);
  98.     lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
  99.     lvcolumn.iSubItem = IND_SUBITEMINDEX;
  100.     lvcolumn.cx = W_COLUMN * 4;
  101.     m_lstRegens.InsertColumn(IND_COLUMNINDEX, &lvcolumn);  // assumes return value is OK.
  102.  
  103.     sResString.LoadString(IDS_REGEN_ID);
  104.     lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
  105.     lvcolumn.iSubItem = IND_SUBITEMID;
  106.     lvcolumn.cx = W_COLUMN * 4;
  107.     m_lstRegens.InsertColumn(IND_COLUMNID, &lvcolumn);  // assumes return value is OK.
  108.  
  109.  
  110.     sResString.LoadString(IDS_REGEN_TYPE);
  111.     lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
  112.     lvcolumn.iSubItem = IND_SUBITEMTYPE;
  113.     lvcolumn.cx = W_COLUMN * 4;
  114.     m_lstRegens.InsertColumn(IND_COLUMNTYPE, &lvcolumn);  // assumes return value is OK.
  115.  
  116.     sResString.LoadString(IDS_REGEN_NAME);
  117.     lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
  118.     lvcolumn.cx = W_COLUMN * 4;
  119.     lvcolumn.iSubItem = IND_SUBITEMNAME;
  120.     m_lstRegens.InsertColumn(IND_COLUMNAME, &lvcolumn);  // assumes return value is OK.
  121.  
  122.     sResString.LoadString(IDS_REGEN_DESCRIPTION);
  123.     lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
  124.     lvcolumn.cx = W_COLUMN * 5;
  125.     lvcolumn.iSubItem = IND_SUBITEMDESC;
  126.     m_lstRegens.InsertColumn(IND_COLUMNDESC, &lvcolumn);  // assumes return value is OK.
  127.  
  128.  
  129.     long lCount = 0;
  130.     HRESULT hRes = m_pRegens->get_Count(&lCount);
  131.     if (SUCCEEDED(hRes))
  132.     {
  133.         RegenMethod *pRegen = NULL;
  134.         CString cstrText;
  135.         BSTR bstrVal = NULL;
  136.         long lVal = 0;
  137.         long lID = 0;
  138.         ImsiRegenMethodType rmtVal = imsiVTbl;
  139.         BOOL bVal = FALSE;
  140.         SHORT iVal = 0;
  141.  
  142.  
  143.         VARIANT varIndex;
  144.         ::VariantInit(&varIndex);
  145.         varIndex.vt = VT_I4;
  146.  
  147.         LV_ITEM            lvitem;
  148.         int                index = 0;
  149.  
  150.         for (long iItem = 0; iItem < lCount; iItem++)
  151.         {
  152.             varIndex.lVal = iItem;
  153.             hRes = m_pRegens->get_Item(&varIndex, &pRegen);
  154.             if (SUCCEEDED(hRes))
  155.             {
  156.                 ASSERT(pRegen != NULL);
  157.  
  158.                 lvitem.mask = LVIF_TEXT;
  159.                 lvitem.iItem = index;
  160.  
  161.                 lvitem.iSubItem = IND_SUBITEMINDEX;
  162.                 hRes = pRegen->get_Index(&lVal);
  163.                 if (SUCCEEDED(hRes))
  164.                     cstrText.Format("%d", lVal);
  165.                 else
  166.                     cstrText = "?";
  167.                 lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
  168.                 index = m_lstRegens.InsertItem(&lvitem);
  169.                 ASSERT(index >= 0);
  170.  
  171.                 lvitem.iSubItem = IND_SUBITEMID;
  172.                 hRes = pRegen->get__TableEntryID(&lVal);
  173.                 cstrText.Format("%d", lVal);
  174.                 lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
  175.                 VERIFY(m_lstRegens.SetItem(&lvitem));
  176.                 m_lstRegens.SetItemData(index, lVal);
  177.  
  178.                 lvitem.iSubItem = IND_SUBITEMTYPE;
  179.                 hRes = pRegen->get_Type(&rmtVal);
  180.                 switch (rmtVal)
  181.                 {
  182.                     case imsiVTbl:
  183.                         cstrText.Format("imsiVTbl");
  184.                     break;
  185.                     case imsiAutomation:
  186.                         cstrText.Format("imsiAutomation");
  187.                     break;
  188.                     case imsiScript:
  189.                         cstrText.Format("imsiScript");
  190.                     break;
  191.                 }
  192.                 lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
  193.                 VERIFY(m_lstRegens.SetItem(&lvitem));
  194.  
  195.                 hRes = pRegen->get_Name(&bstrVal);
  196.                 ASSERT(SUCCEEDED(hRes));
  197.                 lvitem.iSubItem = IND_SUBITEMNAME;
  198.                 cstrText = bstrVal;
  199.                 ::SysFreeString(bstrVal);
  200.                 lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
  201.                 VERIFY(m_lstRegens.SetItem(&lvitem));
  202.  
  203.                 bstrVal = NULL;
  204.                 hRes = pRegen->get_Description(&bstrVal);
  205.                 ASSERT(SUCCEEDED(hRes));
  206.                 lvitem.iSubItem = IND_SUBITEMDESC;
  207.                 cstrText = bstrVal;
  208.                 ::SysFreeString(bstrVal);
  209.                 lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
  210.                 VERIFY(m_lstRegens.SetItem(&lvitem));
  211.  
  212.                 index++;
  213.  
  214.                 pRegen->Release();
  215.             }
  216.         }
  217.     }
  218.  
  219.     return TRUE;  // return TRUE unless you set the focus to a control
  220.                   // EXCEPTION: OCX Property Pages should return FALSE
  221. }
  222.