ATL/WTL/组件开发相关
文章平均质量分 59
lion_wing
这个作者很懒,什么都没留下…
展开
-
VB分布式应用程序开发随记---绑定技术概述
当您使用Visual Basic创建客户时,您可能会经历三种类型的绑定。当使用Object数据类型时,将使用“后期绑定”;无论是否包含对象的类型库都是如此。后期绑定提供了最糟的性能。并且在编译时不进行任何类型检查。只有当您别无选择时才会使用后期绑定。通常情况下,在使用Visual Basic编写的客户端代码中,应该尽可能地避免使用这种方法。当您拥有具有相关类型库的只支持IDispatch的组件原创 2006-02-05 18:35:00 · 1155 阅读 · 0 评论 -
Delphi中COM自动化对象中使用事件
unit SrvUnit2;interfaceuses ComObj, ActiveX, AxCtrls, Classes, SrvEvent_TLB, StdVcl, Srvunit1;type TSimpleEventServer = class(TAutoObject, IConnectionPointContainer, ISimpleEventServer)转载 2012-02-01 15:20:27 · 1326 阅读 · 1 评论 -
自绘WTL的CListViewCtrl
<br />CListViewCtrl对应MFC中的是CListCtrl, CListViewCtrl的自绘本身绘制方法,和其他带有OwnerDraw(我的意思是从COwnerDraw类继承过来的) 的绘制方法基本相同,不过和其他控件相比其中有两个问题还是很棘手的,1,其中就是ListItem的高度要在MeasureItem的函数中修改,例子代码void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)<br /> {<br /> lpMeasur转载 2010-09-09 15:18:00 · 1550 阅读 · 0 评论 -
ATL中的创建对象模型
本文给出了在ATL环境下创建对象型的方法,适用于VC6、VC8首先,设定集合类为XCollection,子对象为XItem。第一步:添加一个ATL Simple Objecct,起名为XItem。第二步:修改IDL文件,添加IXCollection接口。接口声明如下: interface IXItem; //向前声明 [ object, uuid(4807AD05-1CCF-原创 2009-12-30 13:05:00 · 994 阅读 · 0 评论 -
为ATL Control添加事件
Step 5: Adding an EventVisual C++ Concepts: Adding FunctionalityStep 5: Adding an EventIn this step, you will add a ClickIn and a ClickOut event to your ATL control. You will fire the Cl转载 2009-12-17 11:04:00 · 1731 阅读 · 0 评论 -
转:如何在托管环境下释放COM对象
Shanny同学介绍了DataGridView数据导出到Excel的几个方法,其中讲到的使用Microsoft.Office.Core.dll即Microsoft Office 11.0 Object Library.代码大概如下:private void ExecuteTransfer(){ ApplicationClass app; try { app = new Applicati原创 2009-08-10 00:26:00 · 1880 阅读 · 0 评论 -
复合文档操作-读写结构体
存储结构体:#include "stdafx.h"#include #define RESULT_OK(hr) if (!SUCCEEDED(hr)) goto Exit0;#define RELEASE_INTERFACE(X) if (X) { (X)->Release(); (X) = NULL; }class TempData{public:原创 2009-05-19 09:36:00 · 1652 阅读 · 1 评论 -
WTL8 两个小问题的解决
最近在学WTL,资料比较少了(特别是实践性的)发现了两个小问题,特此记录。Q:Error is:"!InlineIsEqualGUID(*m_plibid, GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?"A:This can be solved one of two w原创 2008-07-31 11:18:00 · 1757 阅读 · 2 评论 -
ATL学习实践(VC8)-用CWindowImpl实现窗口
用CWindowImpl实现窗口一、新建工程。在VC8创建一个ATL Project工程。名称为ATL_Test,,Server Type为Executable(EXE),完成。 二、新建窗口类。添加一个C++类,做为窗口类。向导中填写类名CMyWindow,基类CWindowImpl,OK。在stdafx.h中包含头文件:#include 生成代码如下://version原创 2008-04-09 11:54:00 · 6082 阅读 · 0 评论 -
VS2005下安装WTL8.0
安装WTL8.0过程:1.解压WTL_80.exe到目录C:/WTL802.打开cmd,进入C:/WTL80/AppWiz目录,执行setup80.js(VS2003对应的是setup71.js)3.将C:/WTL80/include下的头文件拷贝到VC的include目录D:/Program Files/Microsoft Visual Studio 8/VC/include原创 2008-04-08 09:40:00 · 1572 阅读 · 0 评论 -
在工程中使用ATL向导
在开发过程中,我们可以在一个非COM服务器的工程中使用ATL Object Wizard。例如,在一个独立的Win32应用程序对话中加入ATL对话框或者OLEDB Data Consumer是件很普通的事。下面是VC6.0中使用ATL Object Wizard的最低要求:1、必须是一个DLL或者Win32应用,不能是控制台应用程序。2、以下代码必须出现在.cpp文原创 2006-06-15 00:11:00 · 1174 阅读 · 0 评论 -
让程序支持ATL窗口类
第一步添加包含特定的头文件。如下: #include //包含了此文件,就不需要包含windows.h文件了 extern CComModule _Module; #include 第二步在主程序的CPP文件中声明_Module: CComModule _Module;第三步WinMain函数中进行初始化和关闭原创 2006-06-15 00:12:00 · 1228 阅读 · 0 评论 -
关于ATL中的字符转换宏
ATL提供了一些字符串转换宏,必要时它们在前面描述的各种字符类型之间进行转换。当编译选项使得源字符类型与目标字符类型相同时,这些宏并不执行转换,事实上什么也没干。宏的名字使用了各种字符数据类型的缩写:T表示指向Win32 TCHAR字符数据类型的指针---LPTSTR参数W表示指向Unicode wchar_t字符数据类型的指针---LPWSTR参数A表示指向Win32 TCHAR字符数据原创 2006-05-31 09:44:00 · 1765 阅读 · 0 评论 -
ATL中传递C++对象
http://www.vckbase.com/document/viewdoc/?id=1259原文出处:Passing C++ Object in ATL DLL简介 几个星期以前,我拼命的寻找一个能够通过COM接口传递C++对象的例子,但是,没有找到.这就是我发表这篇文章的原因。 向ATL的DLL中传递一个C++对象参数并不是非常之难,但是,当然也会有点难度,也很有趣。转载 2006-04-24 10:20:00 · 1666 阅读 · 0 评论 -
ATL正则表达式库使用
ATL正则表达式库使用 ATL中,由于ATL Server的需要,需要对Client发送过来的地址、命令等复杂文字字段信 息解码,而正则表达式是公认的最强大的文字解析工具,所以,ATL提供了一些用于正则表 达式的库方便了我们的工作。 1、 CATLRegExp类 声明: template class CAtlRegExp; 初始化: 与微软的GRETA类转载 2006-04-03 10:46:00 · 1169 阅读 · 0 评论 -
VB分布式应用程序开发随记---继承的两个方面
继承是一种以实体间的“是”关系为基础的面向对象的概念。到目前为止,我已使用术语“实现继承”来代替使用更通用的术语“继承”,这是因为使用子类扩展超类是唯一一种平衡“是”关系的方法。当类实现接口时,它还将利用“是”关系。例如,如果类CBeagle实现接口IDog,那么说猎犬“是”小狗是正确的。您可以在任意需要与IDog兼容的对象的情况下使用CBeagle对象。基于接口的编程方式是以继承原创 2006-02-07 18:24:00 · 1308 阅读 · 0 评论 -
VB分布式应用程序开发随记---接口继承
基于接口的编程方式提供了另一种在不趋向于紧密结合的情况下获得重用的方式。基于接口的编程方式是以“黑盒重用”(black-box reuse)为基础的,其中从不会破坏封装性。客户只知道可用请求集的名称和调用语法。客户永远不知道他们所用的对象背后的实现细节。 黑盒重用是通过正式地分离接口和实现来获得的。这意味着接口将变成“一等公民”。接口是一种在自身基础上定义的独立的数据类型。这是传统OO原创 2006-02-07 18:04:00 · 2205 阅读 · 1 评论 -
IDL中引用其它IDL中的interface类型
很多时候,我们在编写组件时,会对原有的组件进行包装使用,而被包装的组件中的接口、类型很繁琐。花费太多的时间重新定义这些接口、类型,对于我们实现简单的功能来说,有些不合算,因此我们重用原组件中的接口、类型。步骤如下:1 在IDL中include "*.IDL"2 将使用MIDL生成的*.h文件放到工程目录下。3 在调用CLSID、IID的文件中#include "*_i.c"文件原创 2012-03-28 00:32:59 · 2195 阅读 · 0 评论