DoubleLi

qq: 517712484 wx: ldbgliet

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

随笔分类 -  VC/MFC

上一页 1 ··· 21 22 23 24 25 26 27 28 29 30 下一页

摘要:引言:在编写MFC程序的时候,通常需要编写dll库以供其他程序调用。关于MFC dll的相关知识很多很杂,这里特酷吧结合自己学习中遇到的问题专门整理了一些MFC dll的基础知识。本部分共上下两篇文章,本文为上篇,MFC DLL应用程序类型分为以下三种:(1)使用共享MFC DLL的规则DLL(2)带静态链接MFC的规则DLL(3)MFC扩展DLL下面重点解释一下这些DLL的含义区别:一,规则DLL首先谈谈所谓的"规则DLL":"规则DLL"是由"Regular DLL"翻译而来的。它实际上体现出来两方面的本质:(1)该DLL是基于M 阅读全文
posted @ 2012-11-22 20:18 DoubleLi 阅读(4059) 评论(0) 推荐(0) 编辑

摘要:a、Non-MFCDLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。b、RegularDLL:和下述的ExtensionDlls一样,是用MFC类库编写的。明显的特点是在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上的。静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。输入函数有如下形式:extern"C"EXPORTYourExportedFunct 阅读全文
posted @ 2012-11-22 20:11 DoubleLi 阅读(2032) 评论(0) 推荐(0) 编辑

摘要:在DLL弹出一个对话框,开始弹出对话框时出现“Debug Assertion Failed”, 上网搜了下,发现模块句柄的设置问题。然后作出如下解决: 1. 定义两个全局变量: HINSTANCE g_hModuleInstance = NULL; HINSTANCE g_hOldModuleInstance = NULL; 2.在DllMain函数中对g_hModuleInstance进行赋值: g_hModuleInstance = hInstance; 3.在要使用对话框资源的类新建两个函数设置模块句柄。 void CAlternatExtractFun::SetResourceHand 阅读全文
posted @ 2012-11-22 19:54 DoubleLi 阅读(3389) 评论(0) 推荐(0) 编辑

摘要:调试策略第一章 调试的过程1. 成功而高效的调试的关键是找到准确的错误信息2. 一旦找到一个错误,就可能找到更多。类似的代码可能还有类似的错误3. 从错误中学习如何预防将来会产生的错误4. 对于新代码,根本不需要执行测试来判断它是否有错误第二章 编写便于调试的C++代码C++语言和编程风格1. 在需要的时候使用语言的高级特性2. 要写出能被“人”理解的代码,不仅是编译器3. 慎用匈牙利命名法4. 每一个语句行都应该作为一个单独的原子单位,这样可以充分利用调试工具5. 如果你不能确定是否需要括号,那么就需要括号6. 使用C++自身特性防止错误的方法:用const代替#define来创建常量;用e 阅读全文
posted @ 2012-11-21 20:55 DoubleLi 阅读(1851) 评论(0) 推荐(0) 编辑

摘要:VS2005设置可以在Release模式下调试 一、首先:从“配置管理器”中将项目配置成Release版:在下拉列表中选择了Release后,点击“关闭”即可。 见图-1 。二、按Alt+F7:进入当前项目的属性设置:经过上面的设置,应该是“活动(Release)”,然后按下面的三个图示分别设置: 见图-2, 图-3, 图-4,OK! 可以在Release版中进行调试了。 阅读全文
posted @ 2012-11-21 20:53 DoubleLi 阅读(3741) 评论(0) 推荐(0) 编辑

