随笔分类 -  C/C++

1 2 下一页

窗口置顶小工具
摘要:经常要开多个窗口,也经常希望某个窗口总在最前,部分软件自带了置顶功能,但大部分都没有,但却是需要,没有也得有!用WIN32 API做了个窗口置顶小工具,使用非常简单,运行程序后,会自动列出当前所有可见的窗口的 “标题名” 和对应的 “窗口句柄”:此刻需要选择某个窗口,可以选择输入窗口标题关键字,(例如我们选择 STC 单片机的下载软件 ):或者输入窗口对应的句柄:然后,按照提示操作就可以了,1:置顶、2:取消置顶、3:重新选择需要说明一点的是,用句柄选择窗口更加好用一些,因为有些软件使用自己的皮肤库,他们的标题栏很可能只是一张图片,若使用关键字可能会失败...下载地址:点这里代码:#i 阅读全文

posted @ 2012-04-13 16:17 hicjiajia 阅读(1476) 评论(0) 推荐(0)

进程注入
摘要:这里把很早前的一些文章陆续汇总下,以后研究方向会专注,本来就是菜鸟,总这一竿子那一竿子,最后一场空,以后主要是嵌入式,PC要放一放了.....预备知识:键盘记录功能需要用到全局键盘钩子(有局部钩子和全局钩子之分),而全局键盘钩子需要一个单独的dll文件,因为这个dll文件会被注入到任意获得键盘消息的进程中(个别系统进程无法注入),向操作系统注册钩子后,再在回调函数中处理对应的键盘事件就OK....另外,虽然dll也属可执行文件,但它需要带头大哥的指引才能启动(exe文件),因此,还需要一个起动机,也就是一个exe文件来帮助启动... (DEV-CPP编译通过)先看一下效果:这里贴两段程序,第一 阅读全文

posted @ 2012-03-21 19:14 hicjiajia 阅读(3982) 评论(0) 推荐(1)

dev-c++中编译含WINSOCK的代码出现错误的解决方法
摘要:经常用DEV—CPP编译器,因为小巧便于随身携带,但是总会些问题,这里做些记录在DEV-C++中编译含WINSOCK的代码总出现这样的问题undefinedreferenceto`inet_addr@4'undefinedreferenceto`gethostbyname@4'undefinedreferenceto`WSAGetLastError@0'undefinedreferenceto`inet_ntoa@4'undefinedreferenceto`WSAStartup@8'undefinedreferenceto`inet_ntoa@4 阅读全文

posted @ 2011-06-28 23:14 hicjiajia 阅读(1576) 评论(1) 推荐(1)

回调函数
摘要:对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。为什么要使用回调函数呢?我们先看一个小例子:[代码]这个函数用于在一个单向链表中查找一个指定的值,返回保存这个值的节点。它的参数是指向这个链表第一个节点的指针以及要查找的值。这个函数看上去很简单,但是我们考虑一个问题:它只能适用于值为整数的链表,如果查找一个字符串链表,我们不得不再写一个函数,其实大部分代码和现在这个函数相同,只是第二个参数的类型 阅读全文

posted @ 2011-02-15 10:34 hicjiajia 阅读(1104) 评论(0) 推荐(1)

跨平台TTS eSpeak Windows开发
摘要:原文链接:http://cool.worm.blog.163.com/blog/static/6433900620097535713944/ 估计我又要长篇大论一番了,这个问题折磨了十多天,最后终于有了起色,算是安慰了。 eSpeak是最为流行的开源跨平台的文本转语音程序,我早在星际译王StarDict中就已经接触到,但并没有详细介绍应用它,这些天一直用Qt编写程序,当然在功能需求上eSpeak当然成了最好的选择!Pass掉了Microsoft Speech SDK,我怎么有些感觉郁闷……不过我比较喜欢研究一些未接触过的东东,结果碰了一脸灰!等我慢慢喷来呀~ 从哪开始说那……先去网站看看吧! 阅读全文

posted @ 2011-02-02 17:50 hicjiajia 阅读(6727) 评论(1) 推荐(0)

在Visual Studio下建立ImageMagick开发环境
摘要:ImageMagick 是个不错的东东,很有名,这里就不介绍了,今天在网上四处找开发者资料,可惜的是网上这方面的资料少的可怜,可以说就没有,后来终于找到一篇,原文在http://hi.baidu.com/soulmachine/blog/item/b8b1c416a57b951c962b435f.html/cmtid/3c5fc03f317382cc7c1e71a9,这里我根据他的文章外加我的实践自己补充了一点。Window XP SP3 + VC2010 + ImageMagick6.6.7-Q16 。一、下载http://www.imagemagick.org/script/downloa 阅读全文

