コード例 #1
0
/**
* \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);
}