• 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复合控件,让它可以隐藏,又能让他有窗口

求ATL复合控件,让它可以隐藏,又能让他有窗口

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

佚名通过本文主要向大家介绍了atl控件,atl34砂轮,atl方形动力电池,atl80.dll官方下载,atl71.dll一键修复等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 求ATL复合控件,让它可以隐藏,又能让他有窗口
描述:

本帖最后由 okcwf 于 2009-11-02 00:48:16 编辑

在ATL开发的Active复合控件时,如何用代码去激活它,让它有窗口句柄m_hWnd。我把m_bWindowOnly设置为FALSE了,因为如果一旦把m_bWindowOnly设置为TRUE,一隐藏控件就会自动Destroy掉?
详细的问题是这样的:
我用Vs2008 ATL开发了一个窗口型的复合控件的ActiveX,放在IE网页上,网页上有两个同样的ActiveX控件,用Tab网页控件切换控件显示和隐藏,Tab网页控件是使用jquery的tab控件,现在的问题是一旦切换,就会把隐藏掉的控件自动Destroy掉了,后来发现是m_bWindowOnly设置为TRUE的原因,但是如果不为TRUE,则得不到窗口句柄m_hWnd,而现又必须先得到它,又能让控件可以隐藏,怎么办好呢?


解决方案1:

是你自己的代码有问题吧,最好跟踪一下源码,控件隐藏只会隐藏窗口,不会销毁窗口。
看看ATL中IOleObjectImpl的源码:


HRESULT DoVerbHide(LPCRECT /* prcPosRect */, HWND /* hwndParent */)
{
T* pT = static_cast<T*>(this);
HRESULT hr;
hr = pT->OnPreVerbHide();
if (SUCCEEDED(hr))
{
pT->UIDeactivate();
if (pT->m_hWnd)  // 如果控件有窗口
pT->ShowWindow(SW_HIDE); // 隐藏窗口
hr = pT->OnPostVerbHide();
}
return hr;
}

如果你重载了某些函数,比如OnPreVerbHide/UIDeactivate/OnPostVerbHide,你要检查这些函数里面是不是销毁窗口了,本身是不应该销毁的。

解决方案2:

你可以自己设置一个变量,来控制他的显示和隐藏.
在ATL里隐藏,不要在外部隐藏.
比如添加一个方法
SetXXXX(BOOL bShow)
{
 ---
}


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

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

  • 关于cabarc打包atl控件的问题,郁闷中~~~
  • ATL控件2问
  • 关于ATL做复合控件的问题
  • 大家一般都怎么打包Atl开发的ActiveX控件?
  • 使用ATL编写控件的接收器时,怎样在事件处理方法中得到事件源接口?
  • 请教,ATL写的ActiveX控件在IE中加载时接口的调用顺序
  • 在一个atl的复合控件项目中,如果调用其它ocx控件的方法??
  • 如何使用ATL编写的COM控件来播放AVI文件,需要在IE上使用的
  • 如何得到用ATL作的控件的窗口句柄,试了几个都无效,怎么回事?
  • 想用ATL做个控件,但这是怎么回事?

相关文章

  • 2017-06-04 求助:DCOM组件中使用连接点机制时,调用Advise()函数出现E_NOTIMPL(“尚未实现”)错误
  • 2017-06-04 IE插件死循环并能保证循环外的代码被执行
  • 2017-06-04 在哪能下载RSView32?
  • 2017-06-04 怎样让COM接口返回自己定义的信息?
  • 2017-06-05 请问一个奇怪的问题,是关于钩子和dll的!
  • 2017-06-04 在我的电脑里增加一个文件夹,应该做哪种ShellExtension
  • 2017-06-04 OCX编译问题
  • 2017-06-04 关于ATL的问题
  • 2017-06-05 如何在程序中得到操作系统中另外一个进程的句柄???
  • 2017-06-04 30分,大家讨论一下

文章分类

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

最近更新的内容

    • 调试ocx控件出现的错误提示问题?
    • 写了个activex,放在网页上不能运行,不知道怎么回事
    • atl设计com的问题
    • 如何将LIB静态库在NET下转化为COM组件?[求助]
    • 调用GetModuleFileName()老是返回错误,错误号18
    • ActiveX中的类的定义的问题
    • Client调用DCOM,DCOM再调用COM+
    • MFC操作Excel时在非窗口类中进行操作失败
    • tts男音问题?
    • 很难的help

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

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