Dialog frame as an ActiveX control

I wanted to create a control which would behave as a dialog or formview (you can place controls here). There is a simple way to do it - to take advantage of ActiveX. 

Create a new MFC ActiveX ControlWizard workspace (no need to special options). 

Insert a new dialog resource named IDC_MYDIALOG (check following: style - child, border - dialog frame, visible, control, static edge) 

Insert a new MFC class named CMyDialog (base class CDialog) 

Add CMyDialog m_MyDialog member to your CDialogCtrl header source (don't forget to add #include "MyDialog.h") 

Using classwizard add a member function OnCreate (WM_CREATE) 

int CDialogCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

    if (COleControl::OnCreate(lpCreateStruct) == -1)

        return -1;

    m_MyDialog.Create(IDD_MYDIALOG, this);

    return 0;

}

Modify the member function OnDraw (the dialog's size depends on the WIDTH and HEIGHT specified in the HTML file): 

void CDialogCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)

{

   // TODO: Replace the following code with your own drawing code.

   // pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));

   // pdc->Ellipse(rcBounds);

   m_MyDialog.MoveWindow(rcBounds, TRUE);

}

To show the control in your browser use this simple HTML: 

  

  

  DialogControl

  

  

  

  

  

   HEIGHT=300 WIDTH=300>

  

  

  

  

  

Last updated: 17 November 1998