我作了一个ACTIVEX ,MainDialog 是ACTIVEX要显示的界面,但为什么不显示呢?// MZCFCtrl.cpp : CMZCFCtrl ActiveX 控件类的实现。#include "stdafx.h"
#include "MZCF.h"
#include "MZCFCtrl.h"
#include "MZCFPropPage.h"#include "MainDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CMZCFCtrl, COleControl)// 消息映射BEGIN_MESSAGE_MAP(CMZCFCtrl, COleControl)
ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
ON_WM_CREATE()
END_MESSAGE_MAP()// 调度映射BEGIN_DISPATCH_MAP(CMZCFCtrl, COleControl)
END_DISPATCH_MAP()// 事件映射BEGIN_EVENT_MAP(CMZCFCtrl, COleControl)
END_EVENT_MAP()// 属性页// TODO: 按需要添加更多属性页。请记住增加计数!
BEGIN_PROPPAGEIDS(CMZCFCtrl, 1)
PROPPAGEID(CMZCFPropPage::guid)
END_PROPPAGEIDS(CMZCFCtrl)// 初始化类工厂和 guidIMPLEMENT_OLECREATE_EX(CMZCFCtrl, "MZCF.MZCFCtrl.1",
0x6059f8d1, 0xbc20, 0x41bb, 0x93, 0x37, 0x47, 0x9, 0x17, 0x7c, 0x25, 0x80)// 键入库 ID 和版本IMPLEMENT_OLETYPELIB(CMZCFCtrl, _tlid, _wVerMajor, _wVerMinor)// 接口 IDconst IID BASED_CODE IID_DMZCF =
{ 0xD6A32FC5, 0x7346, 0x4B31, { 0xBF, 0xC9, 0x3E, 0x2A, 0xE4, 0x72, 0x4B, 0x3D } };
const IID BASED_CODE IID_DMZCFEvents =
{ 0x938FDE3D, 0xE7AA, 0x4B2A, { 0x90, 0xB0, 0xFF, 0x46, 0xBC, 0x56, 0xDF, 0xFE } };// 控件类型信息static const DWORD BASED_CODE _dwMZCFOleMisc =
OLEMISC_SIMPLEFRAME |
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;IMPLEMENT_OLECTLTYPE(CMZCFCtrl, IDS_MZCF, _dwMZCFOleMisc)// CMZCFCtrl::CMZCFCtrlFactory::UpdateRegistry -
// 添加或移除 CMZCFCtrl 的系统注册表项BOOL CMZCFCtrl::CMZCFCtrlFactory::UpdateRegistry(BOOL bRegister)
{
// TODO: 验证您的控件是否符合单元模型线程处理规则。
// 有关更多信息,请参考 MFC 技术说明 64。
// 如果您的控件不符合单元模型规则,则
// 必须修改如下代码,将第六个参数从
// afxRegApartmentThreading 改为 0。 if (bRegister)
return AfxOleRegisterControlClass(
AfxGetInstanceHandle(),
m_clsid,
m_lpszProgID,
IDS_MZCF,
IDB_MZCF,
afxRegApartmentThreading,
_dwMZCFOleMisc,
_tlid,
_wVerMajor,
_wVerMinor);
else
return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}// CMZCFCtrl::CMZCFCtrl - 构造函数CMZCFCtrl::CMZCFCtrl()
{
InitializeIIDs(&IID_DMZCF, &IID_DMZCFEvents);  EnableSimpleFrame();
// TODO: 在此初始化控件的实例数据。
}// CMZCFCtrl::~CMZCFCtrl - 析构函数CMZCFCtrl::~CMZCFCtrl()
{
// TODO: 在此清理控件的实例数据。
}// CMZCFCtrl::OnDraw - 绘图函数void CMZCFCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
 
if (!pdc)
return;
   
DoSuperclassPaint(pdc, rcBounds); m_MainDialog.MoveWindow(rcBounds, TRUE); 
 CBrush brBackGnd(TranslateColor(AmbientBackColor()));
 pdc->FillRect(rcBounds, &brBackGnd);
}// CMZCFCtrl::DoPropExchange - 持久性支持void CMZCFCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX); // TODO: 为每个持久的自定义属性调用 PX_ 函数。
}// CMZCFCtrl::OnResetState - 将控件重置为默认状态void CMZCFCtrl::OnResetState()
{
COleControl::OnResetState();  // 重置 DoPropExchange 中找到的默认值 // TODO: 在此重置任意其他控件状态。
}// CMZCFCtrl 消息处理程序 int CMZCFCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1; m_MainDialog.Create(IDD_DIALOG1, this); return 0;
}