小编use*_*801的帖子

如何在C或C++中检查结构是否为NULL

我有以下结构

typedef struct 
{
   char      data1[10];
   char      data2[10];
   AnotherStruct  stData;
}MyData;
Run Code Online (Sandbox Code Playgroud)

由于某种原因,实现者选择不将stData作为指针,所以我必须忍受它.我的问题是如何检查stData成员是否为空?因为如果它是空的我需要跳过我的代码中的某些东西.

任何帮助表示赞赏

c c++ data-structures

14
推荐指数
1
解决办法
5万
查看次数

VB6应用程序是否会在Windows 10上运行

我们有一个遗留应用程序(VB,.NET 2.0,Vs2005 COM dll)在窗口7上运行良好,现在如果我们要移动到Windows 10,我们可以预见到什么样的问题,我正在阅读此链接

并且提到"您的应用程序不能依赖于VB6运行时",但在此链接中再次提到它支持

我的问题是,我正在查看正确的文件或任何人都可以分享正确的链接

windows vb6 compatibility

8
推荐指数
1
解决办法
8634
查看次数

如何使用COM在两个进程之间传输数据

我对COM有一般的了解,并希望了解COM如何帮助进行数据传输.假设有两个进程,Process-A和Process-B,它们都希望彼此共享一些数据,当然有很多RPC机制,但我想使用COM.

  1. 您无法创建COM dll,因为它将变得特定于进程并且无法使用
  2. 我们可以创建一个单吨COM EXE服务器并将结构包装在COM CoClass中并将其作为属性公开,然后......不知道如何操作?

以上是我的理解,你们中的任何人都可以帮助我清楚我对这个主题的理解吗?基本上我想在使用COM的两个进程之间共享一个数据结构

com atl visual-c++

6
推荐指数
1
解决办法
998
查看次数

MIDL更改接口名称

我有一个COM DLL,使用COM Inter-op的.NET应用程序使用它.在其中一个CoClasses中,有一个名为IT6TrackData的接口,它有一个名为TrackData的get属性

从IDL文件:

Interface IT6TrackData
{
   [propget, id(1)] HRESULT TrackData([out, retval] SAFEARRAY(BYTE) *pVal);
}
Run Code Online (Sandbox Code Playgroud)

当查看上述IDL文件的TLB文件时,它将该属性显示为trackData(小写字母t)由于某种原因,客户端应用程序将此属性称为trackData,一切正常,直到现在.

作为增强功能的一部分,上面的接口已升级为具有put属性

Interface IT6TrackData
{
   [propget, id(1)] HRESULT TrackData([out, retval] SAFEARRAY(BYTE) *pVal);
   [propput, id(1)] HRESULT TrackData([in]SAFEARRAY(BYTE) pVal);
}
Run Code Online (Sandbox Code Playgroud)

现在,当查看上述IDL文件的TLB文件时,它将该属性显示为TrackData(t为大写),这打破了继续使用小写"t"引用trackData的旧.NET客户端.

我已经浏览了这篇知识库文章 http://support2.microsoft.com/kb/220137/en-gb

但有没有出路,有没有人知道这个问题的解决方案.

感谢您的关注.

IDL文件

import "oaidl.idl";
import "ocidl.idl";

 [
   object,
   uuid(72867CE8-41B6-459E-A258-C7A162A26D5E),
   dual,
   nonextensible,
   helpstring("ITFST6TrackData Interface"),
   pointer_default(unique)
 ]
 interface ITFST6TrackData : IDispatch{
   [propget, id(1), helpstring("property TrackData")] HRESULT TrackData([out, retval]   SAFEARRAY(BYTE) *pVal);
   [propput, id(1), helpstring("property TrackData")] HRESULT TrackData([in]SAFEARRAY(BYTE) pVal);
};
[
   uuid(1D7ABC17-2738-4373-9B6B-239E344DBD21),
   version(1.0),
   helpstring("SampleCom 1.0 Type Library") …
Run Code Online (Sandbox Code Playgroud)

c++ com atl midl

3
推荐指数
1
解决办法
885
查看次数

COM dll取消注册问题

我有一个项目有很多COM dll,为了要求我必须取消注册COM Dll,我通过调用Regsvr32 -u选项和dll未注册.

这种取消注册操作似乎删除了一个ICommon接口,即接口,这使得其他COM对象无法使用.

ICommon接口由所有其他COM组件实现,在未注册的COM Dll的注册表脚本中,我没有看到任何删除此ICommon接口表单注册表的代码,如何删除它.

如何删除给定的接口信息CoClass,BEGIN_COM_MAP是否可以COM_INTERFACE_ENTRY扮演任何角色?

c++ windows com dcom atl

2
推荐指数
1
解决办法
389
查看次数

标签 统计

atl ×3

c++ ×3

com ×3

windows ×2

c ×1

compatibility ×1

data-structures ×1

dcom ×1

midl ×1

vb6 ×1

visual-c++ ×1