BOOL CSignalDefinerDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); m_ctrNoOfCycles.SetCurSel(m_nSelCycle); //Get the CWnd reference to the DMGraph ActiveX control m_poDMGraphCtrl = GetDlgItem(IDC_DMGRAPHCTRL); /*Set Graph properties*/ if( m_poDMGraphCtrl->m_hWnd != NULL ) { LPUNKNOWN pUnk = m_poDMGraphCtrl->GetControlUnknown(); IDMGraphCtrl* pDMGraphCtrl = NULL; pUnk->QueryInterface(IID_IDMGraphCtrl, (void**) &pDMGraphCtrl); if ( pDMGraphCtrl ==NULL ) { return TRUE; } // Set Axis Color pDMGraphCtrl->put_AxisColor((OLE_COLOR)0xFF); // Set Plot Area Color pDMGraphCtrl->put_PlotAreaColor((OLE_COLOR)0x00); // Set Grid Color pDMGraphCtrl->put_GridColor((OLE_COLOR)0xC0C0C0); // Set Frame Style pDMGraphCtrl->put_FrameStyle((FrameStyle)1); // Set Frame Color pDMGraphCtrl->put_ControlFrameColor((OLE_COLOR)0x5500); // Set Grid Lines Count CComPtr<IDMGraphAxis> spAxisX; pDMGraphCtrl->get_Axis( HorizontalX, &spAxisX); spAxisX->put_GridNumber(10); CComPtr<IDMGraphAxis> spAxisY; pDMGraphCtrl->get_Axis( VerticalY, &spAxisY); spAxisY->put_GridNumber(5); if (NULL != pDMGraphCtrl) { pDMGraphCtrl->Release(); pDMGraphCtrl = NULL; } } vGenerateWave(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
/** * \brief Plots the element points available onto the Graph * \param[out] - * \param[in] pvarrX, pvarrY; Takes the element points in the form of VARIANT array * \return void * \authors Arunkumar Karri * \date 03.02.2012 Created */ void CSignalDefinerDlg::SetGraphData(VARIANT* pvarrX, VARIANT* pvarrY) { CComBSTR bsName("Signal"); IDMGraphCtrl* pDMGraphCtrl = NULL; /*CComPtr<IDMGraphCollection> spElements;*/ CComPtr<IDMGraphElement> spGraphElement; if( m_poDMGraphCtrl->m_hWnd != NULL ) { LPUNKNOWN pUnk = m_poDMGraphCtrl->GetControlUnknown(); pUnk->QueryInterface(IID_IDMGraphCtrl, (void**) &pDMGraphCtrl); if ( pDMGraphCtrl ==NULL ) { return; } } HRESULT hr = pDMGraphCtrl->get_Elements(&spElements); //Set the signal name as caption pDMGraphCtrl->put_Caption(m_strSignalName); long i, nElementCount = 0; BOOL bReplace = FALSE; hr = spElements->get_Count(&nElementCount); for(i=0; i<nElementCount; i++) { CComBSTR bsElemName; CComPtr<IDispatch> spDispatch; hr = spElements->get_Item(i, &spDispatch); hr = spDispatch.QueryInterface(&spGraphElement); spGraphElement->get_Name(&bsElemName); if(_wcsicmp(bsElemName, bsName) == 0) { spGraphElement->Plot(*pvarrX, *pvarrY); pDMGraphCtrl->AutoRange(); return; } else { spGraphElement = NULL; } } if(bReplace == FALSE || spGraphElement == NULL) { CComPtr<IDispatch> spDispatch; hr = spElements->Add(&spDispatch); spGraphElement = NULL; hr = spDispatch.QueryInterface(&spGraphElement); } hr = spGraphElement->put_Name(bsName); hr = spGraphElement->put_PointSymbol( Dots ); hr = spGraphElement->put_PointSize(2); hr = spGraphElement->Plot(*pvarrX, *pvarrY); hr = pDMGraphCtrl->AutoRange(); if (NULL != pDMGraphCtrl) { pDMGraphCtrl->Release(); pDMGraphCtrl = NULL; } SysFreeString(bsName); }