atl

Is there a x64 version of MsStkPrp.dll

廉价感情. 提交于 2019-12-08 01:44:26
问题 I'm porting an ATL control to 64-bit. The control uses the Stock Property pages (CLSID_StockFontPage, CLSID_StockColorPage) in its properties dialog. After recompiling for x64, the Color and Font tabs are missing (because MsStkPrp.dll is 32-bit). Is there a 64-bit version of the dll or is there a better way to implement fonts and colors in an ATL ActiveX control? 回答1: Even the 32-bits version of msstkprp.dll isn't present in Windows 10, so I copied it from my Windows XP virtual machine (

How to implement a simple add-in for MS Excel on C++

社会主义新天地 提交于 2019-12-07 16:23:32
问题 I need a help for implementing add-in for Excel 2010 or higher on C++, the only functionality of this add-in is renaming of current Excel sheet. The add-in should create new custom tab on the Ribbon with name: “Test Add-in”, this tab contains group with name “My Functionality”, this group contains large button with some picture with name “Rename Current Sheet”. After clicking on the button, I should show the following dialog: User can enter new name, click ok and after this, the name of

How to debug a COM C++ Out of Process Server ? (client: Excel vba)

蓝咒 提交于 2019-12-07 15:41:32
问题 I don't know how to debug a COM ATL C++ out of process exe server with Visual Studio 2015. For a COM ATL DLL there is no problem, the breakpoints are automatically triggered when I call the COM dll. However when I try to debug an EXE server, the debugger didn't break. Indeed the exe server is only loaded at demand and the debug symbols of the exe server are not loaded when the client starts. My client, that call the COM server, is Excel VBA (I have added the reference to the com exe, in the

Pre-registering an ATL window class

强颜欢笑 提交于 2019-12-07 14:32:17
问题 I am using a combination of the ATL and WTL for a project and have derived my own class from CWindowImpl , which looks something like this: class CMyControl : public CWindowImpl<CMyControl> { public: DECLARE_WND_CLASS(_T("MyClassName")) ... BEGIN_MSG_MAP(CMyControl) ... END_MSG_MAP() }; This is all good, and if I use CMyControl::Create to create an instance of the control, then it works fine as under the hood, the CWindowImpl::Create function will register the Win32 class (in this case called

Load image from memory buffer using ATL CImage

久未见 提交于 2019-12-07 13:40:24
问题 How can I load an image from BYTE* array using CImage ? My workaround until now is to simply create a temporary file, but this operation is very expensive sometimes ... There are probably libraries for that, but I do not want to link to other libraries, all I need is to get image size and effectively display to screen, and CImage is all I need for that ... p->pbData is a BYTE* array and p->dwDataLen is a DWORD that hold the array size My code : ATL::CAtlTemporaryFile TempFile; TempFile.Create

ATL3.0中的窗口类-客户端使用ATL创建DUI框架的起点

泪湿孤枕 提交于 2019-12-07 11:15:01
摘要:讨论Active Template Library (ATL) 3.0中的一些类,这些类围绕着Windows API建立了一个面向对象的编程框架,使用这个框架,可以简化Microsoft® Windows®编程并且只需要很少的系统开销。内容包括:考察对窗口做了简单封装的CWindow类;使用CWindowImpl进行消息处理和消息映射;使用ATL中的对话框类以及扩展现有窗口类的功能的方法。 内容: 简介 CWindow CWindowImpl 一个简单而完整的示例 消息映射 为现有的窗口类添加功能 基类消息链 窗口的超类化 窗口子类化 被包含的窗口 消息反射 ATL中的对话框类 指定窗口类的信息 结论 简介: 虽然Active Template Library (ATL)主要是为了支持COM开发而设计的,但它确实包含了很多可用于窗口设计的类。这些窗口类和ATL中的其它类一样,都是基于模版的,并且只需要花费很少系统开销。这篇文章就向我们演示了使用ATL创建窗口和对话框并进行消息处理的基本方法。 这篇文章假设读者熟悉C++语言和Windows程序设计;但是并不一定要求读者具有COM方面的知识。 CWindow: 在ATL窗口类中,CWindow是最基本的。这个类对Windows API进行了面向对象的包装,它封装了一个窗口句柄,并提供一些成员函数来操作它

ATL实现的CDHtmlDialog模板类

你。 提交于 2019-12-07 11:14:17
ATL发展到现在,从未提供像MFC中的CDHtmlDialog一样的HTML页面布局且方便开发者使用的窗口基类,虽然也有DHtml Control可供使用,但并不能像MFC那样通过宏映射来方便地让开发者与页面元素之间进行任意的双向交互,尤其是需要响应页面元素事件的时候,ATL/WTL爱好者必须自己编写相应的代码来完成这些工作。 基于这个原因,通过理解分析MFC中CDHtmlDialog类的功能和实现行为,这里完全使用ATL一样的实现机制来模仿MFC中实现的功能编写了一个头文件,使ATL爱好者在无需MFC庞大的支持库的情形下实现跟CDHtmlDialog一样的功能,并且扩展了其能力。 在下载的压缩包中只有一个头文件 atldhtmldlg.h,头文件的开始部分是一段开发者使用示例的注释,以方便开发者容易地上手。这个文件提供了若干个类和模板类,开发者只需关注其中两个模板类:CDHtmlDialogImpl<>和CMultiPageDHtmlDialogImpl<>,第一个模板类实现了WEB页面布局的对话框,第二个模板类以第一个类为基础,扩展成了在一个对话框中支持多个页面。 使用方式非常简单,从上述两个模板类之一继承实现一个对话框类,然后添加相应的映射宏,实现宏映射中的方法即可构造一个完美、表现能力强、控制方便的对话框窗口,例子代码像下面这样: class CMainDlg :

用VS ATL工程开发播放Gif图片控件的步骤

我怕爱的太早我们不能终老 提交于 2019-12-07 11:13:42
1 创建解决方案 创建一个空的解决方案,名称GifSolution。将来包含控件项目和测试项目。 2 创建ATL项目 解决方案视图-右击解决方案-添加-新建项目,弹出的对话框中选ATL项目,名称为GifAnimate确定。弹出的对话框中选择DLL服务器(可选允许合并代理存根,这样不会产生代理dll),完成后编译,这样工程框架就完成了。 3 添加新组件 3.1 一点要说明的 组件分有窗口的和无窗口的,这里应该用有窗口的,所以添加组件的时候,外观不要基于none,最好基于CStatic。因为gif是动态的,应该用另一个线程绘制,这样不影响主线程响应消息,绘图更加流畅。 两种窗口的区别:无窗口的控件用父窗口做自己的窗口;用父窗口的DC绘图;通过DEFAULT_REFLECTION_HANDLER()把消息反馈给父窗口以进行响应。有窗口的控件,多一个CContainedWindow m_ctlStatic变量作为显示窗口;在BEGIN_MSG_MAP / END_MSG_MAP之间,通过ALT_MSG_MAP(1)宏映射消息处理(1为控件m_ctlStatic构造时候的内部标记,因为可能有多个窗口,默认1个,用户可以自己添加)。 3.2 添加组件对象 为GifAnimate项目添加类-选择ATL控件,点击添加,弹出对话框。 第一卡:组件名称GifAniControl 第二卡:支持连接点

ATL COM 入门

断了今生、忘了曾经 提交于 2019-12-07 11:13:05
开始 第一步 新建一个ATL项目 “文件”-> “新建”-> “项目”,打开“新建项目”对话框,展开Visual C++,选择ATL,在右边的模板中,选择“ATL项目”,确定项目名称“TestATLCom” 在应用程序设置向导中,请选择默认值。 第二步 在项目中创建一个简单的ATL对象 右击项目“TestATLCom”,打开右键菜单,选择“添加”->“类…”,打开“添加类”对话框,在左边“类别”选择“ATL”项,然后在右边“模板”中选择“ATL 简单对象”。添加后,进入“ATL 简单对象向导” 上图中,在“简称”处输入“MyCom”,其余的输入框内容会自动生成。下一步。 上图中,我要解释一下: a) 首先,线程模型,此处我选择“单元”(Apartment),该值是默认的。 b) 第二,接口,此处有两个选项“双重”和“自定义”,我选择“双重”(使用双重接口的好处就是在脚本语言Javascript中也可使用该ATL对象) c) 第三,聚合,作为一项ATL的高级功能,此处不作说明。 d) 再看“ISupportErrorInfo”,如果选择它,则可支持向使用这个ATL对象的客户端发送详细的错误信息。此处,我没有选择。 e) 最后,为了能从组件中调用事件,你要选择“连接点” f) 点击“完成”,生成一个ATL对象。 完成第二步时,Visual Studio 会在项目中添加

