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:
  <html>
  <head>
  <title>DialogControl</title>
  </head>
  <body>
  
  <center>
  <OBJECT ID="DialogControl"  CLASSID="CLSID:insert here the GUID from ODL file"
   HEIGHT=300 WIDTH=300>
  </OBJECT>
  </center>
  
  </body>
  </html>

Last updated: 17 November 1998



Comments

  • Thank for your article.

    Posted by fery Setianto on 07/03/2013 10:04pm

    Thank for your article.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

  • Hybrid cloud platforms need to think in terms of sweet spots when it comes to application platform interface (API) integration. Cloud Velocity has taken a unique approach to tight integration with the API sweet spot; enough to support the agility of physical and virtual apps, including multi-tier environments and databases, while reducing capital and operating costs. Read this case study to learn how a global-level Fortune 1000 company was able to deploy an entire 6+ TB Oracle eCommerce stack in Amazon Web …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds