Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;can';t在对话框CFormView中显示ActiveX控件,控制变量为空_C++_Null_Mfc_Activex_Cview - Fatal编程技术网

C++ C++;can';t在对话框CFormView中显示ActiveX控件,控制变量为空

C++ C++;can';t在对话框CFormView中显示ActiveX控件,控制变量为空,c++,null,mfc,activex,cview,C++,Null,Mfc,Activex,Cview,我在项目中使用ActiveX控件(Visual Studio 2015、MFC、C++)。它已成功注册。 我尝试将带有此控件的对话框放入CFormView MyAppView.h: #pragma once #include "SmartGraph.h" #include "afxwin.h" class CMyAppView : public CFormView { protected: // create from serialization only CMyAppView();

我在项目中使用ActiveX控件(Visual Studio 2015、MFC、C++)。它已成功注册。 我尝试将带有此控件的对话框放入CFormView

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_图为空,SmartGraph不会显示在对话框中。同时,OK button变量不为NULL,并且显示正确。
我做错了什么?

您需要创建此对象的实例。m_图.CreateControl(…)

在“SmartGraph.h”中有两种方法返回CreateControl(),但在作者的工作演示项目中,他根本没有使用这种方法。我尝试过这种方法-调试断言在occsite.cpp第212行中失败。此工作演示可能会给我们一个对话框模板,如果控件是在模板中隐式创建的。。。无论如何,您需要创建对象@xMRi:m_Graph的控件应该由DDX_控件创建,据我所知。对Nika_Rika:在DDX_控件上放置一个断点,逐步遍历它,查看它是否已成功创建(即m_Graph.m_hWnd不为空),如果不为空,请尝试确定原因。