袁绍伦
路人甲
路人甲
  • 注册日期2003-08-08
  • 发帖数654
  • QQ164646905
  • 铜币1336枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1397回复:0

C++ Example of a SafeArray Dataset

楼主#
更多 发布于:2003-09-03 21:37

void CMapXView::OnSafeArray() {
 CMapXFields flds;
 CMapXDataset ds;
 COleVariant fldsVt;
 COptionalVariant optVt;
 COleSafeArray theData;

 // Create a 3x2 SafeArray
 unsigned long dims[2] = {3, 2};
 theData.Create(VT_VARIANT, 2, dims);

 // Fill the SafeArray with data
 long indx[2] = {0,0};
 theData.PutElement(indx, COleVariant("ME"));

 indx[0]=1;indx[1]=0;
 theData.PutElement(indx, COleVariant("NH"));

 indx[0]=2;indx[1]=0;
 theData.PutElement(indx, COleVariant("VT"));

 indx[0]=0;indx[1]=1;
 theData.PutElement(indx, COleVariant(100l));

 indx[0]=1;indx[1]=1;
 theData.PutElement(indx, COleVariant(200l));

 indx[0]=2;indx[1]=1;
 theData.PutElement(indx, COleVariant(300l));

 try {
  // Create a new fields object
  flds.CreateDispatch(flds.GetClsid());

  // Describe the structure of the SafeArray, so that our
  // columns will have names after the Datasets.Add
  flds.Add(COleVariant(1l),
   COleVariant("State"),
   COleVariant((long)miAggregationIndividual),

   COleVariant((long)miTypeString));
  flds.Add(COleVariant(2l),
   COleVariant("Sales"),
   COleVariant((long)miAggregationSum),
   COleVariant((long)miTypeNumeric));

  // point fldsVt at our fields object
  fldsVt.vt = VT_DISPATCH;
  fldsVt.pdispVal = flds.m_lpDispatch;
  fldsVt.pdispVal->AddRef();

  // Create a SafeArray dataset
  ds = m_ctrlMapX.GetDatasets().Add(miDataSetSafeArray, theData,
   COleVariant("My Dataset"), COleVariant(1l), optVt, optVt,

   fldsVt, optVt);

  // Create a theme based on the "Sales" column in the
  // new dataset
  ds.GetThemes().Add(miThemeIndividualvalue, "Sales", "My Theme");
 } catch (COleDispatchException *e) {
  e->ReportError();
  e->Delete();
 } catch (COleException *e) {
  e->ReportError();
  e->Delete();
 }
}
喜欢0 评分0
愿意和大家交朋友! QQ:47559983 MSN:shaolun_yuan@hotmail.com eMail:shaolun-yuan@163.com
游客

返回顶部