Welcome 微信登录

首页 / 软件开发 / VC.NET

COM组件开发实践(一)

COM组件开发实践(一)

COM组件开发实践(一)2010-05-29 博客园 Phinecos(洞庭散人)Preface因为项目需要,开始从事ActiveX方面的工作,看了一些资料,可惜都是些COM原理方面的,没有切合实际动手的东西,在CodeProject上读完David Marcionek的文章【1】后,收获良多,但也遇到一些恼人的小问题,因此在其基础上就一些易错点做些小注解。本文版权归David Marcionek所有。简介在本文中,我们将创建一个ActiveX控件,当加载...
COM组件开发实践(二)

COM组件开发实践(二)

COM组件开发实践(二)2010-05-29 博客园 Phinecos(洞庭散人)假设需求如下:底层是一个数学运算库DLL,中间是ActiveX控件(它调用底层的数学运算库DLL来完成控制层),界面层在测试时可以是一个exe程序,最后发布到IE浏览器上测试。数学运算库DLL的开发新建一个Win32 DLL项目,加入一个头文件MyNum.h,在其中声明所有的数学函数(为简单起见,本文只考虑加法运算),代码如下:#ifndef MY_NUM_H#define ...
COM组件开发实践(三)

COM组件开发实践(三)

COM组件开发实践(三)2010-05-29 博客园 Phinecos(洞庭散人)前面两篇文章分别介绍了MFC ActiveX应用程序和使用ATL开发ActiveX的简单实例,但还有两个问题需要解决:1)标记ActiveX控件为安全的控件 2)对控件进行数字签名。本文将结合这两点进行简单的介绍。Building a Safe ActiveX Control如何不想办法将控件标记为安全的,就会在Web页面与控件进行交互时出现如下图的警告信息:下面将分别介绍在...
COM组件开发实践(四)---From C++ to COM :Part 1

COM组件开发实践(四)---From C++ to COM :Part 1

COM组件开发实践(四)---From C++ to COM :Part 12010-05-29 博客园 Phinecos(洞庭散人)一,C++客户重用C++对象假设已经有一个可以重用的类,我们就可以在自己的程序中去重用它,只需要将其定义和实现文件加入到我们自己的工程中,并且在使用它的文件中包含此类的定义文件就可以了,这也是我们最常用的C++标准重用方法。就拿我自己来说,在CodeProject上遇到比较好的控件代码,都是这样直接用到自己的项目中来的。下面...
COM组件开发实践(五)---From C++ to COM :Part 2

COM组件开发实践(五)---From C++ to COM :Part 2

COM组件开发实践(五)---From C++ to COM :Part 22010-05-29 博客园 Phinecos(洞庭散人)一,使用抽象基类重用C++对象在上一篇文章《COM组件开发实践(四)---From C++ to COM :Part 1》中,我们已经将要复用的C++对象封装到DLL中了,对象的声明和实现已经实现了剥离,但还有问题:对象的私有成员(如我们示例中CDB类的数组变量m_arrTables)还是被客户看得一清二楚,即使客户没办法去...
COM组件开发实践(六)---From C++ to COM :Part 3

COM组件开发实践(六)---From C++ to COM :Part 3

COM组件开发实践(六)---From C++ to COM :Part 32010-05-29 博客园 Phinecos(洞庭散人)在上一篇文章《COM组件开发实践(五)---From C++ to COM :Part 2 》中,我们进展到使用COM库加载C++对象了,这一篇中我们将真正将C++对象变成 COM对象,而在下一篇中我们将为它添加多接口支持。C++对象变成COM对象要将一个C++对象变成一个真正的COM对象,只需要如下操作:1)实现接口的引用...
COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)

COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)

COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)2010-05-29 博客园 Phinecos(洞庭散人)声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。最近遇到两个需求:1)在ActiveX控件中使用工作线程来完成底层的硬件设备扫描任务,并在工作...
COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)2010-05-29 博客园 Phinecos(洞庭散人)声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。在上一篇文章《COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控...
使用桌面窗口管理器创建Aero玻璃效果

使用桌面窗口管理器创建Aero玻璃效果

使用桌面窗口管理器创建Aero玻璃效果2010-05-29 msdn.microsoft.com 要正常使用该代码你应该使用具有Aero效果的Vista版本DWM 是一种新界面,用于管理如何将运行和呈现的各种窗口合并到Windows Vista 桌面上。Windows® Presentation Foundation (WPF)提供了一种更高级别的层,控制着到桌面层的呈现,Windows Display Driver Model (WDDM) 用于...
C++的模板技巧:编译器探测类成员

