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