在activeX中引入对话框技术

一、引入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::OnSize中写入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::OnSize(UINT nType, int cx, int cy)
{
	COleControl::OnSize(nType, cx, cy);
 
	// TODO: Add your message handler code here
	CRect rect;
	this->GetClientRect(rect);
	this->m_helloDialog.MoveWindow(rect);
}

更多问题解答,v: 

youyouran2017

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值