• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请问有没有办法在COM组件中实现定时器?

请问有没有办法在COM组件中实现定时器?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了请问有没有,请问有没有卖半岛铁盒,请问有没有半岛铁盒,请问世界上有没有鬼,请问你们有没有等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问有没有办法在COM组件中实现定时器?
描述:

我想在一个ATL的简单对象中,在它的一个方法中启动一个定时器,然后在OnTimer事件中做一些事。也可以说,我想在每三秒时间就做一个固定的事。


解决方案1:

不要相应OnTimer了,ATL制作的COM中没有OnTimer。
直接用CallBack函数
让Windows直接将计时器讯息发送给您程式的另一个函式。
接收这些计时器讯息的函式被称为「callback」函式,这是一个在您的程式之中但是由Windows呼叫的函式。您先告诉Windows此函式的位址,然後Windows呼叫此函式。这看起来也很熟悉,因为程式的视窗讯息处理程式实际上也是一种callback函式。当注册视窗类别时,要将函式的位址告诉Windows,当发送讯息给程式时,Windows会呼叫此函式。
SetTimer并非是唯一使用callback函式的Windows函式。CreateDialog和DialogBox函式(将在第十一章中介绍)使用callback函式处理对话方块中的讯息;有几个Windows函式(EnumChildWindow、EnumFonts、EnumObjects、EnumProps和EnumWindow)把列举资讯传递给callback函式;还有几个不那么常用的函式(GrayString、LineDDA和SetWindowHookEx)也要求callback函式。
像视窗讯息处理程式一样,callback函式也必须定义为CALLBACK,因为它是由Windows从程式的程式码段呼叫的。callback函式的参数和callback函式的传回值取决於callback函式的目的。跟计时器有关的callback函式中,输入参数与视窗讯息处理程式的输入参数一样。计时器callback函式不向Windows传回值。
我们把以下的callback函式称为TimerProc(您能够选择与其他一些用语不会发生冲突的任何名称),它只处理WM_TIMER讯息:
VOID CALLBACK TimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
      处理WM_TIMER讯息
}
TimerProc的参数hwnd是在呼叫SetTimer时指定的视窗代号。Windows只把WM_TIMER讯息送给TimerProc,因此讯息参数总是等於WM_TIMER。iTimerID值是计时器ID,dwTimer值是与从GetTickCount函式的传回值相容的值。这是自Windows启动後所经过的毫秒数。
您使用callback函式处理WM_TIMER讯息时,SetTimer的第四个参数由callback函式的位址取代,如下所示:
SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ;


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请问各位帮忙,有没有这样一个控件??
  • 请问有没有人知道AT+CKPD=“s”等AT命令为什么返回ERROR?
  • 请问有没有人知道怎么用OBEXPUSH发送文件?
  • 请问:有没有关于office内部COM插件的有关资料
  • 请问有没有函数或代码可以从进程或线程id得知他们所属的dll或exe的实例句柄注意是id
  • 请问有没有根据函数地址来获得该函数的函数名的函数?
  • 请问有没有比HookApi更好的方法截获Windows98中用于TCP/IP通讯的connect函数
  • 请问有没有检测程序是否缺少dll的工具?我的程序在98下不好用,2000,xp下正常
  • 请问在VC中有没有比较好的调试ActiveX插件的方法呢?
  • 请问有没有哪位达人知道可以使用自带的控件CMSCOMM单独开辟一个线程(在线等答复)

相关文章

  • 2017-06-04 请大虾指教一下《COM本质论》
  • 2017-06-04 STA中调用Free的Com需要使用P/S吗?
  • 2017-06-04 郁闷死了。怎么给我的ActiveX控件传递char数据啊?
  • 2017-06-04 请教OLE将IDataObject放在什么地方?
  • 2017-06-05 简单的问题,请问在Dll的函数参数能不能是结构类构的。
  • 2017-06-04 请教简单的STL问题,在线等。。。
  • 2017-06-04 在线急求!mscomm控件接收的数据个数一次最多可以有多少个???
  • 2017-06-05 再谈MFC操作Excel2007(VS2005+excel2007)
  • 2017-06-04 接“如何在COM中使用Array,List,Map存储对象”
  • 2017-06-05 将EXE文件注册成系统服务之后怎么调试?谢谢!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • com入门问题2
    • 如果将插入WORD的ActiveX控件对象持久化到WORD文档中?
    • 我用VB开发一个COM组件,要返回一张图片,这个组件可能被VC调用,请问怎么返回图片,VC中又要怎么处理,,,?
    • 刚刚想到个很白痴的问题,关于MFC的EXE
    • Win7下的控件如何设置设置管理员权限运行
    • 急需帮助,关于串口通讯的的问题。
    • MFC如何调用tlb文件
    • 请教一个DLL问题
    • 如何通过WMI来获得组策略中,密码策略的相关内容。通过WMI让电脑我的桌面不显示
    • 如何根举进程ID得到他的窗口句柄

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有