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.

  1. Create a new MFC ActiveX ControlWizard workspace (no need to special options).
  2. Insert a new dialog resource named IDC_MYDIALOG (check following: style – child, border
    – dialog frame, visible, control, static edge)
  3. Insert a new MFC class named CMyDialog
    (base class CDialog)
  4. Add CMyDialog m_MyDialog member to your CDialogCtrl header source
    (don’t forget to add #include "MyDialog.h")
  5. 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:


<OBJECT ID=“DialogControl” CLASSID=“CLSID:insert here the GUID from ODL file”


Last updated: 17 November 1998

More by Author

Must Read