posted @ 2011-01-26 17:21 hicjiajia 阅读(4082) 评论(0) 推荐(0)

HTML5 塔防游戏分享
摘要:使用 HTML5 开发的塔防游戏。  作者语:我比较喜欢塔防类的游戏,前段时间非常流行的植物大战僵尸就属于塔防游戏。最近看到有人用 HTML5 写出了很多非常有趣的作品,我忍不住也尝试了一番,于是有了这个HTML5 版塔防游戏。  请用 IE9 / Chrome / Opera 等支持 HTML5 并且有较快的 JavaScript 引擎的浏览器来访问上面的页面。游戏很简单:怪物从地图左上角出现,前往右下角,你的任务是建造炮台或围墙,阻止怪物的前进。每当有怪物到达终点,你游戏中的生命值就会下降,如果生命值降为 0 ,游戏就输了。目前这个版本中,怪物是无穷无尽的,游戏目的就是要抵抗尽可能长的时间 阅读全文

posted @ 2011-01-20 14:21 hicjiajia 阅读(2997) 评论(0) 推荐(1)

Windows/Linux下C/C++时间函数全攻略
摘要:1、通用处理:time_t(win平台64位系列对应__time64_t,Linux暂无研究,以后补上)time_t=long int,范围从1970-1-1 0:0:0 到2038-1-18 19:14:07__time64_t=__int64,范围从1970-1-1 0:0:0 到3000-12-31 23:59:59这个变量每一秒增加1,精度很低。但是已经可以处理常用时间问题了: A、获取当前时间: time_t ttime=time(NULL); __time64_t ttime=_time64(NULL); B、转换time_t到可以识别的结构struct tm: struct tm 阅读全文

posted @ 2011-01-20 14:07 hicjiajia 阅读(8995) 评论(0) 推荐(0)

视频播放的基本原理
摘要:视频播放的基本原理 当初看VLC代码花了不少时间,其中很大的原因是不太了解视频播放的基本原理。现在看来,几乎所有的视频播放器,如VLC、MPlayer、Xine,包括DirectShow,在播放视频的原理和架构上都是非常相似的,理解这个对理解VLC的源码会有事半功倍的效果。 大致的来说,播放一个视频分为4个步骤: 1. acess 访问,或者理解为接收、获取、得到 2. demux 解复用,就是把通常合在一起的音频和视频分离(还有可能的字幕) 3. decode 解码,包括音频和视频的解码 4. output 输出,也分为音频和视频的输出(aout和vout) 拿播放一个UDP组播的MPEG 阅读全文

posted @ 2011-01-19 16:47 hicjiajia 阅读(1507) 评论(0) 推荐(0)

<STL> accumulate 与 自定义数据类型
摘要:C++ STL中有一个通用的数值类型计算函数— accumulate(),可以用来直接计算数组或者容器中C++内置数据类型,例如:[代码]但是对于自定义数据类型,我们就需要自己动手写一个类来实现自定义数据的处理,然后让它作为accumulate()的第四个参数,accumulate()的原型为(文件取自DEV-C++编译器):[代码]第四个参数为 __binary_op ,我们需要重写这个函数对象,后面还会继续分析...假设自定义数据类型为:[代码]那么我们可能要定义如下列的类:[代码]注意,在类中我们重写了operator(),其中第一参数是int类型,第二个参数是const Student 阅读全文

posted @ 2010-12-21 00:01 hicjiajia 阅读(2799) 评论(0) 推荐(0)

<STL> pair随笔
摘要:C++标准中提供了pairT1,T2类型,今天想自己写一个,在实际动手过程中,自定义的类名不能是pair,否则会和C++标准中的pair类冲突,于是我定义成了pair1。这里我有点不太明白的是,我们都知道pair是在头文件utility.h中定义的,我并没有引入这个头文件,但居然编译的时候提示pair已经定义,不明白....[代码] 阅读全文

posted @ 2010-12-18 16:46 hicjiajia 阅读(3561) 评论(0) 推荐(0)

<STL> 容器混合使用
摘要:1. 定义一个表示学生的结构(Student),其中包含一个名字(string)和一个分数(total)2.用一个索引值(随便一个整数)和一个结构(Student)来构造pairint,Student3.用pairint,Student作为set容器的插入元素。这里要了解的是,这里插入到set容器的元素(pairint,Student)是我自定义的,因此需要定义针对pairint,Student进行比较大小的函数,方能插入set容器中,因为set容器是有序的。其他的就不需要解释了,直接看代码...[代码]注意:在Student结构中,我重写了operator(),以方便输出 阅读全文

