首页
社区
课程
招聘
[求助]MessageBoxIndirect怎么都不给我显示ICON出来,Need Help
发表于: 2008-8-26 16:59 6097

[求助]MessageBoxIndirect怎么都不给我显示ICON出来,Need Help

2008-8-26 16:59
6097
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib

.data
MsgCaption   db "Hi,Masm32!",0
MsgBoxText   db "Win32 Assembly is Great!",0
MsgBp        MSGBOXPARAMS <?>

.code
start:
invoke  RtlZeroMemory, addr MsgBp, sizeof MSGBOXPARAMS
invoke  GetModuleHandle,NULL
mov      MsgBp.hInstance,EAX
mov      MsgBp.cbSize,sizeof MSGBOXPARAMS
mov      MsgBp.hwndOwner,NULL
mov      MsgBp.lpszText,offset MsgBoxText
mov      MsgBp.lpszCaption,offset MsgCaption
mov      MsgBp.dwStyle,MB_YESNO
mov      MsgBp.lpszIcon,MB_ICONINFORMATION;我就是要这个ICON
mov      MsgBp.dwContextHelpId,0;
mov      MsgBp.lpfnMsgBoxCallback,0
mov      MsgBp.dwLanguageId,SUBLANG_ENGLISH_US;这个语言是保留的没实现没关系
invoke  MessageBoxIndirect,addr MsgBp
invoke  ExitProcess,NULL
end start
----------------------------------------------------------------------------------------------
问了很多人,实在没办法要看雪的高手出力了,这个提示窗口的图标怎么都不显示出来.XP系统
MASM32 Version 9.0.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 201
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在我这是好的
一点问题都没有
不过我没用MASM32
是用的Aogo的MASMPLUS
不过编译器都是一样的.
估计是编译时候的编译参数的问题
建议仔细看看编译参数方面的参考
2008-8-27 10:40
0
雪    币: 201
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
抱歉
没有看太仔细

首先引用MSDN的一句话
In addition, you can specify the MB_USERICON flag if you want the message box to display the icon specified by the lpszIcon member

所以
你如果要用MessageBox显示图标
要在style属性中指定MB_USERICON
这是其一
其二
我试过了
如果用LoadIcon或LoadImage加载外部图标是显示不出来的
不知道是为什么
但是如果把图标放到资源中
是一点问题都没有的
图我不截了
2008-8-27 11:26
0
雪    币: 201
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我把mov      MsgBp.dwStyle,MB_YESNO改成mov MsgBp.dwStyle,MB_USERICON仍然无法看见ICON但是左边多块大概能放个ICON的位置.按钮从:是(Yes) ,否(No)变成确定了.

首先引用MSDN的一句话
In addition, you can specify the MB_USERICON flag if you want the message box to display the icon specified by the lpszIcon member

我翻译是:此外,你可以指定MB_USERICON 的标记(估计是MB_ICONINFORMATION,MB_ICONWARNING)如果你像显示按数值分类的ICON.也就是
windows.inc里这些字符串对应的数值.eg:mov      MsgBp.lpszIcon,MB_ICONINFORMATION相当与mov      MsgBp.lpszIcon,40H所以ICON跟按钮的类型没什么关系(我一直在怀疑是不是编译器找不到这些ICON资源).等待高手!!
------------------------------------------------------------------------------------------------------
MB_OK                                equ 0h
MB_OKCANCEL                          equ 1h
MB_ABORTRETRYIGNORE                  equ 2h
MB_YESNOCANCEL                       equ 3h
MB_YESNO                             equ 4h
MB_RETRYCANCEL                       equ 5h
MB_ICONHAND                          equ 10h
MB_ICONQUESTION                      equ 20h
MB_ICONEXCLAMATION                   equ 30h
MB_ICONASTERISK                      equ 40h
MB_USERICON                                          equ 80h
MB_ICONERROR                         equ MB_ICONHAND
MB_ICONINFORMATION                   equ MB_ICONASTERISK
MB_ICONSTOP                          equ MB_ICONHAND
MB_ICONWARNING                       equ MB_ICONEXCLAMATION
2008-8-27 19:20
0
雪    币: 201
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看雪怎么没有将帖子提前的功能啊?没3天就沉了.
2008-8-30 08:12
0
雪    币: 201
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看雪怎么没有将帖子提前的功能啊?没3天就沉了.
2008-9-2 06:17
0
雪    币: 200
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
MB_ICONINFORMATION
别来这里 丢人了,仔细看 这是啥东西???

还研究了 这么半天 MB_XXX 打头的 是啥都没搞明白。
把MB_ICONINFORMATION 放 dwStyle 里面 去掉MB_USERICON

mov  MsgBp.dwStyle,MB_YESNO or MB_ICONINFORMATION

uType
[in] Specifies the contents and behavior of the dialog box. This parameter can be a combination of flags from the following groups of flags.
2008-10-18 21:38
0
游客
登录 | 注册 方可回帖
返回
//