
C/C++
文章平均质量分 50
超级管理员9527
这个作者很懒,什么都没留下…
展开
-
从C++和COM角度理解“依赖注入”
从C++和COM角度理解“依赖注入”名词解释:依赖项产生问题:耦合解决方案:注册服务、注入依赖本质:几句话就说清楚一个高大上的概念,一个控制反转技术。所谓的。名词解释:依赖项依赖项(dependency):另一个对象依赖之。比如:class A{public:void fun() {…}};如果另外一个类需要调用A::fun,那么类A就是一个依赖项。某个类B可能会创建一个A对象a,并调用a.fun();class B : public A{public:void method()原创 2021-03-30 22:15:38 · 619 阅读 · 0 评论 -
关于SAFEARRAY的,转载了篇文章,比较全
有个问题,64位COM组件调用32位COM组件(进程外)的时候:32位组件里引入_IDTExtensibility2接口,64调用的时候失败;如果不用引入的方法,而把接口函数写到IDL里,则调用成功。比较奇怪。(关键是接口函数有SAFEARRAY**类型的参数,让系统默认转就失败。返回的错误时加载DLL模块失败,其实是代理存根调用有异常,可能转SAFEARRAY的时候有转载 2013-06-27 15:25:34 · 12947 阅读 · 0 评论 -
UpdateLayeredWindow和SetLayeredWindowAttributes (我记得转过的啊啊啊啊啊)
http://blog.youkuaiyun.com/weiwangchao_/article/details/6959024转载 2013-09-30 13:06:16 · 1202 阅读 · 0 评论 -
换一个高度看自绘 - windows自绘控件总结
转自 http://blog.youkuaiyun.com/blz_wowar/article/details/2046886相关 http://msdn.microsoft.com/zh-cn/library/ms364048%28VS.80%29.aspx转载 2014-08-15 08:11:05 · 1189 阅读 · 0 评论 -
Levenshtein距离,Edit Distance
最近用到这个东西,记录一下比较重要的资料地址:这篇博文是比较详尽的,从概念到原理:算法之美——求解 字符串间最短距离(动态规划)http://blog.youkuaiyun.com/huaweidong2011/article/details/7727482另外还有百度百科和维基百科,百度的通俗易懂,维基的有深度其他还有很多,不能一一列举了。转载 2015-12-16 11:29:57 · 461 阅读 · 0 评论 -
fread的误区(以文本格式打开文件)
先看一段代码 void* buffer = malloc(nLength + 2); //maybe wchar, so + 2 memset(buffer, 0, nLength + 2); ret = fread(buffer, 1, nLength, m_pFile); ((char*)buffer)[ret] = 0; ((char*)buffer)[ret +原创 2016-03-17 15:48:13 · 3394 阅读 · 0 评论 -
关于TLB
一直没有用到,所以没怎么注意。今天用的时候,发现VC不能自动生成COM的TLB文件。在设置里没有找到合适的选项,按直觉可以自动生成才对。网上搜了个办法:VC的文件-打开-打开文件...,选中COM组件(DLL或者EXE),点击打开按钮旁边的下拉框,选打开方式...(资源),打开。打开文件后,是个树状的资源列表,选择TYPELIB,点击右键,选择导出菜原创 2016-03-11 10:57:58 · 969 阅读 · 0 评论 -
SQLite自定义聚合函数 [类似MAX(field)]
SQLite中使用sqlite3_create_function来注册自定义函数是很常用的。 注册的函数分为两类,普通函数和聚合函数。 自定义聚合函数相关例子很少,网上搜了很多,没有找到合适的资料。 摸索出一个可行的办法,记录于此。 不正确的地方请多指教。原创 2017-02-04 14:35:47 · 2161 阅读 · 0 评论 -
无法主动调用线程函数怎么办?timer妙用(不太好理解)
场景: 做word插件,用户点击按钮后执行一个命令。 由于不能影响界面,所以要开一个线程,等完事后通知word。原创 2017-04-19 17:54:33 · 637 阅读 · 0 评论 -
MFC动态库使用boost::thread运行时报错的问题
【转】http://blog.youkuaiyun.com/comhaqs/article/details/53884116在MFC动态库中,如果包含有boost::thread的相关文件,可能会导致编译时没问题,运行时报错,报错位于ASSERT(AfxGetThread() == NULL)。百度得知,应该是静态链接boost::thread库时,boost::thread库会修改相关函数指针,具体见网页:h转载 2017-09-05 13:33:55 · 640 阅读 · 0 评论 -
32位程序如何使用ADO访问64位Oracle数据库[转]
原始链接 http://blog.youkuaiyun.com/HXC_HUANG/article/details/71773850转载 2017-09-27 18:23:40 · 2734 阅读 · 2 评论 -
坑爹的ado+oracle;感谢客户方的技术
ADO连接oracle,执行SQL语句的时候,SQL文最后的分号;竟然不能解析。。。十分感谢客户方的技术。。。2017-10-09 00:20:53原创 2017-10-09 00:21:53 · 698 阅读 · 1 评论 -
Oracle ORA-29275:部分多字节字符
原以为是字符转换问题,设置了环境变量 NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK(这个值根据实际情况)后来发现,数据库里有半个中文,ADO查询的时候报异常根本处理方法:处理实际数据 (实际项目中不查这个字段了。。。)原创 2017-11-19 16:06:37 · 5660 阅读 · 0 评论 -
socket的IO模型(仅有分类)
Linux下socket的五种IO模型1.阻塞I/O2.非阻塞I/O3.I/O多路复用[重点]4.信号驱动I/O5.异步I/O[重点]Windows下socket的五种IO模型1.选择模型 select模型2.异步选择 WSAAsyncSelect模型3.事件选择 WSAEventSelect模型4.重叠I/O模型( 4.1基于事件通知的重叠I/O模型 4.2基于完成例程翻译 2017-12-29 11:26:22 · 841 阅读 · 1 评论 -
COM线程模型-套间(新)
严重声明: [原]crybird如有转载请注明出处。 今天偶然看到,我10年前对COM的心得笔记,竟然有不止一人引用,倍感欣慰。于是,把现在的心得加以补充。 本故事纯属虚构,只想以轻松的心情理解COM,别无他意(对各方没有任何不友好、不尊重之意,谢谢理解)。【某外包公司的事故】背景,COM规范太复杂了,按规范编写服务组件和客户端调用,代码量太大,快没人用了。。。第一回~[主线程内...原创 2018-06-25 23:32:28 · 666 阅读 · 1 评论 -
关于全局变量内存泄漏的误报和解决方案
现象:全局变量是个类对象,析构的时候会释放内存。但系统会误报内存泄漏。 原因:报告比析构早,释放的时候已经报告完了。 解决:至少有以下三个解决方案:1.使用#pragma comment(lib, “xxx.lib”) 而不使用设置里的“附加依赖项”。 这个具体细节应该是编译器实现的原因,但至少不误报了。 测试环境vs2017,测试了一个第三方样例,一个自己的Demo,结果一致。 (...原创 2018-07-04 09:13:35 · 2939 阅读 · 0 评论 -
CEdit 文本垂直居中(单行解决方案)
关于这个问题,网上流传的都是多行模仿,最后有附件,由于怕细节不完美,决定探究下派生CEdit方法,可以响应WM_NCCALCSIZE消息,关键代码如下:void CVCenterEdit::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp){ CEdit::OnNcCalcSize(bCalcValidRect原创 2013-05-22 11:14:02 · 9338 阅读 · 4 评论 -
SQL关于空串的判断与比较
IS NULL 表示字段内容不存在,类似于空指针nullptr;NULL不能和=一起使用,只能和IS一起使用IS NOT NULL 表示字段内容存在,字段的内容可以是空串和非空串(即也包含"") ='' 表示字段内容是空串,类似""(注意,nullptr即不是空串,也不是非空串)!='' 表示字段内容非空串,(注意,nullptr即不是空串,也不是非空串)原创 2013-04-25 08:45:52 · 2819 阅读 · 0 评论 -
一个比较特殊的自绘按钮
美工设计了一排特殊的按钮,对话框有背景图,按钮是不规则的,还要求方形区域;最特别的是按钮之间用一条渐近线分割,哪个按钮被捕获了(悬停或者按下),左右两条线就属于这个按钮。也就是说相邻按钮有重叠的地方,属于谁不一定。如果动态移动按钮,就没啥意思了。想了几个注意的地方:1.对话框上画虚拟按钮(没有,对话框监视鼠标位置,画图),这样监控的地方比较多,代码写的多,懒得做原创 2013-04-25 08:30:03 · 1054 阅读 · 0 评论 -
又掉进陷阱了 引以为戒
今天用VS2008做一个小工具,发现用fstream创建一个文件总是失败。这么简单的函数,不应该啊?参数传的没问题,这是为什么呢~于是顺着函数堆栈我就往里钻,终于找到原因了,罪魁祸首就是————我自己:(原来我的工程是Unicode的,用fstream的时候,我特意把文件名转成了多字节字符串。fstream调用CreateFile之前,又转成了Unicode。转换函数是原创 2009-07-29 17:23:00 · 883 阅读 · 0 评论 -
想起自己学C时的一个笑话
课后题 打印下图 * ******** *** *当时我一个printf语句完成了还想,这本教材出这个题目有啥意义呢原创 2011-07-15 14:00:56 · 704 阅读 · 0 评论 -
做VS2010插件的入门体验(C++)
1.网上的资料有,不少,但C#居多,还是MSDN详细 ( 嗟夫 C++老矣?!)2.自定义按钮图片,关键点——透明色为RGB(0,254,0),这个资料很不好找啊3.自定义图片要再卫星DLL里,也就是在一个资源DLL,而且注册表要有这个DLL的名称、路径4.为按钮绑定快捷键,中文原创 2011-07-28 13:49:34 · 1933 阅读 · 0 评论 -
清晨·雨后
最近雨水很勤,昨晚淅淅沥沥又下了不少。清早醒来,妻儿还睡得很香,看看窗外好像雨停了,于是决定到小区公园走走,拿上手机听听音乐,是必不可少的。 刚到楼下,一股清香的泥土气息扑面而来,清清凉凉的很舒服。出来之后发现,雨还在滴答滴答着,但散步可以不用打伞。转个弯,就到小公园了原创 2011-07-30 13:04:23 · 982 阅读 · 0 评论 -
老问题,新解法:关于去掉WebBrowser的边框和滚动条
关于去掉WebBrowser的边框和滚动条确实是个老问题了,网上的解决方法也是一坨一坨的,基本上比较一致。方法如下:1. 写网页的时候,设置body样式,这不是我们讨论的范围。2.OnDocumentComplete的时候修改body,等于对于方法1的补救,不是我们的原创 2011-08-30 15:54:11 · 8123 阅读 · 5 评论 -
IE中js调用脚本实现打印预览(按钮本身不打印)
先上代码(声明大部分代码来自网络) print demo .noprint { display : none; } function doPrintSetup(){ //打印设置 printWB.ExecWB(8,1) } function doPrintPreview(){ //打印预览 printWB.ExecW原创 2012-05-10 07:47:53 · 15038 阅读 · 3 评论 -
推箱子基础代码(win32版)
今天在网上看到一个网友的《超级玛丽》的制作,一时手痒,决定也做个以前的经典小游戏。由于时间有限,也没做过游戏,就选择了自己比较喜欢的,也比较简单的《推箱子》。(遥想当年上自习的时候,借同学的文曲星玩推箱子,同学都跑过来问我这关怎么过的;大二的时候他出国留学了,再也没见过,想起来十年有余)。资源中有源码和最基础的东西,不能做为一个软件,只能做一个demo。留以为念。源码在原创 2012-07-22 00:08:26 · 2497 阅读 · 1 评论 -
window窗口闪烁小结
首先,这两天的论坛上,很多人又提“防闪烁”的问题;然后是读了这位浅墨老兄的这篇博客,有感而发。(这位老兄貌似也是转发的,浅墨兄文笔很好,超赞)http://blog.youkuaiyun.com/zhmxy555/article/details/7436397闪烁的问题有时候很难,涉及的东西太多;有时候很简单,处理WM_ERASEBKGND消息即可;有时候需要双缓冲;有时候还要改窗口样式。。。原创 2012-07-31 10:34:45 · 5220 阅读 · 1 评论 -
当心Invoke埋下的雷
【标签】dispatch error; invoke error; COM; 连接点; VTS_VARIANT;【报错提示】VS2010-0xC015000F 正在被停用的激活上下文不是最近激活的VS2012-0x00000001 处有未经处理的异常(在 a.exe 中): 0xC0000005: 执行位置 0x00000001 时发生访问冲突【应用场景】主程序原创 2012-09-21 09:40:18 · 4184 阅读 · 0 评论 -
64位word插件(ribbon界面)开发的几个问题
1.目标平台选x64(废话)2.64位COM组件可以调用32位COM组件,但只能调用进程外组件(.exe),所以要各种包装。(32调64的据说行,没测试)http://www.cnblogs.com/mazhenyu/archive/2007/06/28/798710.html3.IDispatch接口的入口必须通过插件接口,不能是_IDTExtensibility2,原创 2012-12-26 14:37:46 · 1779 阅读 · 1 评论 -
转载标记一个win8开发系列的入口
来自 谈一谈 Windows 8 的软件开发架构关于windows8的架构,这张图流传的相当广泛但是有多少人明白这其中的奥秘,我特意做了一些实验,来发现这到底是怎么一会儿事儿。 首先来看看win32 时代我们开发一个应用的过程一直都是折腾类库来开发的,dotnet类库比win32类库进了一步,做了一些更深的封装。虽然dotnet更先进,但c++的转载 2013-01-08 08:19:55 · 727 阅读 · 0 评论 -
转载 Windows8 游戏开发教程-开篇 主要是知识点和工具的列举和对比
来自 Windows8 游戏开发教程-开篇准备开始写一个win8游戏开发教程了,现在这里整理一下思路。需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。 1.阅读这个教程需要什么样的基础?2.这个教程能带来一个怎样的DEMO,结束之后能开发什么游戏?3.这个教程覆盖哪些知识,使用什么语言和工具开发? 问题1: 首先是编码能力,这不是一本程序教材转载 2013-01-08 08:41:14 · 1022 阅读 · 0 评论 -
如何获取网卡MAC地址(或相关信息)
好多方法,比较全的是《xxxx的四种方法》这里记录一个最简单的方法,留着备用:#include #pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库#include void GetMacsInfo(std::vector& vMac){ DWORD dwSize = 0; ULONG nRet = GetAdapte原创 2013-04-12 13:46:49 · 894 阅读 · 0 评论 -
剖析C++11中STL库thread类的一小段代码(MS版本)
//剖析C++11中STL库thread类的一小段代码(MS版本)/* 写一段代码,使用thread构造函数的时候,提示有9个构造函数,但明明白白写的有3个, 但有一段奇怪的宏,也就是下面代码展开后,实现了6个构造函数*/#define _THREAD_CONS( \ TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4)原创 2013-04-24 13:22:57 · 2784 阅读 · 7 评论 -
闲来无事,写了一个简单的智能指针
#pragma once/* int *p = new int(9); SharedPtr px(p); //ok SharedPtr py(new int(9)); //good SharedPtr pz = px; //good SharedPtr pw(p); //Error, NO!! because of px.*/templateclas原创 2009-02-15 14:43:00 · 928 阅读 · 0 评论