DoubleLi

qq: 517712484 wx: ldbgliet

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

随笔分类 -  C++/C

上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 47 下一页

摘要:1.今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __stdcall#define PASCAL __stdcall#define cdecl 阅读全文
posted @ 2013-08-22 13:49 DoubleLi 阅读(1061) 评论(0) 推荐(0)

摘要:Directive Parameter order Clean-up Passes parameters in registers?register Left-to-right Routine Yespascal Left-to-right Routine Nocdecl Right-to-left Caller Nostdcall Right-to-left Routine Nosafecall Right-to-left Routine No调用约定 压参数入栈顺序 把参数弹出栈者 函数修饰名(Calling convention)----------------------------- 阅读全文
posted @ 2013-08-22 13:44 DoubleLi 阅读(326) 评论(0) 推荐(0)

摘要:__declspec(dllexport)2009-03-04 17:25 我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dlli 阅读全文
posted @ 2013-08-20 16:37 DoubleLi 阅读(892) 评论(0) 推荐(0)

摘要:当一个文件被映射到调用进程的地址空间时,GetModuleHandle函数得到其中某一模块的句柄。 使用GetModuleHandle函数格式:HMODULE GetModuleHandle( LPCTSTR lpModuleName); 参数 lpModuleName: [in]用指针指向一个包含模块名以NULL字符结尾的串,模块是.dll或.exe文件。如果文件扩展名省略,则增加默认的扩展名.dll。文件名串可以是省略号(...),表示模块名没有扩展名。这个串不是必须指定一个路径。当指定一个路径时,确定要用反斜线(\),而不是斜线(/)。这个模块名将和当前映射到调用进程地址... 阅读全文
posted @ 2013-08-16 19:35 DoubleLi 阅读(9005) 评论(0) 推荐(0)

摘要:ActiveX异步回调JavaScript开发环境:VC6.0。背景知识:COM/ActiveX/JavaScript/MFC/Thread想必用过Ajax的童鞋们都知道xmlhttp这个东西吧,通过设定onreadystatechange属性,我们就可以指定他状态改变的回调函数,当状态改变时,ActiveX控件就会调用我们通过onreadystatechange属性制定的回调函数。从而就出现了Ajax给我们带来的精彩。关于Ajax的技术我们这里不做讨论,我们的目的就是实现像xmlhttp这样具有异步回调JavaScript功能的ocx控件来。Let’s go!1.建立MFC ActiveX 阅读全文
posted @ 2013-08-16 19:05 DoubleLi 阅读(1890) 评论(1) 推荐(1)

摘要:第一种:通过execScript调用。这种方法,虽然操作方便,但不能获取返回值。m_spHtmlDoc->get_parentWindow(&m_pHtmlWindow);VARIANT ret;ret.vt = VT_EMPTY;BSTR bstr = sScript.AllocSysString();bRet = m_pHtmlWindow->execScript(bstr, L"javascript", &ret);::SysFreeString(bstr);sRet = CString(ret);第二种:先用GetIDsOfNames找到 阅读全文
posted @ 2013-08-16 18:51 DoubleLi 阅读(3934) 评论(0) 推荐(0)

摘要:DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置:1、配置属性-常规-目标文件名 $(ProjectName) 加d2、配置属性-连接器-常规-输出问件 由 加d3、配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib4、如果有导出文件,.def文件中也一定要修改导出库的名字 LIBRARY "BaseTool" 变为 LIBRARY "BaseToold"关于相对目录相对目录是相对某个文件而言的,例如在 阅读全文
posted @ 2013-08-16 09:17 DoubleLi 阅读(26318) 评论(1) 推荐(4)

摘要:论坛有会员用到了。,今天给大家说说CSring如何在非mfc下的调用第一:先要包含 #include "afx.h"包含之后会报windows.h重复定义我们需要把这个头文件包含在windows.h的前面第二:alt+f7 快捷键 设置---或者菜单--工程--设置---点击常规--使用MFC作为静态的 或者可以设置MFC为共享的DLL第三:alt+f7 快捷键 设置---或者菜单--工程--设置---切换到C\C++点击Code Generation --use-run-time library 选择MUltithranded如果你第二:选择的是MFC作为共享的dll的话 阅读全文
posted @ 2013-08-16 08:47 DoubleLi 阅读(635) 评论(0) 推荐(0)

