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:
<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>注释:insert here the GUID from ODL file即*.odl中的// Class information for ×××××下面的数字DialogControl名字可任意OBJECT ID="xx" CLASSID="CLSID:7446B57B-F6FD-4781-B74A-84E11ED3EE44"