摘要:如何在对话框中实现文件拖放功能在对话框上添加一个Picture Control,然后把Accept Files属性修改成True。如果是想托图片的话需要把Type改成Bitmap。在头文件里加入:afx_msg void OnDropFiles(HDROP hDropInfo);在cpp文件里加入:ON_WM_DROPFILES()在OnInitDialog()的最后加入:DragAcceptFiles(TRUE);在cpp文件里添加:void CTestDragDlg::OnDropFiles(HDROP hDropInfo){ int nFileCount = DragQueryFil.. 阅读全文
posted @ 2012-11-21 20:52 DoubleLi 阅读(1408) 评论(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 阅读(3798) 评论(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 阅读(24158) 评论(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 阅读(4968) 评论(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 阅读(7148) 评论(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 阅读(2649) 评论(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 阅读(892) 评论(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 阅读(685) 评论(0) 推荐(0) 编辑

摘要:1.在COM组件中调用JavaScript函数// 连接点方式页面javascript脚本<object classid="CLSID:B568F111-DFE4-4944-B67F-0728AB2AB30F" id="testCom" VIEWASTEXT></object><script language="JavaScript" for="testCom" event="staTe(s)"> alert("State(" + s + 阅读全文
posted @ 2012-11-01 19:42 DoubleLi 阅读(2569) 评论(0) 推荐(0) 编辑

摘要:若要确定必须与应用程序一起重新发布的 DLL,请收集应用程序所依赖的 DLL 列表。 收集该列表的一种方法是运行理解 Visual C++ 应用程序的依赖项中介绍的依赖项查看器 (depends.exe)。当具有依赖项列表时,将其与 Redist.txt 中的列表进行比较,Redist.txt 默认情况下位于 \Program Files\Microsoft Visual Studio 2010\ 目录中(或 VSINSTALLDIR 环境变量指定的用户定义目录)。 无法重新发布 Visual Studio 中包含的所有文件;只允许重新发布 Redist.txt 中指定的文件。 调试版本的应用 阅读全文
posted @ 2012-10-29 19:44 DoubleLi 阅读(340) 评论(0) 推荐(0) 编辑

摘要:Subclassing一个已有的Windows通用控件,可以减少很多工作量。新的控件可以继承被subclass的控件的很多能力,如绘制和对鼠标的响应等。在用MFC ActiveX Control Wizard新建一个工程时,可以选择Subclass a Windows Control,将生成一些必要的代码。我们也可以手工向一个已有的ActiveX工程中加入这些代码:一、重载COleControl::IsSubclassedControl、PreCreateWindowBOOL CDemoSubclassCtrl::PreCreateWindow(CREATESTRUCT &cs){cs 阅读全文
posted @ 2012-10-26 17:52 DoubleLi 阅读(542) 评论(0) 推荐(0) 编辑

摘要:开发工具:1. Visual Studio 2005,用于ActiveX组件的开发2. Microsoft ActiveX Control Pad,用于生成包含ActiveX Control的HTML网页。步骤:1. 通过Visual Studio 2005新建一个MFC ActiveX Control工程,编译之后在debug/release目录下可以找到一个XXXX.ocx文件。具体步骤可以参考MSDN。2. 在ActiveX Control Pad选择菜单File -> New HTML,创建一个HTML页面。3. 从ActiveX Control Pad选择菜单Edit -> 阅读全文
posted @ 2012-10-26 15:33 DoubleLi 阅读(3276) 评论(0) 推荐(1) 编辑

摘要:目标:用JavaScript 脚本代码调用COM控件,实现基本功能操作:1.定义及初始化COM控件;2.调用COM接口;3.注册COM事件并实现事件调用。1. 定义及初始化COM控件 在HTML页面定义一个object标签来加载COM控件:1) classid:是COM控件的编号,用来唯一识别一个COM控件;2) id:是JavaScript调用COM控件时访问的对象,它是全局对象,此处将全局对象命名为ocx;3) codebase:是打包COM的cab包资源路径。可以在后面加上#version=1,0,0,1来发布cab实现自动更新下载。 一起jquery,17jquery 一起jquery 阅读全文
posted @ 2012-10-25 19:25 DoubleLi 阅读(1331) 评论(0) 推荐(1) 编辑

摘要:一、简单对话框全屏显示方法在OnInitDialog()中任意加入:1、ModifyStyle(WS_CAPTION,0,0); //如果不想去掉标题栏,去掉该句。 SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2、ShowWindow(SW_SHOWMAXIMIZED); 二、复杂一点的对话框全屏显示方法,随屏幕的分辩率而调节void CMainFrame::OnFullScreen() { GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect; ... 阅读全文
posted @ 2012-10-23 20:53 DoubleLi 阅读(4732) 评论(0) 推荐(0) 编辑

上一页 1 ··· 21 22 23 24 25 26 27 28 29 30 下一页