C++无法在对话框CFormView中显示ActiveX控件,控件变量为NULL

问题描述:

我在我的项目(Visual Studio 2015,MFC,C++)中使用了一个SmartGraph ActiveX控件。它已成功注册。 我尝试用这种控制,以适应一个对话框到的CFormViewC++无法在对话框CFormView中显示ActiveX控件,控件变量为NULL

MyAppView.h:

#pragma once 
#include "SmartGraph.h" 
#include "afxwin.h" 

class CMyAppView : public CFormView 
{ 
protected: // create from serialization only 
    CMyAppView(); 
    DECLARE_DYNCREATE(CMyAppView) 

    enum { IDD = IDD_DIALOG1 }; 

    CSmartGraph m_Graph; //!!!!! ActiveX control variable 
    CButton m_ctrlOK; 
.... 
} 

MyAppView.cpp:

.... 

void CMyAppView::DoDataExchange(CDataExchange* pDX) 
{ 
    CFormView::DoDataExchange(pDX); 
    DDX_Control(pDX, IDOK, m_ctrlOK); 
    DDX_Control(pDX, IDC_SMARTGRAPH1, m_Graph); 
} 

void CMyAppView::OnInitialUpdate() 
{ 
    CFormView::OnInitialUpdate(); 
    ResizeParentToFit(); 

    m_Graph.SetParentWnd(this->m_hWnd); 
    m_Graph.SetPlotType(0); 
    m_Graph.put_xLable(_T("Time")); 
    m_Graph.put_yLable(_T("Amplitude")); 
    m_Graph.put_Title(_T("Graph Test")); 
} 
... 

所以m_Graph是NULL和SmartGraph不显示对话框。同时OK按钮变量不是NULL,并且显示正确。 我做错了什么?

您需要创建此对象的实例。 m_Graph.CreateControl(...);

+0

在“SmartGraph.h”中有两个方法返回CreateControl(),但在作者的Demo Project中,他根本没有使用这个方法。 –

+0

我试过这种方法 - 调试断言在occsite.cpp线faled 212号 –

+0

Thew工作演示可能我们一个对话框模板是控制创建隐式在模板...无论如何,你需要创建的对象! – xMRi