C++的模板技巧:编译器探测类成员

C++的模板技巧:编译器探测类成员2010-05-29C++0x提供了丰富的type trait用于generic编程。但是,其中并没有探测类成员的type trait.不借助编译器的帮助,要实现这个type trait是很困难的。这里我们对需求进行适当的修改:探测类中是否存在指定名称和类型的成员。在C++中,函数重载是最常见的实现type trait的方法。但是,函数重载是基于类型的。默认参数和访问权限都在函数重载之后进行。这里我们希望探测指定的成员是否...
基于Oracle OCI的数据访问C语言接口ORADBI(上)

基于Oracle OCI的数据访问C语言接口ORADBI(上)

基于Oracle OCI的数据访问C语言接口ORADBI(上)2010-05-29 csdn博客 张亮ORADBI是我在Oracle OCI(Oracle 调用接口)基础上开发的,支持Oracle8i、9i、10g等数据库。根据Oracle公司的介绍:OCI是如此可靠,以至于Oracle数据库中的每一条SQL语句都通过OCI来执行。当应用程序开发人员需要面向Oracle数据库服务器的最强大的接口时,他们将调用 Oracle调用接口(OCI)。OCI提供了对...
使用Visual C++防御功能保护您的代码

使用Visual C++防御功能保护您的代码

使用Visual C++防御功能保护您的代码2010-05-29 MSDN / Michael Howard目录基于堆栈的缓冲区溢出检测 (/GS)安全异常处理 (/SafeSEH)DEP 兼容性 (/NXCompat)映像随机化 (/DynamicBase)更安全的函数调用C++ Operator::new如果失败会怎样?许 多代码都是使用 C 和 C++ 编写的,但遗憾的是,其中很多此类代码都有一些甚至连开发人员都不知道的安全漏洞。以任何语言编写的程序...
使用FileSystemWatcher监控网络路径

使用FileSystemWatcher监控网络路径

使用FileSystemWatcher监控网络路径2010-05-29 cnblogs 在VS2005中,.Net里面有个FileSystemWatcher控件,用来监控文件变化,它会通知文件创建,修改,删除的消息。网上这样的例子很多,但是在实际应用的时候,发现还有一些待处理的问题,我做了一个简单的demo,解决了如下的问题:1.多次连续触发 (通过一个定时器来解决)2.能监控网路路径 (serviceProcessInstaller的Account属性设...
C++ Plus:使用Visual C++ 2008功能包加强Windows应用程序

C++ Plus:使用Visual C++ 2008功能包加强Windows应用程序

C++ Plus:使用Visual C++ 2008功能包加强Windows应用程序2010-05-29 MSDN / Kenny Kerr本文讨论:Microsoft 基础类库更新使用 C++ 对功能区进行编程使用 C++ 实现选项卡式 MDI多态函数和智能指针本文以 Visual C++ 功能包的预发布版为基础。文中包含的所有信息均有可能变更。本文使用了以下技术:Visual Studio 2008,MFC目录Office 功能区用户界面选项卡式多文档...
VC10中的C++0x特性 Part 2 (1):右值引用

VC10中的C++0x特性 Part 2 (1):右值引用

VC10中的C++0x特性 Part 2 (1):右值引用2010-05-29 vcblog Stephan T. Lavavej本文为 Part 2 的第一页今天我要讲的是 rvalue references (右值引用),它能实现两件不同的事情: move 语意和完美转发。刚开始会觉得它们难以理解,因为需要区分 lvalues 和 rvalues ,而只有极少数 C++98/03 程序员对此非常熟悉。这篇文章会很长,因为我打算极其详尽地解释 rvalu...
VC10中的C++0x特性 part 2(2):右值引用

VC10中的C++0x特性 part 2(2):右值引用

VC10中的C++0x特性 part 2(2):右值引用2010-05-29 vcblog Stephan T. Lavavej本文为 Part 2 第二页。move 语意:从 lvalue 移动现在,如果你喜欢用拷贝赋值函数来实现你的拷贝构造函数该怎样做呢,那你也可能试图用 move 拷贝赋值函数来实现 move 构造函数。这样作是可以的,但是你得小心。下面就是一个错误的实现:C:Temp>type unified_wrong.cpp#includ...
<< 1 2 3 4 5 6 7 8 9 10 >>