lukelqz 发表于 2013-2-23 19:33:49

【源码分享】Win32汇编版 【XP记事本】的实现 有图有真相

本帖最后由 lukelqz 于 2013-2-24 09:14 编辑

    其实呢在罗云彬的Win32汇编书里面已经有一章讲RichEdit控件的,个人觉得这个控件用来做编辑控件还是很好用的。
    但是觉得罗云彬后面写的那个类似记事本的程序的功能不是很完善,寒假在家没网,后来我就照着XP记事本,就又写了一个。
还是有些亮点在里面的,比如自动换行的切换,拖放打开文件,XP系统下XP的按钮风格。
另外今天回校在Win7 64位下测试 有点小问题 不过修复了一下,应该好了。
欢迎大家测试BUG联系我
下面放些测试截图:
先来个拼接的

再来张

和xp记事本的对比,测试的是F5时间输入功能

跳行功能

字符串查找替换

Unix回车转换

拖放打开

开发日志2013.2.14    完成Notepad的资源文件
开发日志2013.2.15    完成Notepad的XP按钮风格,字体设置功能
开发日志2013.2.16    完成Notepad的自动换行功能,状态栏切换功能,背景色功能,插入时间功能
开发日志2013.2.17    完成Notepad的syslink控件打开网站功能,转到某行功能,查找字符串功能
开发日志2013.2.18    完成Notepad的替换字符串功能,新建打开保存另存为功能 完成运行状态下拖放打开文件功能
开发日志2013.2.19    完成Notepad的未启动情况下拖放打开文件功能 支持编辑状态的时候,文件可删除
开发日志2013.2.20   完成notepad的扩展功能,可更改tab位大小,实现Richedit右键弹出菜单功能
开发日志2013.2.22    完成Notepad的unix换行转换功能

另外还有一些自己想加的功能但是没实现。欢迎广大鱼油支招。

一、阅读方向的设置,这个功能我翻了很多资料,就是没实现,只能开始注册窗口类的时候用ES_LEFT或者ES_RIGHT来设置阅读方向,运行之后通过getwindowlong和setwindowlong来改窗口风格的方法来实现改阅读方向未成功
二、还有个待实现的功能:注册表的注册,完成双击打开txt等文件自动打开本软件

最后来个源码
**** Hidden Message *****
PS:刚刚开了一下360,说我写的软件,故意伪装成系统文件,报毒了呵呵,大家不放心的话,可以直接删掉exe文件,自己拿我源码重新编译一下,对了忘了说了,用的Win32汇编IDE是Radasm,挺好的IDE,关键支持自动API。

明天就是小年了,祝大家2013元宵节快乐~

青草 发表于 2013-2-23 20:18:19

还没学到 先看看

goods 发表于 2013-2-23 20:29:47

谢谢分享。。。。。。

qvbhpfqf 发表于 2013-2-23 20:47:14

看看,顶一下

メ㊣逆ご帅☆ 发表于 2013-2-23 21:14:58

给力。
感谢分享。

メ㊣逆ご帅☆ 发表于 2013-2-23 21:18:03

做的好用心{:5_108:},我做的几乎都是半成品。。。

独自一人 发表于 2013-2-23 21:23:22

不错哇,加顶

の祉崭之殇__ 发表于 2013-2-23 21:31:36

我来看看 是什么啊

cathe 发表于 2013-2-23 21:39:30

赞一个.

メ㊣逆ご帅☆ 发表于 2013-2-23 22:00:26

哇哦,你写的这段KU也。 movzx eax,@stTime.wDay
push eax
movzx eax,@stTime.wMonth
push eax
movzx eax,@stTime.wYear
push eax
movzx eax,@stTime.wMinute
push eax
movzx eax,@stTime.wHour
push eax
mov eax,offset szDataFormat
push eax
lea eax,@szBuffer
push eax
call wsprintf
add esp,28在确认栈平衡的情况下我想也可以用ebp暂时代替esp,用MOV来哦

lukelqz 发表于 2013-2-23 22:55:56