摘要:VC2008环境中ICE的配置ICE 3.4.0的下载页面http://www.zeroc.com/download_3_4_0.html环境变量配置1、Ice-3.4.0安装到c:\Ice-3.2.0-VC712、Ice-3.2.0-ThirdParty-VC71.msi到D:\Ice-3.4.03、在OS系统环境变量中添加ICEROOT,指向D:\Ice-3.4.04、在OS系统环境变量path添加“%ICEROOT%\bin;”、“%ICEROOT%\lib;”VC环境配置“工具”\“选项”\“项目”\“VC++目录”选择“可执行文件”: 增加“$(ICEROOT)\bin”选择“包含文 阅读全文
posted @ 2013-08-15 14:51 DoubleLi 阅读(374) 评论(0) 推荐(0)

摘要:示例程序一1)ICE文件 Printer.icemodule demo{ interface Printer { void printString(string s); };};2)Server端开发选择Win32控制台空白项目 添加Iced.lib IceUtild.lib增加Server.cpp,内容:#include "Printer.h"#include #include using namespace std;using namespace demo;class PrinterI : public Printer{ public: // 重载实现接口逻辑 virt 阅读全文
posted @ 2013-08-15 14:50 DoubleLi 阅读(414) 评论(0) 推荐(0)

摘要:http://www.acejoy.com/bbs/viewthread.php?tid=2878&extra=page%3D1ICE开发初级研究(一)最近一段一直在忙于工作,事情比较多,除了偶尔在这里看看帖子,一直没有写什么东西。再加上忙于PurenessScopeSerever0.72版本的开发,争取0.72版再次给大家带来一些提升。其实想想,技术这种东西,并非一定要高深到谁也看不懂才叫牛。技术这样的东西,分享是很关键的。只有简单好用的技术,才会获得大规模的应用。ICE这个东西,说实话以前我比较惧怕。到处看到的文章都是说,重量级的中间件,虽说是源于Corba,但是复杂度感觉不低于A 阅读全文
posted @ 2013-08-15 14:49 DoubleLi 阅读(621) 评论(0) 推荐(0)

摘要:文章一今天我笔记本的VC编译器莫名其妙的就进入不了断点了,而台式机确是好的,问题是一进入调试,断点就自动被取消了,郁闷了一下午,无法进入断点的原因很多,都有想重装VC编译器的打算了,晚上回来查查资料,发现原来是我的VC配置出了问题,解决方法:Project -> Setting -> Linkgenrealselectd“ Generate debug info”现在把与此问题相关的一些设置和问题的解决方法奉献给大家:1、Project -> Setting -> c/c++ table->genreal“debug info” set to “program d 阅读全文
posted @ 2013-08-15 12:36 DoubleLi 阅读(3874) 评论(0) 推荐(1)

