MFC ActiveX控件程序

本文详细介绍了如何创建一个MFC ActiveX控件,用于显示动态时钟,并添加属性和事件。步骤包括生成项目、处理消息、添加标准属性、自定义属性、方法和事件,以及在测试容器和实际项目中使用控件的方法。
摘要由CSDN通过智能技术生成
 

一:步骤和生成的文件

 1:文件->新建->项目->Visual C++项目->MFC->MFC ActiveX控件->名称填Clock->确定

->应用程序设置(运行时许可证:构选后会生成一个控件许可文件,当其它程序调用此控件时,如果没有此许可文件

就无法使用此控件,一般不构选).

->控件名称(控件类型ID:CLOCK.ClockCtrl.1,属性页类型ID:CLOCK.ClockPropPage.1)->完成.

 2:生成的文件包括:(Clock.h,Clock.cpp对应CClockApp),(CClockPropPage.h, CClockPropPage对应CClockPropPage),

                   (ClockCtrl.h,ClockCtrl.cpp对应CClockCtrl),(Clock.idl对应_DClock和_DClockEvents).

 3:生成动态的时钟控件步骤

 (3.1):在CClockCtrl的OnDraw中:

       void CClockCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)

{

    if (!pdc) return; //默认代码

    //自己添加的代码

    CTime time = CTime::GetCurrentTime();

    CString str = time.Format("%H:%M:%S");

     pdc->TextOut(0,0,str);

}

 (3.2):为CClockCtrl添加消息WM_CREATE的处理,其对应的响应函数为OnCreate.

选中CClockCtrl->击右键->属性->点击消息 图标->找到WM_CREATE,将WM_CREATE添加到

CClockCtrl中,会自动创建一个OnCreate函数,在函数中添加定时器代码.

       int CClockCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

   if (COleControl::OnCreate(lpCreateStruct) == -1)  return -1;

   //在此添加您专用的创建代码

   ::SetTimer(this->m_hWnd,1,1000,NULL); //创建定时器,使其每秒发送一个WM_TIMER消息

   return 0;

}

 (3.3):为CClockCtrl添加消息WM_TIMER的处理,其对应的响应函数为OnTimer.

选中CClockCtrl->击右键->属性->点击消息 图标->找到WM_TIMER,将WM_TIMER添加到CClockCtrl

中,会自动创建一个OnTimer函数,在函数中添加使窗口重绘的代码.

       void CClockCtrl::OnTimer(UINT nIDEvent)

{

    if(AmbientUserMode()) //如果运行模式,不是设计模式则执行以下语句(可以不要此句).

           this->Invalidate();  //此自带函数使窗口无效,这样窗口就会重绘.

           //::InvalidateRect(this->m_hWnd,CRect(0,0,100,100),true);//系统函数使窗口的某一块重绘.

COleControl::OnTimer(nIDEvent);

}

 4:添加标准属性

 (4.1):选中_DClock->击右键->添加->添加属性->属性名选BackColor或ForeColor,实现类型选常用->完成

 (4.2):在CClockCtrl的OnDraw中添加如下代码,填充矩形颜色和设置文字颜色:

CBrush brush(TranslateColor(GetBackColor()));

//GetBackCol

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值