CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

ATL编写组件时,编译通过,调用时为什么会有这样的问题?(急求答案)

楼主w5meng(wingfancy)2003-08-01 09:49:13 在 VC/MFC / ATL/ActiveX/COM 提问

ATL编写组件时,编译通过,调用时为什么会有这样的问题?  
   
  在一个接口函数(就是编译成*.dll后可供ASP调用的函数)中是这样写的:  
   
  STDMETHODIMP   CItem::SetSize(int   Width,   int   Height,   int   *Result)  
  {  
  AFX_MANAGE_STATE(AfxGetStaticModuleState())  
   
  VARIANT*   pValue   =   NULL;  
  CComVariant   var   =   m_varValue;  
   
  var.Detach(pValue);           //这一句有问题。  
   
  // BYTE   *buf   =   NULL;  
  // buf   =   (BYTE   *)pValue;  
   
  *Result   =   Width   +   Height;  
  return   S_OK;  
  }  
   
  只要我加入var.Detach(pValue);这一句,就有问题,去掉后,一切正常。  
  其中m_varValue是CComVariant类型的变量,存储了二进制数据,通常是一个上传的文件的数据。  
   
  并且不管加不加var.Detach(pValue)这句,编译都能够通过。  
  请问我在这函数里想将m_varValue调到BYTE   *buf中对数据进行处理,应该如何做?  
   
  ASP(使用JS语法)调用时报的错误如下:  
   
   
  ****************************  
   
  Microsoft   VBScript   编译器错误   错误   '800a03f6'    
   
  缺少   'End'    
   
  /iisHelp/common/500-100.asp,行242    
   
  Microsoft   JScript   运行时错误   错误   '800a01fb'    
   
  出现一个意外错误    
   
  /epicn/ASPUploader   Samples/sample1.asp,行9    
   
  ****************************  
   
  第9行正是执行那个函数的代码,在第9行前执行其它函数是正常的。  
   
  JS代码如下:  
   
  ****************************  
   
  <%@   LANGUAGE=JScript%>  
  <%  
  Response.Buffer   =   true;  
  var   form   =   Server.CreateObject("MyRequest.Form");  
  form.Init();  
  var   item   =   form.Item("file1").Item(1);  
   
   
  Response.Write   (item.SetSize(223,44));       //这行报错  
   
  %>  
   
  **************************** 问题点数:10、回复次数:4Top

1 楼skyron(我编程,我存在)回复于 2003-08-01 10:45:25 得分 5

你的程序有问题,不能那样定义和初始化  
  VARIANT*   pValue   =   new   VARIANT;  
  VariantInit(pValue);  
  CComVariant   var   =   m_varValue;  
   
  var.Detach(pValue);            
  Top

2 楼w5meng(wingfancy)回复于 2003-08-01 11:02:19 得分 0

可是如何将其转换为BYTE   *buf呢?Top

3 楼skyron(我编程,我存在)回复于 2003-08-01 13:08:00 得分 3

pValue->vt   ==   ?Top

4 楼rice(rice)回复于 2003-08-01 13:21:11 得分 2

_ASSERTE(   VT_BYREF|VT_UI1   ==   pValue   );  
  buf   =   pValue->pbVal;Top

相关问题

  • 高手帮忙:ATL写的组件,VB中调用时编译出错!!
  • ATL 组件编译连接错误
  • 调用组件?
  • 如何把一个Component编译成Activex 组件,然后在VC里调用?
  • 苦恼!用asp调用ATL作的组件(很简单的组件)!
  • 调用ATL编写的DLL是编译出错
  • ATL的组件在VB中调用的问题
  • 如何在ATL编写COM组件时调用ADO
  • VB调用ATL写的COM组件的问题
  • 我在win2000 Professional环境下编译的com组件(asp调用),在win98 ver2下用不了?

关键词

  • 编译
  • 函数
  • 数据
  • asp
  • pvalue
  • 调用
  • varvalue
  • 通过
  • 错误
  • ccomvariant

得分解答快速导航

  • 帖主:w5meng
  • skyron
  • skyron
  • rice

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo