一、引入Dialog技术  

    下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下:  

创建一新的MFC   ActiveX   ControlWizard项目,取名为Hello,其他用缺省选项;

在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话
框上放自己的控件;

为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承;

确认在HelloCtrl.h中已加入语句#include   "HelloDialog.h ",为CHelloCtrl类
添加成员变量CHelloDialog   m_helloDialog;

用ClassWizard在Automation页中为CHelloCtrl添加一方法void   DoHello(),外
部名亦为DoHello;  
void   CHelloCtrl::DoHello()  
{
//   显示对话框
m_helloDialog.DoModal();
}

    可以用ActiveX   Control   Test   Container测试Hello   Control的DoHello方法。  

    下面介绍在制作ActiveX控件时引入无模式对话框技术,制作步骤如下:  

在上面工作的基础上,用ClassWizard为CHelloCtrl添加WM_CREATE的处理函数
OnCreate,在此创建无模式对话框;

修改DoHello代码,在此显示对话框;  
int   CHelloCtrl::OnCreate
(LPCREATESTRUCT   lpCreateStruct)  
{
if   (COleControl::OnCreate(lpCreateStruct)   ==   -1)
return   -1;

//   创建对话框
m_helloDialog.Create(IDD_HELLODIALOG);

return   0;
}

void   CHelloCtrl::DoHello()  

{
//   显示对话框
m_helloDialog.ShowWindow(SW_SHOW);
}


    下面介绍制作以对话框作为界面的ActiveX控件技术,制作步骤如下:   在上面工作的基础上,设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog   Frame、Title   Bar:unchecked;设置More   Style页为Visible:checked;Control:checked;设置Extended   Styles页为Static   Edge:checked;

在CHelloCtrl::OnCreate中写入m_helloDialog.Create(IDD_HELLODIALOG,this)语句;

在CHelloCtrl::OnDraw中写入m_helloDialog.MoveWindow(rcBounds,TRUE);  
int   CHelloCtrl::OnCreate(LPCREATESTRUCT   lpCreateStruct)  
{
if   (COleControl::OnCreate(lpCreateStruct)   ==   -1)
return   -1;

//   创建对话框
m_helloDialog.Create(IDD_HELLODIALOG,this);

return   0;
}

void   CHelloCtrl::OnDraw(CDC*   pdc,   const
CRect&   rcBounds,   const   CRect&   rcInvalid)
{
//   定位Hello对话框
m_helloDialog.MoveWindow(rcBounds,TRUE);
}

posted on 2011-08-17 21:13  aricgreen  阅读(297)  评论(0)    收藏  举报