• 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 > 一个始终没解决的问题,今天再发一帖,高手请进。

一个始终没解决的问题,今天再发一帖,高手请进。

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

佚名通过本文主要向大家介绍了155888百码汇高手帖,智多星高手帖666444,牛牛论坛高手帖,本港台高手帖4685,王中王高手帖等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个始终没解决的问题,今天再发一帖,高手请进。
描述:

环境说明:VC的ATL COM AppWizard向导生成,插入的是Simple Objects,
实现类:
// abc.h : Declaration of the Cabc
#ifndef __ABC_H_
#define __ABC_H_
#include "resource.h"       // main symbols
/////////////////////////////////////////////////////////////////////////////
// Cabc
class ATL_NO_VTABLE Cabc : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Cabc, &CLSID_abc>,
public IDispatchImpl<Iabc, &IID_Iabc, &LIBID_LINSHILib>
{
public:
Cabc()
{
i    = 1;
}
DECLARE_REGISTRY_RESOURCEID(IDR_ABC)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(Cabc)
COM_INTERFACE_ENTRY(Iabc)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// Iabc
public:
STDMETHOD(snd)(/*[in]*/ BSTR msg);
STDMETHOD(con)(/*[in]*/ BSTR ser);
private:
int i;
};
#endif //__ABC_H_
//////////////////////////////////////////////////////////////////////////
// abc.cpp : Implementation of Cabc
#include "stdafx.h"
#include "Linshi.h"
#include "abc.h"
#include <comdef.h>
/////////////////////////////////////////////////////////////////////////////
// Cabc
STDMETHODIMP Cabc::con(BSTR ser)
{
i = 10;
return S_OK;
}
STDMETHODIMP Cabc::snd(BSTR msg)
{
int a = i;
return S_OK;
}
问题所在:我先调用con方法,得到i的值为10,当调用snd时,a和i的值为1(i被初始为1的),为什么?怎样解决这个问题?


解决方案1:

这样写肯定没错呀
我以前刚写碰到过这种问题,不是ATL写COM的错,是我调用时出的错,希望对你有帮助。
Private Sub Command1_Click()
Dim COMObject As new MyComLib.FTPConnect
COMObject.connectFTP "61.186.250.63",21
Set COMObject = Nothing
End Sub
Private Sub Command9_Click()
Dim COMObject As new MyComLib.FTPConnect
COMObject.sendFTP "GET 'd:\zxf\abc.exe' 'e:\abc.exe'"
Set COMObject = Nothing
End Sub
连接时正确,发送指令就错,后来发现是因为操作两个方法之前都用了
Dim COMObject As new MyComLib.FTPConnect,分别创建了新的对象,如果把第二方法的
Dim COMObject As new MyComLib.FTPConnect去掉就正确了(第一方法中的Set COMObject = Nothing要删除),你再仔细查看一下。


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

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

  • 一个始终没解决的问题,今天再发一帖,高手请进。

相关文章

  • 2017-06-05 ActiveX打包问题
  • 2017-06-05 在dll中,如何在自定义类中建立消息循环机制
  • 2017-06-05 atL,多线程问题。
  • 2017-06-04 ATL中如何调用ActiveX大哥帮忙看看
  • 2017-06-05 WIN7普通账户下ATL做的控件在网页上出不来
  • 2017-06-04 如何让一个不支持MFC的ATL工程支持MFC?
  • 2017-06-05 如何点击WebBrowserActiveX控件中一个无序列表项?
  • 2017-06-04 alt的问题?
  • 2017-06-04 VC开发ActiveX实现客户端下载服务器端SqlServer中的数据问题
  • 2017-06-05 如何把一个Handle转化为Object

文章分类

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

最近更新的内容

    • 创建DLL出现的问题!
    • 线程是否可以操作父进程的窗口控件?
    • 请问COM控件和Activex控件一样吗?
    • 怎样使线程间隔执行??
    • 如何用Installshield将DLL组件自动注册?急,在线等
    • 线程结束,但是其中的一个函数没有返回仍在运行,如何处理?
    • 如何获取IE客户区的鼠标左键消息?
    • WindowsXPSP2HomeEdition下DCOM的连接激活问题
    • 调用AfxBeginThread后,是否需要什么函数释放什么资源?
    • 如何在程序中得到操作系统中另外一个进程的句柄???

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

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