网上看到很多。都比较麻烦 下面这个是最简单的
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)
intCDialogCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(COleControl::OnCreate(lpCreateStruct)==-1)
return-1;
m_MyDialog.Create(IDD_MYDIALOG,this);
return0;
}
Modify the member function OnDraw (the dialog's size depends on the WIDTH and HEIGHT specified in the HTML file):
voidCDialogCtrl::OnDraw(CDC* pdc,constCRect& rcBounds,constCRect& 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>