• 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 > VC6环境中在非对话框中动态创建activex控件出现的问题,不知道各位有没有碰到过,急啊

VC6环境中在非对话框中动态创建activex控件出现的问题,不知道各位有没有碰到过,急啊

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

佚名通过本文主要向大家介绍了 VC6环境中在非对话框中动态创建activex控件出现的问题,不知道各位有没有碰到过,急啊等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: VC6环境中 在非对话框中动态创建activex控件出现的问题 ,不知道各位有没有碰到过,急啊
描述:

我用vc++6建立一个名为prog的MFC程序,然后加入一个DAQAI的控件,在类视图中自动产生了一个名为CDAQAI的类(daqai.h daqai.cpp),然后在CprogView的头文件中加入#include "daqai.h" 并且添加CDAQAI m_DaqAi成员变量,添加OnCreate消息映射函数,然后在OnCreate中用m_DaqAi.Create(NULl,WS_VISIBLE,CRect(0,0,22,22),this,2000)动态创建控件,编译没有问题,但是运行(debug)时提示
Debug Assertion Failed!
Program: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.exe
File: occsite.cpp
Line: XXXX
于是我做了个副本转到vs2003中编译、运行完全正常,于是跟踪了一下:
CDAQAI是公有继承了CWnd的
并且重载了许函数Create
virtual BOOL CAQAI::Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); 
}
GetClsid() 返回控件的class id,CreateControl是CWnd的成员函数,在return后面的函数应该调用CWnd::CreateControl(...)
***
***
结果在VC6中直接调用COleControlSite::CreateControl(.....),而不是先调用CWnd::CreateControl(...)
HRESULT COleControlSite::CreateControl(CWnd* pWndCtrl, REFCLSID clsid,
LPCTSTR lpszWindowName, DWORD dwStyle, const POINT* ppt, const SIZE* psize,
   UINT nID, CFile* pPersist, BOOL bStorage, BSTR bstrLicKey)
{... ...}
导致函数调用的第一个参数FetClsid()返回的参数传到了COleControlSite::CreateControl中的pWndCtrl中,而第二个参数WS_VISIBLE传到了COleControlSite::CreateControl的clsid中,运行出错。
***
***
在vs2003种却是先调用了CWnd::CreateControl 
BOOL CWnd::CreateControl( REFCLSID clsid, LPCTSTR lpszWindowName,
   DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
   CFile* pPersist, BOOL bStorage, BSTR bstrLicKey )
{
  //略
   return( CreateControl( clsid, lpszWindowName, dwStyle, &pt, &size,
  pParentWnd, nID, pPersist, bStorage, bstrLicKey ) );
}
然后return后面的函数调用
BOOL CWnd::CreateControl(REFCLSID clsid, LPCTSTR lpszWindowName, DWORD dwStyle,
const POINT* ppt, const SIZE* psize, CWnd* pParentWnd, UINT nID,
   CFile* pPersist, BOOL bStorage, BSTR bstrLicKey)
{
//略
return pParentWnd->m_pCtrlCont->CreateControl(this, clsid, lpszWindowName,
dwStyle, ppt, psize, nID, pPersist, bStorage, bstrLicKey);
}
return 后面的函数调用
BOOL COleControlContainer::CreateControl(CWnd* pWndCtrl, REFCLSID clsid,
LPCTSTR lpszWindowName, DWORD dwStyle, const POINT* ppt, const SIZE* psize,
   UINT nID, CFile* pPersist, BOOL bStorage, BSTR bstrLicKey,
   COleControlSite** ppNewSite){... ...}
参数完全匹配,所以也没有问题
哪位高人能指点一下,现在这个情况怎么解决啊,为什么VC6中不是先调用CWnd::CreateControl,难道要在什么地方要设置一下?
急啊……


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

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

  • VC6环境中在非对话框中动态创建activex控件出现的问题,不知道各位有没有碰到过,急啊

相关文章

  • 2017-06-05 怎么使程序一接到消息就马上显示
  • 2017-06-04 socket编程,一个服务器和多个客户端的交互,求思路
  • 2017-06-04 COM构造函数可以传递参数进去吗?
  • 2017-06-04 ActiveX控件的奇怪问题
  • 2017-06-05 谁知道BaseProcessStart的地址是多少?
  • 2017-06-04 关于atl开发com的向导问题
  • 2017-06-05 请问如何检测出所有已挂接的系统HOOK
  • 2017-06-04 一个调试的问题?在线等!!
  • 2017-06-04 请高手指点!
  • 2017-06-05 Dll:VC开发的Dll在VB中调用的参数问题int!!!

文章分类

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

最近更新的内容

    • 提问:VSnet2003中使用ATL开发OCX控件?
    • 两个BSTR还有字符串怎么连接成一个LPCTSTR
    • 网页是显示activex
    • MFC的activex与web页面中的js脚本的交互问题,参数传递~~
    • 请问如何用钩子hook实现对任意程序打开一文件的拦截?
    • 未知发行商去掉
    • 关于钩子的问题
    • OCX工程动态调用DLL的问题
    • 有关WaitForSingleObject的有意思问题
    • 多线程急急求救,初学者问题,为什么线程创建不起来

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

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