使用VC++ ATL实现iStylePDF的COM插件】的更多相关文章

本文介绍了一种使用VC++ ATL(Active Template Library),利用ISPExtensibility接口,为 iStylePDF 加入功能简单的COM插件(addin),加入工具栏按钮等可视部件,并为其加入响应事件的方法.我们采用VS2010为iStylePDF平台开发插件,当然也可以使用其他VS工具.开发插件的第一步需要安装iStylePDF的客户端,客户端程序中包括了ActiveX控件,这个是我们需要用到的类型库.如果没有客户端,请进入这里下载.下面开始逐步介绍开发步骤…
https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer 这个是地址,前提下是安装了vc code , 根据提示安装即可…
Grid++Report 可用于开发桌面C/S报表与WEB报表(B/S报表),C/S报表开发适用于VB.NET.C#.VB.VC.Delphi等.WEB报表开发适用于ASP.ASP.NET.JSP/Java.PHP等,支持所有WEB服务器与数据库.开发桌面报表与WEB报表共享相同的开发知识与资源,大大提高报表开发效率. 除了提供报表打印.打印预览.数据导出等功能,还提供独有的报表查询显示功能.实现动态报表.多层表头报表.分组单元格合并报表.分栏报表.票据打印.交叉表及各种格式报表都非常简便.安装…
本文译自Gigi Sayfan在DDJ上的专栏文章.Gigi Sayfan是北加州的一个程序员,email:gigi@gmail.com. 本文是一系列讨论架构.开发和部署C/C++跨平台插件框架的文章的 第一篇 第一部分探索了一下现状,调查了许多现有的插件/组件库,深入研究了二进制兼容问题,并展现了一些该方案必要的一些属性. 后续的文章用一个例子展示了可用于Window.Linux.Mac OS X并易于移植到其他系统的,具有工业级强度的插件框架.与其他类似框架相比,该框架有一些独一无二的属性…
本文讨论一种简单却有效的插件体系结构,它使用C++,动态链接库,基于面向对象编程的思想.首先来看一下使用插件机制能给我们带来哪些方面的好处,从而在适当时候合理的选择使用. 1. 增强代码的透明度与一致性: 因为插件通常会封装第三方类库或是其他人编写的代码,需要清晰地定义出接口,用清晰一致的接口来面对所有事情.你的代码也不会被转换程序或是库的特殊定制需求弄得乱七糟. 2. 改善工程的模块化: 你的代码被清析地分成多个独立的模块,可以把它们安置在子工程中的文件组中.这种解耦处理使得创建出的组件更加容…
ylbtech-Miscellaneos:Grid++Report 1. 关于Grid++Report返回顶部 Grid++Report 可用于开发桌面C/S报表与WEB报表(B/S报表),C/S报表开发适用于VB.NET.C#.VB.VC.Delphi等.WEB报表开发适用于ASP.ASP.NET.JSP/Java.PHP等,支持所有WEB服务器与数据库.开发桌面报表与WEB报表共享相同的开发知识与资源,大大提高报表开发效率. 除了提供报表打印.打印预览.数据导出等功能,还提供独有的报表查询显…
今天写一篇博文告别使用了15年的VB6,从此终结程序生涯.记得读大学的时候第一学习编程,用VB6嵌入MediaPlayer控件写了一个简易视频播放器,看着视频的画面激动人心,从此就爱上了编程,从此也和VB6接下了不解之缘,大学毕业后进入国内某软件公司,直到去年离职一直在用VB6开发和维护大型ERP,在业界看来VB6太老了,廉颇老矣尚能饭否?然而真要尘封却有不舍. VB6是微软COM(组件对象模型)的成功典范,可以说VB6的成功代表了微软COM的胜利,然而自微软.NET战略推行以后,VB6却被无情…
OPNET作为专业级网络仿真软件,其强大的功能使其在多个领域有广泛的应用.“越强大的软件,安装越闹心”,OPNET就是这样一款安装和运行的都很闹心的软件,这里简单转载和记录我安装OPNET和使用中的问题. OPNET安装 我是在有vs2012的win7系统下安装的OPNET14.5.虽然VS2012是C编译器,但貌似版本上无法支持OPNET,所以我安装的基本步骤和网上的大多教程相同,先装VC6.0,再装OPNET. 1. 安装VC6.0.安装VC时,当出现“setup Environment V…
I have tried to assemble together information about the Visual C++ releases, the compiler and the frameworks (MFC and ATL). You can find these on many places, but it is often incomplete or focused on something particular (Visual Studio, C++ compiler,…
今天看到的,感觉不错.转载了 一.什么是MFC 微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范…
下午偶然注意到VC++6.0新建工程标签页下的DevStudio Add-in Wizard,没有接触过,看名字是给Developer Studio开发插件,心生喜感,于是百度之,发生百度检索几乎找不到一篇完整的文字讲述这个wizard的使用, 所以在CSDN搜了搜,费尽周折下载了一个只有几行实际代码的demo,同时在MSDN提供的实例中看到了类似的 demo,研究了几个小时,基本理清了这种插件的编写过程,总结出来,以供大家交流.IDE插件的用处不言而喻 ,大名鼎鼎的Bound Check和Vi…
由于windows环境问题导致的不能安装某些需要VC编译的插件 下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 安装方法: 在CMD中输入 pip install 下载的文件本地地址 如: pip install c:\lxml-3.4.4-cp34-none-win_amd64.whl…
序: 为什么要集成脚本,怎么在工程中集成Python脚本. 在做比较大型的工程时,一般都会分核心层和业务层.核心层要求实现高效和稳定的基础功能,并提供调用接口供业务层调用的一种标准的框架划分.在实际中根据需求会拆分的更细.外部的表现形式就是一个核心动态库,带着一堆业务业务动态库.通过一个调度程序把这些链接起来,外加一堆配置文件,就形成一个完成的项目. 这种模式在一个团队开发中,工作职责比较容易划分.制定API接口后,开发工作基本可以并行实现,包括后期的功能测试(白盒.黑盒).不管工程使用什么语言…
文章属于原创,转载请联系本人.有参照两个博客(http://blog.csdn.net/jiangtongcn/article/details/13509633 http://blog.csdn.net/liyong314159265/article/details/40979853) vs2010,cert2spc.exe,makecert.exe,signtool.exe,signcode.exe 第一步:创建ATL Project,各项默认,点击finish 第二步:添加实现插件功能的类.…
[转自]http://www.cnblogs.com/witxjp/archive/2011/04/03/2004556.html Visual Assist(强烈推荐)网址:http://www.wholetomato.com/功能:VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在WorkSpace窗口中加入一个VA View,可以更方便的查找工程中的文件.类和变…
MFC.ATL和CLR是VC2005内置的三大库,涵盖了Windows的各种开发方法和开发应用.当然关于C++开发的库不止这三个,不过这三个是微软推荐. 从编程所处层次而言,WIN32为最底层,其次是MFC,然后是CLR.WIN32 winAPI MFC MFC类库 CLR .net库 WIN32常规就是不用MFC,使用API函数编的程序. MFC库有很多年的历史了,MFC是基于Windows API 的简单封装.其核心架构基于"Document/View"架构(20年前被认为很潮流的…
1. 确保项目属性中ATL使用处于打开状态. 如VS中项目属性常规—ATL使用—静态链接到ATL 2. 在使用时加上头文件 #include "atlrx.h" 3. 使用示例代码 CAtlRegExp<> reUrl; REParseError status = reUrl.Parse(正则表达式字符串); if (REPARSE_ERROR_OK != status) { //正则表达式错误 return ; } CAtlREMatchContext<> m…
新建ATL Project,工程名命名为MyAtlCom: 出现工程 向导,一路“Next”: Add class,点击添加 ATL Simple Object , 类名CStatistic, 接口IStatistic,“Next”到底; 打开类视图,可以看到ATLCOM下新增了CStatistic类和IStatistic接口: 在ISample上右键,Add->Add Method (或Add Property...)来丰富接口了,然后在CStatistic内实现相应的的方法(属性)即可. 增…
由于最近公司要开发一个以C++插件机制为主的,主要有一个问题就是C++的二进制兼容性的问题.一旦类使用虚函数,只要随便改动下增删查改下头文件的虚函数,就会导致程序在跑的时候进行乱跳,因为这个时候exe跟dll里面的vtable模型是不一致的 刚好程序是使用QT开发了,所以就用了两种方式来保证头文件一致才能进行程序的加载 1. 利用QT的MOC机制QT的MOC机制里面有一个Q_INVOKABLE的宏定义,可以让moc生成类成员函数的相关信息,然后利用QObject里面的method来获取对应的函数…
创建上下文菜单项 1.新建一个ATL Project. 2.建议将Project Property中Linker – General - “Register Output” 设为no,C/C++ - “Code Generation” - “Runtime Library” 设为 /MTd. 3.在Solution Explorer中右键Add Class,选择ATL Simple Object.并在弹出的对话框中为该Class命名. 4.添加完成后建议Build一下Project,MIDL c…
创建图标标记 Handlers (续) 1.新建一个ATL Project. 2.建议将 Project Property 中 Linker – General - “Register Output” 设为 no,C/C++ - “Code Generation” - “Runtime Library” 设为 /MTd. 3.在 Solution Explorer 中右键 Add Class,选择 ATL Simple Object.并在弹出的对话框中为该 Class 命名. 4.添加完成后建议…
一.智能指针的概念 智能指针是一个类,不是指针,智能指针在所包含的指针不再被使用时候会自动释放该所包含指针所占用的系统资源,而不用手动释放. 原理:智能指针封装了包含指针的AddRef()函数和Release()函数,且在该类不被需要的时候在析构函数里调用包含指针的Release()函数释放包含指针的资源.因此实质是利用类的析构达到调用包含指针的Release()函数的目的. 二.VC++中的智能指针:_com_ptr_t _com_ptr_t实质是一个类模板.使用它时需要提供三个参数:接口的名…
由于最近公司要开发一个以C++插件机制为主的,主要有一个问题就是C++的二进制兼容性的问题.一旦类使用虚函数,只要随便改动下增删查改下头文件的虚函数,就会导致程序在跑的时候进行乱跳,因为这个时候exe跟dll里面的vtable模型是不一致的 刚好程序是使用QT开发了,所以就用了两种方式来保证头文件一致才能进行程序的加载 1. 利用QT的MOC机制QT的MOC机制里面有一个Q_INVOKABLE的宏定义,可以让moc生成类成员函数的相关信息,然后利用QObject里面的method来获取对应的函数…
原文转自 https://www.cnblogs.com/zhwl/archive/2012/11/29/2794509.html ATL是ActiveXTemplateLibrary的缩写,它是一套C++模板库.使用ATL能够快速地开发出高效.简洁的代码,同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持.为了方便使用,从MicrosoftVisualC++5.0版本开始,Microsoft把ATL集成到VisualC++开发环境中.1998年9月推出的VisualStudio6.…
创建图标标记 Handlers Creating Icon Overlay Handlers 图标标记是放在代表着某个 Shell 对象的图标之左下角的小图像.它们通常被加在一个对象的图标的身上来提供一些额外信息.例如,有个常见的图标标记是用来表示图标对应着一个链接而非真正的文件或文件夹的小箭头.除了系统提供的标准图标标记,用户还可以通过实现和注册一个图标标记 handler 来给特殊的 Shell 对象自定义图标标记. Icon overlays are small images placed…
原文发表于百度空间,2014-09-24========================================================================== 好难找的资料,记录下.... // Get active project CComPtr<IDispatch> pDisp; CComQIPtr<IGenericProject, &IID_IGenericProject> pPrj; m_pApplication->get_Act…
1.为什么需要插件化系统 “编程就是构建一个一个自己的小积木, 然后用自己的小积木搭建大系统”. 但是程序还是会比积木要复杂, 我们的系统必须要保证小积木能搭建出大的系统(必须能被组合),有必须能使各个积木之间的耦合降低到最小. 传统的程序结构中也是有模块的划分,但是主要有如下几个缺点: a: c++二进制兼容 b: 模块对外暴露的东西过多,使调用者要关心的东西过多 c: 封装的模块只是作为功能的实现者封装,而不是接口的提供者 d: 可替换性和可扩展性差 而插件式的系统架构就是为了解决这样的问题…
在工作中我们要实现一个功能,需要创建MS Office 和 WPS 兼容插件,也就是创建一个DLL,可以同时兼容office和wps.这样带来的好处就是只需要维护同一份代码,大大降低维护的工作! 1. 我们先看看要创建office插件都有哪些技术可以用 VSTO VSTO = Visual Studo Tools for Office,基于.net framework框架的Office开发技术.相对于传统的VBA(Visual Basic Application)开发,VSTO为中高级开发人员提…
来自http://blog.csdn.net/phunxm/article/details/5082488 一.IDE基础配置 1.字体 VC6中“Tools→Options→Format→Font”配置字体:VC2005中“工具→选项→环境→字体和颜色”配置字体. 编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点.常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体).Consolas.YaHei Mono. VC6默认可选字体只有…
先得说下GUID,它是Globally Unique Identifier的简称,中文翻译为“全球唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID.对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件,Windows都会分配一个唯一表示它的ID代码.CLSID是一个128位的随机数,为了确保它的随机性,避免重复,它的算法主要是从两个方面入手: 1. 一部分数字来自于系统网卡的序列号,由于每一个网卡的MAC地址都不一样,因此产生的ID也就会有差异. 2…