posted @ 2010-12-18 15:55 hicjiajia 阅读(661) 评论(1) 推荐(1)

<STL> set随笔
摘要:记录下我在学习STL过程中一些笔记,本人忘性太大,不得不做笔记,还是两份笔记,一份纸张版,一份网络版...[代码]我们知道 set 容器它是有序的,所以在向容器插入数据的时候,set 容器会根据 operator() 操作符进行排序,对于C++内置类型排序是没有问题的,但是本例中我们自定义了一个数据类型为student, 此时set容器就无法自动为我们排序了,因此我们需要自己定义 operator() 实现student 类型的大小比较,对此有两种方法,一种是重写一个比叫对象(本例为PS),然后重写operator()函数 ,在函数中进行比较两个关键字的大小,上面的代码用的就是这种方法,至 阅读全文

posted @ 2010-12-18 14:48 hicjiajia 阅读(1071) 评论(0) 推荐(0)

C++ 文件流
摘要:一、ASCII 输出  为了使用下面的方法, 你必须包含头文件fstream.h(译者注:在标准C++中,已经使用fstream取代fstream.h,所有的C++标准头文件都是无后缀的。)。这是 iostream.h的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, iostream.h 已经被fstream.h包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。 如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 阅读全文

posted @ 2010-12-07 13:01 hicjiajia 阅读(1236) 评论(1) 推荐(0)

散列表(C版)
摘要:可以直接编译通过,可以试一下....[代码] 阅读全文

posted @ 2010-12-07 00:08 hicjiajia 阅读(1129) 评论(0) 推荐(0)

c++ 内存存储 解决char*p, char p[]的问题
摘要:栈:通常用于编译期间就能确定存储大小的变量的存储区,用于在函数作用域内创建,在离开作用域后自动销毁的变量的存储区。有种说法是默认大小1M.堆:通常用于那些在编译期间不能确定存储大小的变量的存储区。它的存储空间是不连续的。一般由malloc(或new)函数来分配内存块,并且需要用free(或delete)来释放内存。如果程序员没有释放掉,那么就会出现内存泄露问题。 全局/静态存储区:和“栈”一样,通常是用于那些在编译期间就能确定存储大小的变量的存储区。但是它用于整个程序运行期间都可见的全局变量和静态变量。 常量存储区:通常用于编译期间能确定存储大小的常量的存储区。并且在运行期间,存储区内的常量也 阅读全文

posted @ 2010-12-06 13:32 hicjiajia 阅读(2164) 评论(2) 推荐(0)

C++ 流
摘要:今天特意研究了一下C++中的“流”,其实是为了做一个字典,利用文件流和输入迭代器从txt文件中读取数据到STL容器中(实现代码十分精简啊...),由于是试验我用了简单的vector,实际编码用映射或者哈希表效率更高...[代码]1.txt 文件内容如下:程序运行结果如下: 阅读全文

posted @ 2010-11-23 23:10 hicjiajia 阅读(398) 评论(0) 推荐(0)

小解C++模板特化
摘要:模板的特化(template specialization)分为两类:函数模板的特化和类模板的特化。(1) 函数模板的特化:当函数模板需要对某些类型进行特别处理,称为函数模板的特化。例如:[代码]代码11行比较字符串是否相等。由于对于传入的参数是char *类型的,max函数模板只是简单的比较了传入参数的值,即两个指针是否相等,因此这里打印0。显然,这与我们的初衷不符。因此,max函数模板需要对c... 阅读全文

posted @ 2010-08-27 19:48 hicjiajia 阅读(6603) 评论(1) 推荐(3)

生日快乐歌(程序员版)
摘要:程序在DEV-C++中编译通过,调用Win32 API,演奏出唯美的歌曲.....#include<windows.h>voidBirthday();intmain(){Birthday();return0;}voidBirthday(){unsignedfrequency[]={392,392,440,392,523,494,392,392,440,392,587,523,392,3... 阅读全文

posted @ 2010-08-27 18:51 hicjiajia 阅读(3360) 评论(0) 推荐(2)

Dll的分析与编写(二)
摘要:1、调用约定基本概念2、C/C++ 常用的几种调用约定3、调用约定与名称修饰4、__cdecl 与 __stdcall 的区别5、保证与其他调用程序的兼容性6、几个重要的关键字解释!7、乱七八糟8、C程序中调用C++写的dll1、调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理... 阅读全文

posted @ 2010-08-27 12:08 hicjiajia 阅读(2339) 评论(0) 推荐(3)

1 2 下一页