メ㊣逆ご帅☆ 发表于 2013-2-23 22:00 static/image/common/back.gif
哇哦,你写的这段KU也。 在确认栈平衡的情况下我想也可以用ebp暂时代替esp,用MOV来哦

{:5_96:}啊哟,俺是在家无聊,搞搞咯,寒假一个月没上网了,都是手机签到的。你说用mov不太会呢。教教我吧。我只知道ebp是子程序用来读参数和局部变量的,然后子程序leave的时候ebp会把保存的值还给esp,来维持堆栈平衡

メ㊣逆ご帅☆ 发表于 2013-2-23 23:10:29

本帖最后由 メ㊣逆ご帅☆ 于 2013-2-23 23:55 编辑

lukelqz 发表于 2013-2-23 22:55 http://bbs.fishc.com/static/image/common/back.gif
啊哟,俺是在家无聊,搞搞咯,寒假一个月没上网了,都是手机签到的。你说用mov不太会呢。教教我吧 ...
一个月没上网。要是我会蛋疼死。。。
其实原本我也不知道这样传参,不过跟着小甲鱼老师调试的时候经常看见他们是这样调用的
VC6也很经常这样做
我已经发现EBP不行了。。。。。EBP会影响到@stTime.wDay之类的,我改用EDI
;其实这个跟PUSH一个道理,PUSH是即时开辟栈空间,即时传参,而这个是一次性开辟,一次性传参
mov edi,esp;用EDI保存当前ESP地址(不能用ESP,会影响到@stTime.wDay之类的结构传值,它靠EBP的)
sub esp,28;一次性开辟,算好需要开辟大小4*7=28,然后就是使劲传参了
movzx eax,@stTime.wDay
mov ,eax
movzx eax,@stTime.wMonth
mov ,eax
movzx eax,@stTime.wYear
mov ,eax
movzx eax,@stTime.wMinute
mov ,eax
movzx eax,@stTime.wHour
mov ,eax
mov eax,offset szDataFormat
mov ,eax
lea eax,@szBuffer
mov ,eax
call wsprintf
add esp,28;mov esp,edi测试是可以的

左手、莫离忧 发表于 2013-2-23 23:16:44

学习学习 来看看

メ㊣逆ご帅☆ 发表于 2013-2-23 23:19:13

lukelqz 发表于 2013-2-23 22:55 static/image/common/back.gif
啊哟,俺是在家无聊,搞搞咯,寒假一个月没上网了,都是手机签到的。你说用mov不太会呢。教教我吧 ...

你这进步速度超神了$_$,边玩游戏都这么给力。
我win32学习比你久好多。羡慕嫉妒恨。
你一直理解能力都这么好么?

牡丹花下死做鬼 发表于 2013-2-24 00:16:23

有种 大牛的感觉啊

掌脉师 发表于 2013-2-24 00:47:05

祝大家2013元宵节快乐

xiaofeng86 发表于 2013-2-24 01:00:30

有点厉害啊 佩服呀

lukelqz 发表于 2013-2-24 09:03:41

メ㊣逆ご帅☆ 发表于 2013-2-23 23:10 static/image/common/back.gif
一个月没上网。要是我会蛋疼死。。。
其实原本我也不知道这样传参,不过跟着小甲鱼老师调试的时候经常看 ...

soga
明白了,感觉其实和子程序把esp暂时给ebp,然后leave的时候再恢复道理差不多哈。

lukelqz 发表于 2013-2-24 09:07:42

メ㊣逆ご帅☆ 发表于 2013-2-23 23:19 static/image/common/back.gif
你这进步速度超神了$_$,边玩游戏都这么给力。
我win32学习比你久好多。羡慕嫉妒恨。
你一直理解能力都 ...

{:5_91:}俺都边学边玩,其实还是耐不下心来学,将近一个学期了,那本罗云彬的书到现在都没看完哦{:5_100:}
你的经验肯定比我丰富呵呵

卡西莫多 发表于 2013-2-24 12:27:45

完全搞不清 套路
页: [1] 2 3 4 5
查看完整版本: 【源码分享】Win32汇编版 【XP记事本】的实现 有图有真相