摘要:DWORD GetCurrentDirectory( DWORD nBufferLength, // size of directory buffer LPTSTR lpBuffer // directory buffer ); 函数功能: 找到当前进程的当前目录(.dsw所在文件夹) 参数说明: 参数 类型及说明 nBufferLength 缓冲区的长度 lpBuffer 指定一个预定义字串,用于装载当前目录 返回值 调用成功 返回装载到lpBuffer的字节数。 如nBufferLength的长度不够,不足以容纳目录,则返回值是必要的缓冲区长度(要求至少这个长度),... 阅读全文
posted @ 2013-08-14 19:41 DoubleLi 阅读(3335) 评论(0) 推荐(0)

摘要:转载自:http://dhailin.blog.163.com/blog/static/230738322011128102043880/首先创建一个COM组件,插入一个双接口Itest,在此接口上实现以下三个方法:[cpp]view plaincopy STDMETHODIMPCtest::test(void)//无输入输出参数{//TODO:在此添加实现代码MessageBox(NULL,L"test",L"test",MB_OK);returnS_OK;}STDMETHODIMPCtest::test1(BSTRa1)//有一个字符串输入参数{// 阅读全文
posted @ 2013-08-13 23:00 DoubleLi 阅读(2261) 评论(0) 推荐(0)

摘要:转载自:http://blog.csdn.net/cheungmine/article/details/1451489要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度。这就要求使用回调函数,设其名称为scriptCallbackFunc。实现这个技术很简单:1 、组件方(C++)组件A 的方法在IDL中定义:[cpp]view plaincopy [id(2)]HRESULTlongCalc([in]DOUBLEv1,[in]DOUBLEv2,[in,optional]VARIANTs 阅读全文
posted @ 2013-08-13 22:58 DoubleLi 阅读(605) 评论(0) 推荐(0)

摘要:欢迎大家拍砖!一、应用背景有一个在win7中用VS2008编译成功,运行正常的程序:Exe+DLL;放到XP虚拟镜像上运行却提示:LoadLibrary返回14001。(1) 后来采用了下面方法中的“方法一”解决了。(2)但在方法一的基础上还要安装VS2008对应的分发包vcredist_x86.exe(VS2005的安装目录下提供了此文件,但在VS2008去不提供,但可到网上下载)。参考文章:http://hi.baidu.com/roger_long/item/867a7cf6fd8cf4cc521c26c5二、网上资料有些机器出现这样的问题,有些没有!有些控件无问题,有些有问题。以前做安 阅读全文
posted @ 2013-08-13 22:52 DoubleLi 阅读(889) 评论(0) 推荐(0)

摘要:许多初学 VC 的朋友也许都为那么一个问题困扰过: 为什么所有的 cpp 都必须 #include "stdafx.h" 也许请教了别的高手之后,他们会告诉你,这是预编译头,必须包含。可是,这到底是为什么呢?预编译头有什么用呢? 这得从头文件的编译原理讲起。其实头文件并不神秘,它的全部作用,就是把自己的所有内容直接“粘贴”到相应的 #include 语句处。如果不相信的话,不妨做个实验,将一个 cpp 中的所有 #include 语句删掉,并将它包含的文件粘贴到相应的位置,你会发现,文件的编译和运行都完全没有受到影响。其实,编译器在编译你的程序的时候,所做的第一件事,也就是 阅读全文
posted @ 2013-08-12 20:50 DoubleLi 阅读(679) 评论(0) 推荐(0)

摘要:错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?错误分析:此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。(因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #include "stdafx.h" 预编译指示头,所以编译器在此cpp文件中一直到末尾都没有找到它) 阅读全文
posted @ 2013-08-12 18:35 DoubleLi 阅读(566) 评论(0) 推荐(0)

摘要:一,hashtable原理:哈希表又名散列表,其主要目的是用于解决数据的快速定位问题。考虑如下一个场景。一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊,呵呵。大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的。具体如何做呢?大家是否有注意到前面说的话:“数组可以通过下标直接定位到相应的空间”,对就是这句,哈希表的做法其实很简单,就是把Key通过一 个固定的算法函数既所谓的哈希函数转换成一个整型数字 阅读全文
posted @ 2013-08-12 15:44 DoubleLi 阅读(5896) 评论(0) 推荐(1)

摘要:hash_map和map的区别分类:STL2008-10-15 21:245444人阅读评论(0)收藏举报class数据结构编译器存储平台tree这里列几个常见问题,应该对你理解和使用hash_map比较有帮助。4.1 hash_map和map的区别在哪里?构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其memory数据结构是不一样的。4.2什么时候需要用hash_map,什么时候需要用map?总 体来说,hash_map查找速度会比map快,而且查找速度基本 阅读全文
posted @ 2013-08-12 14:07 DoubleLi 阅读(634) 评论(0) 推荐(0)

上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 47 下一页