C++
实现打开某个文件并选中
八 7th
实现打开某个文件并选中,就是快捷方式上的查找目标功能。
简单的方法是调用explorer.exe并传入/select参数和要选中的文件。
直接采用ShellExecute即可实现,但是有些严重的缺陷。
- 每次调用都会创建一个explorer.exe进程,严重浪费内存
- 即使已经打开此文件文件夹,再次调用依然会创建新窗口
XP以上的操作系统提供了一个SHOpenFolderAndSelectItems函数,看见名字就知道这个函数的功能了。
因为我用的devcpp并没有这个函数的定义,所以我直接动态载入了。
更多 >
学习了一下C++的运算符重载
六 25th
各位不好意思了,最近很忙,都不想写博客了。今天空多,发一篇。
因为对char失去了使用的欲望,所以尝试着自己写一个string类,没写完,全当是学习一下重载咯。
其实代码没必要这么多的,我又顺便学了一个str开头的函数。
除了需要引用malloc.h以外,其它的都是独立的。
所有全代码请查看全文SString.h。
[demo]sx-server 简单HTTP文件服务器
六 13th
受到老师的鼓励,我也想自己动手完成一下http协议的实现。
具体说来就是RFC2616。
写了一个最基本的回应,只能响应GET方法。编码也仅仅是GB2312.
可以列目录,大于2G的文件不能下载(HTTP协议规定的~好像是)。
唉,难得打字了,自己运行exe文件并且查看源代码是最快捷的方法。
期望您观看后能给我指导。
下载地址:
高速文件处理类
一 22nd
自己写的一个文件处理类,完全内存操作,所以占用内存比较大,但是速度比较快。
记得用完之后释放哦。
我还写了一个使用的搜素函数,可以搜索二进制、ANSI文本、UTF-8文本、UNICODE文本。
搜索二进制的时候,返回的是查找位置之后的位置。搜索文本返回的是文本位置。
没有找到都返回0.
希望不要去掉版权信息。
更多 >
C语言XML解析
一 8th
因为要用到这个功能,所以上网搜索了一番。(QQ音乐的去广告配置)
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
我觉得这个东西嘛,能用就好了,我不需要高级的功能。所以最终选择了xmlParser。
只有一个cpp和一个h文件,使用很简单,引入cpp就够了。
HOOK学习
十二 5th
早就对windows提供的简单热键注册API:RegisterHotKey不满了。
功能太简单,而且要冲突,无法实现某些特殊操作。
所以就用到的hook操作。
主要用到的API:
SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);
不知道为什么网上很多代码还要生成一个dll……
不懂。
ACM不是我混的地方
八 30th
今天闲着没事做,就把珍藏N年的杭电ACM习题拿出来看看。(N<1)
其中发现一个比较有趣的题目。(我以为适合我,不算太难)
呃……变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
速算24 C++
八 30th
几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲。在中国我们把这种游戏称为“算24点”。你作为游戏者将得到4个1-9之间的自然数作为操作数,而你的任务是对这4个操作数进行适当的算术运算,要求运算结果等于24。
你可以使用的运算只有:+,-,*,/,你还可以使用()来改变运算顺序。
这个是一个标准的ACM题目,我不明白的是,为什么出题者在后面又加了一句:
注意:所有的中间结果必须是整数,所以一些除法运算是不允许的(例如(2*2)/4是合法的,2*(2/4)是不合法的。下面我们给出一个游戏的具体例子:
若给出的4个操作数是:1、2、3、7,则一种可能的解答是1+2+3*7=24。
难道是不相信ACMer的实力吗?这里给出一个C++写的解法,声明不是我写的。不过我还能看懂就是了,呵呵。
更多 >
