• 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 > 在DLL中使用CWnd::FromHandlePermanentHWND来获得应用程序中的CWnd,而不要通过FromHandle

在DLL中使用CWnd::FromHandlePermanentHWND来获得应用程序中的CWnd,而不要通过FromHandle

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

佚名通过本文主要向大家介绍了在DLL中使用CWnd::FromHandlePermanentHWND来获得应用程序中的CWnd,而不要通过FromHandle等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在DLL中使用CWnd::FromHandlePermanentHWND来获得应用程序中的CWnd,而不要通过FromHandle
描述:

最近写了一个控件DLL,通过Hook的方法获得了EXE上的Button的HWND,为了更好地对按钮进行操作,我想要通过CWnd::FromHandlePermanent(HWND)
的方法得到该按钮的永久CWnd指针,而不是通过CWnd::FromHandle(HWND)获得的临时CWnd指针.
在控件DLL中使用CWnd::FromHandlePermanent(HWND)上碰到了问题.它总是返回NULL.当然该Button已经在EXE中被声明为CButton类对象了,
也就是说已经被子类化了.
出于无奈,我自己写了个同名的方法来供自己调用,在VC6.0的Debug版本中运行OK,而在Release和VC.net中均不能成功返回.
CWnd* CMyClass::FromHandlePermanent(HWND hWnd)
{
    AFX_MODULE_THREAD_STATE* pState = ::AfxGetAppModuleState()->m_thread.GetData();//问题就在当前行!!!
    CHandleMap* pMap = pState->m_pmapHWND;
    CWnd* pWnd = NULL;
    if (pMap != NULL)
    {
        pWnd = (CWnd*)pMap->LookupPermanent(hWnd);
        ASSERT(pWnd == NULL || pWnd->m_hWnd == hWnd);
    }
    return pWnd;
}
也就是说在MFC42D.dll中是可行的,而在MFC42.dll和MFC71D.dll,MFC71.dll中是不行的.
请你能为我想个办法,在动态链接库中获得应用程序上窗口(HWND)的永久对象CWnd的指针吗?


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

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

  • 在DLL中使用CWnd::FromHandlePermanentHWND来获得应用程序中的CWnd,而不要通过FromHandle

相关文章

  • 2017-06-04 关于MFCactivex中怎么定义外部调用接口问题!!!
  • 2017-06-04 缩写IE插件?
  • 2017-06-05 如何获取IE当前页面的computedstyle?
  • 2017-06-04 GUIDGENEXE在MSDN里也看到了,不过没介绍怎么打开使用啊,这东西在哪啊???
  • 2017-06-05 Windows关机时或注销时,是如何关闭正在运行的程序?
  • 2017-06-04 cab包的发布
  • 2017-06-04 哪个高手来答复,在线等候
  • 2017-06-04 如何在接口函数中调用类对象的成员变量?
  • 2017-06-05 关于volatile关键字在线程中的使用
  • 2017-06-04 请问:View类中怎么捕获ActiveX的事件?

文章分类

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

最近更新的内容

    • Service型态的进程外DCOM组件打包发行时如何实现程序配置而非手动配置。应该注意哪些方面啊?
    • 可是调试时怎样察看callstack中的内容呢?
    • 关于DLL的调用问题
    • 在编写DLL时怎样动态添加用户自定义的控件?
    • 使用ATL制作一个winsock控件
    • 关于程序运行问题送分题
    • 请问如何得到一个VC写的DLL文件本身在硬盘中位置?比如扇区号???
    • 简单的线程,神秘的错误在线求助
    • dll中的类如何使用exe里面类的方法
    • ocx在64环境下注册

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

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