MFCActiveX实例程序.docVIP

  • 13
  • 0
  • 约8.81千字
  • 约 6页
  • 2017-05-12 发布于河南
  • 举报
MFCActiveX实例程序

*****************创建一个MFC ActiveX控件程序(时钟控件程序) (开发工具:VS 2003) *********************** 一:步骤和生成的文件 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())); //GetBackColor返回的是OLE_COLOR,TranslateColor将OLE_COLOR转换为COLORREF pdc-FillRect(CRect(0,0,100,100), brush);//pdc-FillRect(rcBounds, brush); pdc-SetBkMode(TRANSPARENT); //将文字背景设置为透明. pdc-SetTextColor(TranslateColor(GetForeColor())); //设置文字颜色. (

文档评论(0)

1亿VIP精品文档

相关文档