鱼C论坛

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

关于Wsprintf和MessageBox的配合使用

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

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

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

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

  4.                 .const
  5. szCaption        db        '发信程序',0
  6. szStart                db        'Send说:按下OK按钮开始发送消息, 参数param是 %08x!',0
  7. szReturn        db        'Send说:消息已经发送!',0
  8. szDestClass        db        'MyClass',0        ;目标窗口的窗口类
  9. szText                db        'Send说:亲爱的,收到吗?,0
  10. szNotFound        db        'Send说:亲,没有找到接收的窗口!',0
  11. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  12. ; 代码段
  13. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  14.                 .code
  15. start:
  16.                 invoke        FindWindow,addr szDestClass,NULL
  17.                 .if        eax
  18.                         mov        hWnd,eax                                ; 找到目标窗口则发送消息
  19.                         invoke        wsprintf,addr szBuffer,addr szStart,addr szText
  20.                         invoke        MessageBox,NULL,offset szBuffer,offset szCaption,MB_OK
  21.                         invoke        SendMessage,hWnd,WM_SETTEXT,0,addr szText
  22.                         invoke        MessageBox,NULL,offset szReturn,offset szCaption,MB_OK
  23.                 .else
  24.                         invoke        MessageBox,NULL,offset szNotFound,offset szCaption,MB_OK
  25.                 .endif
  26.                 invoke        ExitProcess,NULL
  27. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  28.                 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):
代码是直接复制的 复制时格式还好好的 传上来就变乱了
此代码是别人的老婆
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-20 08:47:40 | 显示全部楼层
高手去哪里了:@:@
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-1 08:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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