DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  com/ATL/Activex

上一页 1 2 3 4

摘要:摘要: 本文对COM组件中的ActiveX控件的MFC开发方法进行了介绍,讲述了用户自定义和库存属性、方法以及事件的添加方法和属性页的制作过程。使读者能够掌握基本的MFC ActiveX开发方法。 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。 ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的IDispat... 阅读全文
posted @ 2012-11-27 20:54 DoubleLi 阅读(811) 评论(0) 推荐(0) 编辑

摘要:程序在windowsXP和Windows7 32系统下运行的好好的,今天装了一个windows7 64位系统(说明,程序本身还是32位开发的),运行时出现“0xC015000F 正在被停用的激活上下文不是最近激活的”这个错误,找了好长时间才解决,下面总结如下: 网上提到较多的方法是在调用CWinApp::InitInstance();接口后面使用afxAmbientActCtx = FALSE;我采用这个方法后确实不会出现这个问题,不过我的程序中有一些代码由于把这个变量设成false后导致不执行,所以会出现其他问题,所以放弃该方法。我采用的方式是将Debug时所有MFC异常都抛出,不让MFC. 阅读全文
posted @ 2012-11-27 17:51 DoubleLi 阅读(8374) 评论(0) 推荐(0) 编辑

摘要:1.打开VC6.0,新建工程,选择:MFC ActiveX ControlWizard,后面步骤默认即可;2.在ClassView上,可以看到主要有**App\**Ctrl\**ProgPage几个类,其中接口主要在**Ctrl内实现,可以通过MFC ClassWizard(ctrl+w快捷键)的Automation页建立接口函数;3.接口函数是对外,因此在参数类型定义上要注意,字符我一般用LPCTSTR,如下面函数: void COnOcxCtrl::CallOcx(LPCTSTR devip) {// TODO: Add your dispatch handler code hereAfx 阅读全文
posted @ 2012-11-27 17:03 DoubleLi 阅读(2934) 评论(0) 推荐(0) 编辑

摘要:我们在调用WINDOWS函数的时候,经常要在后面加一条GetLastError()来取得函数出错的错误码以及原因,如果在调试的状态中,WINAPI出错了,那我们又要停下来,加一句GetLastError(),然后再跑。这样调试起来很不方便。其实我们可以使用VC里的一些固定符号来进行调试。下面说一下第一个@ERR,我们等函数执行完,并确定它出错了,那我们就可以在VC 的 WATCH窗口里加上@ERR,那我们就马上可以看到出错的错误码了。如果我们还想知道错误码的意思,那我们可以加上@ERR,hr,这样错误码和出错信息都清清楚楚的显示出来了。这个调试方法是不是很棒?其实这种伪符号还有一个用处,在我们 阅读全文
posted @ 2012-11-23 20:37 DoubleLi 阅读(492) 评论(0) 推荐(1) 编辑

摘要:CString->TCHAR*的转化可以用函数GetBuff()函数原型为:LPTSTR GetBuffer( int nMinBufLength );CString str("CString");TCHAR* szMsg = new TCHAR[100];//其参数为CString字符串的长度szMsg = str.GetBuffer(str.GetLength());str.ReleaseBuffer();delete []szMsg;szMsg = NULL;TCHAR*->CString的转化TCHAR szTchar[18] = L"TCHA 阅读全文
posted @ 2012-11-23 18:37 DoubleLi 阅读(1039) 评论(0) 推荐(0) 编辑

摘要:简介 摘要:关于VC中的数据类型转换BSTR、char*和CString的深入研究。 步骤/方法 char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如: char chArray[] = "This is a test"; char * p = "This is a test"; 或 LPSTR p = "This is a test"; 或在已定义Unicode应的用程序中 TCHAR * p = _T("This is a test" 阅读全文
posted @ 2012-11-23 18:36 DoubleLi 阅读(543) 评论(0) 推荐(0) 编辑

摘要:如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性此文章的信息应用于:Microsoft Internet Explorer (编程) 版本4.0, 4.01, 4.01 SP1, 4.01 SP2, 5, 5.01, 5.5,6.0概要CSDN文档中心文章 用 MSHTML 的一点经验 111222(原作) 说明了如何访问在HTML文档对象模型中的网页的元素、内容。但是,有时候开发者实际上需要访问的是网页中ActiveX控件的属性、方法和事件。例如,你在网页载入之后需要修改/获取MediaPlayer的媒体源,以及控制MediaPlayer的播放。更多信息为获得Active 阅读全文
posted @ 2012-11-05 16:53 DoubleLi 阅读(857) 评论(0) 推荐(0) 编辑

摘要:最近参与了一个项目,我的同事在开发一个ActiveX对象,我帮他编写JS脚本来调用这个对象,其中碰到蛮多问题,最难的就是如何响应由ActiveX对象返回的对象事件。正好,现在一起总结一下。 首先,我来介绍一下COM组件,以便说明js如何响应 COM组件 方法:voidinit()//初始化对象 Project createProject()//创建一个Project类型的对象并返回 事件: onInit( int_code )//当init成功后触发 Project类的结构: 方法:voidinit()//初始化Project对象 事件: onInit( int_code )//当init成功 阅读全文
posted @ 2012-11-05 16:50 DoubleLi 阅读(3796) 评论(1) 推荐(0) 编辑

摘要:1:创建ActiveX对象在web中使用ActiveX组件有两种方法,一是如下rep_print_medcan.CABOBJECT标签中,通过ID指点了对象的ID号,javascript可以使用该ID号来引用该对象,而classid用于标识这个组件,每个ActiveX组件都有唯一一个用于表示他的ID号。而codebase指定的程序下载到本地(在系统目录的“DownloadedProgramFiles”子目录下),然后调用组件程序的自注册入口函数注册到当前系统中,以后的创建都在本地进行,不再涉及codebase属性使用以上的方法来创建ActiveX对象,有些参数设置需要手抖的填写,麻烦,2、另外 阅读全文
posted @ 2012-11-05 16:49 DoubleLi 阅读(24133) 评论(0) 推荐(0) 编辑

摘要:MFC Activex与JavaScript的接口交互在Activex的应用中与网页的JavaScript的交互必不可少,在这里就简单的介绍下。VC 创建的Activex的有两种类型,MFC Activex与ATL Activex, 在VC新建工程的时候选择,这篇文章介绍的是针对MFC Activex的,ATL Activex可以绕过了。测试环境:: VC++ 6.0 SP6(一) MFC Activex与JavaScript的传递参数、返回值在JavaScript调用时Activex方法,可以归分为两种:1参数为整型变量,返回为整型变量long CActivexCtrl::Func(long 阅读全文
posted @ 2012-11-02 17:43 DoubleLi 阅读(4965) 评论(1) 推荐(2) 编辑

摘要:1.向ActiveX注册JS函数:在ActiveX中添加接口方法 - void RegisterFunction(BSTR bstrFuncName, IDispatch* dispFunc);JavaScript代码声明一个函数,并调用RegisterFunction接口向ActiveX注册该函数,供ActiveX调用。2.保存注册的函数,ActiveX使用CComDispatchDriver对象保存注册的JS函数(IDispatch接口指针)CComDispatchDriverm_Func1;void RegisterFunction(BSTR bstrFuncName, IDispatc 阅读全文
posted @ 2012-11-02 17:37 DoubleLi 阅读(4632) 评论(0) 推荐(0) 编辑

摘要:4.实现从ActiveX调用网页中的javascript.设计思路:从上述项目中产生的calc.html中创建一个js函数来调用控件的CallWebJs方法,而CallWebJs方法又调用页面中的js方法printMsg();具体操作如下:同3中的做法,再为控件添加一个方法命名为CallWebJs,在calc.cpp中找到该方法,并实现如下:STDMETHODIMP Ccalc::CallWebJs(VARIANT scriptCallback){// TODO: Add your implementation code hereCComPtr<IDispatch> spCallb 阅读全文
posted @ 2012-11-02 17:02 DoubleLi 阅读(7147) 评论(0) 推荐(1) 编辑

摘要:1. 打开VS2008,单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“ATLtest”。在随后出现的项目向导中,使用默认配置即可。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />2. 添加控件在解决方案管理器中的项目上右击,依次选择“A 阅读全文
posted @ 2012-11-02 17:01 DoubleLi 阅读(2648) 评论(0) 推荐(0) 编辑

摘要:本文描述了使用ATL开发一个ActiveX控件的完整过程。一、创建项目单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“Calculator”。在随后出现的项目向导中,使用默认配置即可。 二、添加控件在解决方案管理器中的项目上右击,依次选择“Add”、“Class”,在添加类对话框中选择ATL分类下的ATL Control类型。单击“Add”按钮,将会出现添加ATL Control向导。 在向导的第二步中,将接口类型选择为“Dual”,为控件支持事件做为准备,在Support选项中,选中“Connection points”复选框。. 阅读全文
posted @ 2012-11-02 16:59 DoubleLi 阅读(889) 评论(0) 推荐(0) 编辑

摘要:之前写过文章通过自定义函数来实现ActiveX回调JS中的函数,最近在网上发现一更简洁的方法,通过事件触发,在这里小结一下,为使内容连贯,请参考我之前的《一步一步实现ATL开发的ActiveX组件与javascript的交互》系列文章http://hi.baidu.com/hwygy_001/blog/item/21ec5bc5294f64bd8326ac72.html:1.如果使用的是VS2010,则在Class View窗口中右击_ICalcEvents接口,依次选择“Add”、“Add Method…”,根据添加方法向导添加AddCompleted方法,如下图所示:若采用的VS2008, 阅读全文
posted @ 2012-11-02 16:56 DoubleLi 阅读(681) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4