• 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 > 写ATL控件,由于CWindow句柄无效,无法设置定时器?如何解决?

写ATL控件,由于CWindow句柄无效,无法设置定时器?如何解决?

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

佚名通过本文主要向大家介绍了cwindow,atl控件,获取控件句柄,mfc获取控件句柄,易语言取控件句柄等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 写ATL控件,由于CWindow句柄无效,无法设置定时器?如何解决?
描述:

用ATL写ActiveX控件,控件类派生于CWindowImpl包装了一个CWindow
但由于CWindow句柄无效,无法用CWindow成员函数SetTimer设置定时器?如何解决.
ATL控件的CreateWindow是不是由客户程序完成的啊.
急!


解决方案1:

如果窗口创建后m_hWnd为NULL,估计是你创建的方法不对吧?

解决方案2:

这是因为你的ActiveX控件是windowless(容器为IE,richedit一般都是这样),所以m_hWnd=000000
自己创建一个接口,由外部传入HWND, 在控件类里做为一个属性保存
UINT_PTR SetTimer(         
 HWND hWnd,
    UINT_PTR nIDEvent,
    UINT uElapse,
    TIMERPROC lpTimerFunc
);
其中nIDEvent应该是控件类的this指针
lpTimerFunc是控件类的静态成员函数
这样你就可以访问控件类的数据成员了
注意
UINT_PTR SetTimer(         
 HWND hWnd,
    UINT_PTR nIDEvent,
    UINT uElapse,
    TIMERPROC lpTimerFunc
);如果hWnd=NULL,nIDEvent是无效的,这也是为什么需要外部传入HWND的原因

解决方案3:

CWindow句柄无效?
如果HWND不能用,就用回调。
UINT_PTR SetTimer(          HWND hWnd,
    UINT_PTR nIDEvent,
    UINT uElapse,
    TIMERPROC lpTimerFunc
);
最后一个参数,注意到没?
lpTimerFunc
[in] Pointer to the function to be notified when the time-out value elapses. For more information about the function, see TimerProc. If lpTimerFunc is NULL, the system posts a WM_TIMER message to the application queue. The hwnd member of the message's MSG structure contains the value of the hWnd parameter.
VOID CALLBACK TimerProc(          HWND hwnd,
    UINT uMsg,
    UINT_PTR idEvent,
    DWORD dwTime
);

解决方案4:

http://dev.csdn.net/develop/article/26/26243.shtm

解决方案5:

CMyWindow wnd;
wnd.Create( NULL, CWindow::rcDefault, _T("Hello"),WS_OVERLAPPEDWINDOW|WS_VISIBLE );
wnd.SetTimer......
......


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

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

  • 为什么我的VC6,在创建ATL对象中我选择了最后一项,Ra我看到网上别人有一个CWindowImpldeskband
  • 初学ATL,在基于CWindowImpl的窗口上,怎样才能加上按钮、输入框等?哪里有这方面的代码实例?
  • 如何在继承自CWindowImpl的窗口中动态创建多个static控件,并设置其属性
  • 怎么样才能在CWindowImpl为基类的toolbar里放上网页
  • WTL,CCodePageCombo继承CComboBoxT<ATL::CWindow>类,需要响应下拉菜单CloseUp的消息
  • 如何使CWindow窗体具有浏览器功能?
  • [60分]ATL,非CWindow派生的类,如何得到m_hWnd?用_Module不行啊
  • 如何用CWindowImpl创建一个没有标题栏和边框的窗口?
  • CWindowImpl如何销毁?
  • ATL中,CTest继承CWindowImpl,并且已经创建了窗口。当发送自定义消息,如WM_USER+1,窗口没收到。怎样发送自定义消息?

相关文章

  • 2017-06-05 使用MFC操作EXCEL
  • 2017-06-04 关于VC实现控制IE打印参数的ActiveX的问题
  • 2017-06-05 请教高手,得到cpu的?????
  • 2017-06-05 简单问题,分高,结贴快,求解决方法!
  • 2017-06-05 限制一个程序只能实现n个实例?
  • 2017-06-05 声明DLL导出类是否需要连私有变量函数一起声明?
  • 2017-06-04 在vckbase上下个个MyFirstWTLwindow的例子里面只有一个类还有资源……
  • 2017-06-05 ATLCAtlRegExp正则表达式求大神指导
  • 2017-06-05 NONMFCDLL使用MFC之后出现LNK2005错误,我/FORCE了
  • 2017-06-05 为什么dll中不能调用有ie控件的对话框?

文章分类

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

最近更新的内容

    • C运行库到底是什么东西?它和操作系统有没有关系?
    • 使用类CToolBarCtrl的AddButtons添加上去的按钮,如何控制其大小?
    • 创建新的进程出错
    • 关于atlobject的构造函数
    • 如何在ACTIVEX控件中加入子控件如CStaticCEdit等。
    • COleDropTarget扩展类的注册(Register)错误?如何解决?
    • VC6MFC创建按钮控件问题
    • 一个很棘手的问题,CreateProcess启动的子进程怎么控制?(具体问题请见内)
    • 关于dcom的程序编码实现的问题
    • 能不能写一个DLL,里面用到MFC类,但dll又能被Delphi,VB等调用?

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

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