VC中使用ATL编写控件

陌路散爱 提交于 2019-12-07 11:12:42
VC中使用ATL编写控件 作者:邵盛松 2010年10月29日 源码下载地址:http://download.csdn.net/source/2793074 在VC2005中创建控件,可以使用MFC创建控件,也可以使用ATL创建控件 一 ATL项目的创建 在VC2005中新建一个项目,项目类型选择ATL,模板选择ATL项目。项目名称命名为ActiveXDemo。 ATL项目向导的概述中直接下一步 ATL项目的应用程序设置如下 服务器类选选择动态链接库(DLL) 附加选项勾选允许合并代理/存根(stub)代码 二 添加ATL控件 步骤 在解决方案资源管理或类视图中选中项目右键 添加->类 在ATL模板中添加ATL控件 1 简称 简称为ATLCtrl其他各项向导会自动添加 2 选项 控件类型为标准控件,线程模型为单元,接口为双重,聚合为是支持勾选连接点 3 接口 默认就可以 4 外观 添加的控件基于none,其他各项默认 5 常用属性 默认,直接完成 三 调试方法 项目文件夹ATLCtrl.htm可以用来测试控件 调试方法 配置下调试环境 命令参数填写ATLCtrl.htm的路径。 调试时,程序程序自动打开了IE。 如果IE出现了为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项。 那就允许阻止的内容 结果出现了ATL8.0