现在的位置: 首页 > 综合 > 正文

MFC基于对话框的ActiveX

2013年12月02日 ⁄ 综合 ⁄ 共 1076字 ⁄ 字号 评论关闭

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); //注意这里,网上有资料this使用NULL,造成的结果是对话框无反应
    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);
}

抱歉!评论已关闭.