• 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

佚名通过本文主要向大家介绍了揭帖,义和团揭帖,揭帖的意思,反洋教书文揭帖选,揭帖的读音等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 接口间通过连接点事件怎么通信呢?在线等待解决马上揭帖!
描述:

我的接口如下:
[
object,
uuid("12BA9A68-00ED-4ca1-A7D4-BE797DCFE1D3"),
dual, helpstring("IY 接口"),
pointer_default(unique)
]
__interface IY :IDispatch
{ 
HRESULT GetLong([out]long* data);
};
// Ix1
[
object,
uuid("4A44D89B-E3F0-4239-A7CC-3D7678A76500"),
dual, helpstring("Ix1 接口"),
pointer_default(unique)
]
__interface Ix1 : IY
{
[id(1), helpstring("方法GetFloat")] HRESULT GetFloat([out,retval] FLOAT* data);
[id(2), helpstring("方法GetStruct")] HRESULT GetStruct([out] VARIANT* mystruct);
[id(3), helpstring("方法GetStr1")] HRESULT GetStr1([out]Mystuct* data);
[propget, id(4), helpstring("属性 Point3D")] HRESULT Point3D([in] LONG index, [out, retval] DOUBLE* pVal);
[propput, id(4), helpstring("属性 Point3D")] HRESULT Point3D([in] LONG index, [in] DOUBLE newVal);
};
// _Ix1Events
[
dispinterface,
uuid("B7A0A456-8B27-492D-BFAC-FA87D258FB9D"),
helpstring("_Ix1事件接口")
]
__interface _Ix1Events
{
[id(1), helpstring("方法OnDraw")] HRESULT OnDraw(void);
[id(2), helpstring("方法CreatorAfter")] HRESULT CreatorAfter(void);
};
// Cx1
[
coclass,
threading("apartment"),
support_error_info("Ix1"),
event_source("com"),
vi_progid("MyTest.x1"),
progid("MyTest.x1.1"),
version(1.0),
uuid("4962F2F2-C6B6-477B-A16B-484B6780CEB6"),
helpstring("x1 Class"),
com_interface_entry("COM_INTERFACE_ENTRY(IY)")
]
class ATL_NO_VTABLE Cx1 : 
public Ix1
//public _Ix1Events
{
public:
Cx1()
{
m_Point[0] = 0;
m_Point[1] = 0;
m_Point[2] = 0;
}
__event __interface _Ix1Events;
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease() 
{
}
public:
virtual HRESULT __stdcall GetLong(long* data);
STDMETHOD(GetFloat)(FLOAT* data);
// _Ix1Events Methods
public:
//STDMETHOD(CreatorAfter)(void);
STDMETHOD(GetStruct)(VARIANT* mystruct);
STDMETHOD(GetStr1)(Mystuct* data);
Mystuct m_stuct;
DOUBLE m_Point[3];
STDMETHOD(get_Point3D)(LONG index, DOUBLE* pVal);
STDMETHOD(put_Point3D)(LONG index, DOUBLE newVal);
};
// x1.h : Cx2 的声明
#pragma once
#include "resource.h"       // 主符号
#include "x3.h"
// Ix2
[
object,
uuid("8B395C2C-BF53-4C60-8844-4492AFE7A9F9"),
dual, helpstring("Ix2 接口"),
pointer_default(unique)
]
__interface Ix2 : IY
{
};
// Cx2
[
coclass,
threading("apartment"),
vi_progid("MyTest.x2"),
progid("MyTest.x2.1"),
version(1.0),
uuid("B3EB2D73-9054-4640-9390-A09B0B4E24A9"),
com_interface_entry("COM_INTERFACE_ENTRY(IY)"),
com_interface_entry("COM_INTERFACE_ENTRY(_Ix1Events)"),
helpstring("x2 Class"),
event_receiver(com,true)
//
]
class ATL_NO_VTABLE Cx2 : 
public Ix2,
public _Ix1Events
{
public:
Cx2()
: m_data(0)
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease() 
{
}
public:
         
virtual HRESULT __stdcall GetLong(long* data);
// _Ix1Events事件
virtual HRESULT __stdcall CreatorAfter();
virtual HRESULT __stdcall OnDraw();
long m_data;
};
Cx1.CPP中
HRESULT Cx1::GetLong(long* data)
{
//this->OnDraw();
this->CreatorAfter();
//_Ix1Events_CreatorAfter();
*data = 120;
return S_OK;
}
Cx2.cpp中
STDMETHODIMP Cx2::CreatorAfter(void)
{
// TODO: 在此添加实现代码
::MessageBox(NULL,"CreatorAfter","test",MB_OK);
m_data = 111;
return S_OK;
}
我在客户端调用GetLong的时候应该出现CreatorAfter对话框,为什么没有出现呢?这是一段vc7下写的atl的源码,希望大虾们帮忙呀!
目的实现当Ix1接口激发事件时Ix2能接收到并进行相应的处理!


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

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

  • 哪里会导致这个错误?谢谢。马上揭帖100分送上
  • 如何给一个接口添加一个属性(属性是一个数组),大虾们快帮我!!在线如果可以马上揭帖!
  • 接口间通过连接点事件怎么通信呢?在线等待解决马上揭帖!
  • template语法问题,解决后立刻揭帖。请稍微用1分钟,帮助一个新手。您获得的不止是感激。
  • 请提供一个写成EXE的COM组件,简单一点。我只是想看看怎么导处接口的。马上揭帖

相关文章

  • 2017-06-05 我怎么才能得到用ShellExcute打开的程序的HWND?
  • 2017-06-05 靠!调试线程就死机,求解
  • 2017-06-04 ADO控件如何动态连接Access数据库
  • 2017-06-05 dll的向导问题
  • 2017-06-04 COM是否可以调用DLL,是否可以使用结构体定义参数
  • 2017-06-05 在一个进程中定义数组,需要在另一个进程中进行数组中数据的访问,怎么办?谢谢各位!!
  • 2017-06-04 进程内Com组件自动化中,可以调用并且DoModel一个自定义的对话框吗?
  • 2017-06-05 SetWindowPos在Win7+IE9下问题
  • 2017-06-05 请问一个进程调用另一个进程,两个进程怎么样传递参数?
  • 2017-06-05 各位仁兄:我用MFC开发一个active控件,需要返回字符串给JS调用,一直调试不成功。

文章分类

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

最近更新的内容

    • win32DLL程序中内嵌ActiveX(ATL没用MFC)
    • 怎样才能学好COM?
    • 怎样用VBA得到Powerpoint内容的框架结构??谢谢
    • CGridCtrl问题,olelinkcpp82
    • 各位大侠,救命呀!!!
    • hookexplorer里的CreateProcess的问题
    • 关于word对象嵌入得请对mfcColeControlModle类高手进来
    • 看完了《com技术内幕》《COM本质论》和《COM原理和应用》该看哪本?谢了!谢了!
    • 我想做一个在网页中使用的ActiveX控件,有没有什么特别的要求?
    • 请问在ActiveX/com里用什么类代替CWnd?

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

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