孙鑫18课--Active控件.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
容器和服务器程序 容器应用程序是可以嵌入或链接对象的应用程序。Word就是容器应用程序。 服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。 ActiveX控件的四种属性 Stock:为每个控件提供的标准属性,如字体或颜色。 Ambient:围绕控件的环境属性——已被置入容器的属性。这些属性不能被更改,但控件可以使用它们调整自己的属性。 Extended:这些是由容器处理的属性,一般包括大小和在屏幕上的位置。 Custom:由控件开发者添加的属性。 切换到VB的运行环境中。VB做为ACTIVEX控件测试容器; VB中加载ACTIVEX控件:选择工程下面的组件: 选择MICROSOFT WINSOCK CONTROL 6.0 (。OCX是ACTIVEX控件的后缀名,但是ACTIVEX控件的后缀名不一定是.OCX,也可以是其它的名字,比如。DLL),选上后,点确定。 选择VIEW下的OBJECT BROWSER。在所有库的下拉列表中,选择MSWINSOCKLIB。可以看到WINSOCK控件出来了。其中,绿色控件表示方法。小手表示控件属性。闪电表,示事件。一个典型ACTIVEX控件会有这三个属性。ACTIVEX控件好处:把常用的功能封装到ACTIVEX控件中,提供给程序开发使用。 新建一个工程,选择MFC的MFC ACTIVEX CONTROLWIZARD,名字是TEST。(开发一个时钟控件)。保持缺省,完成。 平放的小勺是接口。外部的函数通过接口去访问控件的属性和方法。在接口中定义的所有函数都是纯虚函数。通过接口调用的函数是调用CTestCtrl中真正实现的函数。编译一个,会在DEBUG目录下有一个TEST.OCX,这就是控件,要用的话,把它放到要用的目录下面。不能!运行程序,因为它必须要有一个容器。选择ACTIVEX CONTROL TEST CONTAINER。 选择EDIT下面的INSERT NEW CONTROL…….出现下面的图,选择我们的TEST CONTROL。(VC编译环境中) 下面是VB环境中: ACTIVEX要先注册,再能使用。 要想删除ACTIVEX的注册信息: 运行regsvr32 /u(/u表示反注册,然后将TEST.OCX拉到regsvr32 /u后面),弹出: 这时候就找不到TEST ACTIVEX控件了。 要想再注册,用上面同样的方法,但是/u要取消。这时弹出的消息如下 : 这时再找,就可以找到TEST.OCX了。 在VC中的TOOLS菜单下的REGISTER CONTROL也可以达到上面的效果。 控件使用之间,都要注册。 在控件上面输出当前时间。 代码如下: void CTestCtrl::OnDraw( CDC* pdc, const CRect rcBounds, const CRect rcInvalid) { // TODO: Replace the following code with your own drawing code. CTime t = CTime::GetCurrentTime(); CString strtime=t.Format(%H:%M:%S); pdc-TextOut(0,0,strtime); //系统下面自动加的这两句代码是为了填充背景和画椭圆的。 //pdc-FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); //pdc-Ellipse(rcBounds); } 编译的时候要先将测试中的TEST控件删除。 上面这段代码的时间是静止的,不会动,下面创建一个动态的时钟。 int CTestCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here SetTimer(1,1000,NULL); return 0; } void CTestCtrl::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default Invalidate(); 下面这句也可以: InvalidateControl(); 二者等效。 COleControl::OnTimer(nIDEvent); } 这时时间

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档