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(...);
在“SmartGraph.h”中有两个方法返回CreateControl(),但在作者的Demo Project中,他根本没有使用这个方法。 –
我试过这种方法 - 调试断言在occsite.cpp线faled 212号 –
Thew工作演示可能我们一个对话框模板是控制创建隐式在模板...无论如何,你需要创建的对象! – xMRi