C++ C++;can';t在对话框CFormView中显示ActiveX控件,控制变量为空
我在项目中使用ActiveX控件(Visual Studio 2015、MFC、C++)。它已成功注册。 我尝试将带有此控件的对话框放入CFormView MyAppView.h: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();
#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不为空),如果不为空,请尝试确定原因。