能力值:
( LV12,RANK:660 )
|
-
-
2 楼
先顶再看~
|
能力值:
( LV12,RANK:410 )
|
-
-
3 楼
看看,??一下。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
楼主过谦了,已经是非常难得了。
|
能力值:
( LV9,RANK:290 )
|
-
-
5 楼
牛
|
能力值:
( LV9,RANK:210 )
|
-
-
6 楼
|
能力值:
( LV9,RANK:290 )
|
-
-
7 楼
最初由 cxlrb 发布 一看这个字就心虚,其实我连汇编都不识。
嘿嘿,我刚弄了一下。Resource editor不知道怎么在主界面对话框上添加一个按钮
我新建一个项目,然后在“未命名”那边添加窗口和按钮,可那不是主程序?
请cxlrb兄 不吝赐教
|
能力值:
(RANK:990 )
|
-
-
8 楼
文章不错,不过版权声明可能有点问题:
【版权声明】: 本文原创于一蓑烟雨技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
这个帖子是你本人发的,文章是你写的,不该属于转载,在看雪论坛来说应该是你原创。而这个声明看起来却好像是转载的一样,不大合适吧?
好文章被转载是正常的,我一般都是写“本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!”,这样偷懒一点,自己发哪个论坛都算我原创。如果真要具体写的话,我只会在第一个发布的论坛说“原创于某某论坛”,其他论坛我再发的话就不会再写了。否则会让别人怀疑你到底是原创还是转载。
一点个人意见,仅供参考。
|
能力值:
( LV12,RANK:2670 )
|
-
-
9 楼
支持!
|
能力值:
( LV9,RANK:210 )
|
-
-
10 楼
最初由 CCDebuger 发布 文章不错,不过版权声明可能有点问题:
这个帖子是你本人发的,文章是你写的,不该属于转载,在看雪论坛来说应该是你原创。而这个声明看起来却好像是转载的一样,不大合适吧? 好文章被转载是正常的,我一般都是写“本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!”,这样偷懒一点,自己发哪个论坛都算我原创。如果真要具体写的话,我只会在第一个发布的论坛说“原创于某某论坛”,其他论坛我再发的话就不会再写了。否则会让别人怀疑你到底是原创还是转载。 一点个人意见,仅供参考。
不好意思,是用破文生成器生成的,所以就是那句?,我也?做?改,最先发布在一蓑烟雨,就?氧粘傥咿?了,谢谢兄弟提醒。
|
能力值:
( LV9,RANK:210 )
|
-
-
11 楼
最初由 紫色缘 发布 嘿嘿,我刚弄了一下。Resource editor不知道怎么在主界面对话框上添加一个按钮
我新建一个项目,然后在“未命名”那边添加窗口和按钮,可那不是主程序?
请cxlrb兄 不吝赐教
用这个软件:XN Resource Editor 3.0,操作简单,比Word还简单
|
能力值:
( LV9,RANK:290 )
|
-
-
12 楼
最初由 cxlrb 发布 用这个软件:XN Resource Editor 3.0,操作简单,比Word还简单
是的,我是用的这个软件。
|
能力值:
( LV8,RANK:130 )
|
-
-
13 楼
看了再顶
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
顶一个。
另外请教一下MFC的程序调用窗口回调函数是哪一个~DialogBoxParamA没有搜索到。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
支持!顶一个。
|
能力值:
( LV6,RANK:90 )
|
-
-
16 楼
pediy,好!
|
能力值:
( LV9,RANK:210 )
|
-
-
17 楼
最初由 紫色缘 发布 是的,我是用的这个软件。
已添加资源演示动画,请在一楼下载
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
此文章?的非常好..?我?儋源??更有深入了解
|
能力值:
( LV9,RANK:210 )
|
-
-
19 楼
做一些改进,将最后一段代码改为以下的,通用性及独立性增强了一些。
0040B333 81FB F6010000 cmp ebx, 1F6
0040B339 75 05 jnz short Pe_optim.0040B340
0040B33B E8 F8AFFFFF call Pe_optim.00406338
0040B340 81FB F9010000 cmp ebx, 1F9
0040B346 ^ 0F85 63B3FFFF jnz Pe_optim.004066AF
0040B34C 6A 00 push 0
0040B34E 68 6EB34000 push Pe_optim.0040B36E ---------响应关闭、最大化、最小化
0040B353 8B45 08 mov eax, [ebp+8]
0040B356 50 push eax
0040B357 6A 67 push 67
0040B359 A1 DC844000 mov eax, [4084DC]
0040B35E 50 push eax
0040B35F E8 D492FFFF call <jmp.&USER32.DialogBoxParamA>
0040B364 8BC6 mov eax, esi
0040B366 5E pop esi
0040B367 5B pop ebx
0040B368 5D pop ebp
0040B369 C2 1000 retn 10
0040B36C 0000 add [eax], al------------无用代码
0040B36E 55 push ebp --------------从这里到代码结束,完成对话框的关闭、最大化、最小化响应功能
0040B36F 8BEC mov ebp, esp
0040B371 53 push ebx
0040B372 8B45 0C mov eax, [ebp+C]
0040B375 33DB xor ebx, ebx
0040B377 83F8 02 cmp eax, 2
0040B37A 74 0C je short Pe_optim.0040B388
0040B37C 83F8 10 cmp eax, 10
0040B37F 74 07 je short Pe_optim.0040B388
0040B381 3D 11010000 cmp eax, 111
0040B386 75 0B jnz short Pe_optim.0040B393
0040B388 6A 00 push 0
0040B38A 8B45 08 mov eax, [ebp+8]
0040B38D 50 push eax
0040B38E E8 AD92FFFF call <jmp.&USER32.EndDialog>
0040B393 8BC3 mov eax, ebx
0040B395 5B pop ebx
0040B396 5D pop ebp
0040B397 C2 1000 retn 10
|
能力值:
( LV9,RANK:290 )
|
-
-
20 楼
最初由 cxlrb 发布 已添加资源演示动画,请在一楼下载
感谢cxlrb兄的热情制作!文章写得好,精华文章更好~
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
对偶们初学者是很好的研究材料啊
|
能力值:
( LV9,RANK:210 )
|
-
-
22 楼
再次优化:去了几行不大相关的响应代码
所有代码基本与关于窗口没有关系,以下代码可以独立完成打开和关闭对话框操作。
0040B333 81FB F6010000 cmp ebx, 1F6
0040B339 75 05 jnz short Pe_optim.0040B340
0040B33B E8 F8AFFFFF call Pe_optim.00406338
0040B340 81FB F9010000 cmp ebx, 1F9
0040B346 ^ 0F85 63B3FFFF jnz Pe_optim.004066AF
0040B34C 6A 00 push 0
0040B34E 68 6EB34000 push Pe_optim.0040B36E ------调用关闭、最大化、最小化响应代码:以下红色部分
0040B353 8B45 08 mov eax, [ebp+8]
0040B356 50 push eax
0040B357 6A 67 push 67
0040B359 A1 DC844000 mov eax, [4084DC] ----4084DC 可以是任意一个未占用的地址
0040B35E 50 push eax
0040B35F E8 D492FFFF call <jmp.&USER32.DialogBoxParamA>
0040B364 8BC6 mov eax, esi
0040B366 5E pop esi
0040B367 5B pop ebx
0040B368 5D pop ebp
0040B369 C2 1000 retn 10
0040B36C 0000 add [eax], al ------------无用代码,区隔一下
0040B36E 55 push ebp
0040B36F 8BEC mov ebp, esp
0040B371 53 push ebx
0040B372 8B45 0C mov eax, [ebp+C]
0040B375 33DB xor ebx, ebx
0040B377 3D 11010000 cmp eax, 111
0040B37C 75 0B jnz short Pe_optim.0040B389
0040B37E 6A 00 push 0
0040B380 8B45 08 mov eax, [ebp+8]
0040B383 50 push eax
0040B384 E8 B792FFFF call <jmp.&USER32.EndDialog>
0040B389 8BC3 mov eax, ebx
0040B38B 5B pop ebx
0040B38C 5D pop ebp
0040B38D C2 1000 retn 10
其中
call <jmp.&USER32.DialogBoxParamA>
call <jmp.&USER32.EndDialog>
这两个函数,一般的程序都会有,在 所有模块间的调用 中可找到,直接借用即可。
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
做的太好了。
|
能力值:
( LV4,RANK:50 )
|
-
-
24 楼
|
能力值:
( LV9,RANK:210 )
|
-
-
25 楼
根据雅枫前辈的指导,最终优化代码为:
0040B333 81FB F6010000 cmp ebx, 1F6
0040B339 75 05 jnz short Pe_optim.0040B340
0040B33B E8 F8AFFFFF call Pe_optim.00406338
0040B340 81FB F9010000 cmp ebx, 1F9
0040B346 ^ 0F85 63B3FFFF jnz Pe_optim.004066AF
0040B34C 6A 00 push 0
0040B34E 68 84B34000 push Pe_optim.0040B384
0040B353 8B45 08 mov eax, [ebp+8]
0040B356 50 push eax
0040B357 6A 67 push 67
0040B359 68 00004000 push Pe_optim.00400000 ; ASCII "MZP"
0040B35E E8 D592FFFF call <jmp.&USER32.DialogBoxParamA>
0040B363 ^ E9 47B3FFFF jmp Pe_optim.004066AF
...................
0040B384 8B4424 08 mov eax, [esp+8]
0040B388 3D 11010000 cmp eax, 111
0040B38D 75 17 jnz short Pe_optim.0040B3A6
0040B38F 837C24 0C 01 cmp dword ptr [esp+C], 1
0040B394 74 05 je short Pe_optim.0040B39B
0040B396 83F8 10 cmp eax, 10
0040B399 75 00 jnz short Pe_optim.0040B39B
0040B39B 6A 00 push 0
0040B39D FF7424 08 push dword ptr [esp+8]
0040B3A1 E8 9A92FFFF call <jmp.&USER32.EndDialog>
0040B3A6 33C0 xor eax, eax
0040B3A8 C2 1000 retn 10
|
|
|