鱼C论坛

 找回密码
 立即注册
查看: 1685|回复: 1

关于Wsprintf和MessageBox的配合使用

[复制链接]
发表于 2012-10-19 22:06:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先贴上小甲鱼的源码
  .data
hWnd                dd        ?
szBuffer        db        256 dup (?)

                .const
szCaption        db        '发信程序',0
szStart                db        'Send说:按下OK按钮开始发送消息, 参数param是 %08x!',0
szReturn        db        'Send说:消息已经发送!',0
szDestClass        db        'MyClass',0        ;目标窗口的窗口类
szText                db        'Send说:亲爱的,收到吗?,0
szNotFound        db        'Send说:亲,没有找到接收的窗口!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
start:
                invoke        FindWindow,addr szDestClass,NULL
                .if        eax
                        mov        hWnd,eax                                ; 找到目标窗口则发送消息
                        invoke        wsprintf,addr szBuffer,addr szStart,addr szText
                        invoke        MessageBox,NULL,offset szBuffer,offset szCaption,MB_OK
                        invoke        SendMessage,hWnd,WM_SETTEXT,0,addr szText
                        invoke        MessageBox,NULL,offset szReturn,offset szCaption,MB_OK
                .else
                        invoke        MessageBox,NULL,offset szNotFound,offset szCaption,MB_OK
                .endif
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        start
书上的原话:p115
invoke wsprintf,addr szBuffer,addr szReceive,lParam,lParam
      这条语句讲lParam的数值,以及lParam的字符串按照szReceive格式化串定义的格式转换,
并将结果存放到szBuffer中,然后程序将szBuffer中的内容在一个消息框中显示出来
invoke MessageBox,hWnd,offset szBuffer, addr szCaption,MB_OK



疑惑点:如果执行这句invoke        wsprintf,addr szBuffer,addr szStart,addr szText
szBuffer中的内容是什么
我认为是:‘按下OK按钮开始发送消息, 参数param是 %08x!
                   'Send说:亲爱的,收到吗?
既然老罗的书上说把szBuffer中的内容显示在消息框中 为什么显示出来的内容是
‘按下OK按钮开始发送消息, 参数param是 00402075!’(此值不一定一样)
那后边的那一句  'Send说:亲爱的,收到吗?’
如果说是因为wsprintf参数中addr szStart格式符就一个的话,那可以再加一句就像receive中那样
szStart            db    'Send说:按下OK按钮开始发送消息, 参数param是 %08x!',0dh,0ah
                        db        'Send说:指向的字符串是 "%s"',0

那么wsprintf如何更改?
我的意思是发送的时候把Buffer中的内容都显示出来

望高人指点一二





补充内容 (2012-10-19 22:09):
代码是直接复制的 复制时格式还好好的 传上来就变乱了
此代码是别人的老婆
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-10-20 08:47:40 | 显示全部楼层
高手去哪里了:@:@
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表