鱼C论坛

 找回密码
 立即注册
查看: 691|回复: 2

[已解决]MessageBox

[复制链接]
发表于 2023-11-24 10:19:02 | 显示全部楼层 |阅读模式

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

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

x
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
MessageBox PROTO, hwnd:DWORD, 1pText:DWORD, 1pCaption:DWORD, uType:DWORD    ;函数的声明


.data
szCaption db 'A MessageBox !',0
szText db 'Hello,World !,0



.code
main PROC
        

    invoke MessageBox, NULL, offset szText,offset szCaption, MB_OK   ;调用函数

        
    INVOKE ExitProcess,0
main ENDP
END  main


我的问题:MessageBox PROTO, hwnd:DWORD, 1pText:DWORD, 1pCaption:DWORD, uType:DWORD   提示语法错误 ??
最佳答案
2023-11-24 10:19:30
你的代码存在一些语法错误。首先,参数名称应该以字母开头而不是数字。其次,在定义MessageBox函数原型时,参数名之前应该使用类型修饰符。最后,你的代码中存在一些拼写错误和缺少引号的问题。

以下是正确的代码:

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
MessageBox PROTO, hwnd:DWORD, lpText:DWORD, lpCaption:DWORD, uType:DWORD    ; 函数的声明

.data
szCaption db 'A MessageBox!',0
szText db 'Hello, World!',0

.code
main PROC
    invoke MessageBox, NULL, OFFSET szText, OFFSET szCaption, MB_OK   ; 调用函数      
    INVOKE ExitProcess,0
main ENDP
END main

这样应该就没有语法错误了。注意到,OFFSET关键字用于获取字符串在内存中的偏移量,而MB_OK是MessageBox函数的第四个参数,代表将显示一个OK按钮。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-24 10:19:30 | 显示全部楼层    本楼为最佳答案   
你的代码存在一些语法错误。首先,参数名称应该以字母开头而不是数字。其次,在定义MessageBox函数原型时,参数名之前应该使用类型修饰符。最后,你的代码中存在一些拼写错误和缺少引号的问题。

以下是正确的代码:

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
MessageBox PROTO, hwnd:DWORD, lpText:DWORD, lpCaption:DWORD, uType:DWORD    ; 函数的声明

.data
szCaption db 'A MessageBox!',0
szText db 'Hello, World!',0

.code
main PROC
    invoke MessageBox, NULL, OFFSET szText, OFFSET szCaption, MB_OK   ; 调用函数      
    INVOKE ExitProcess,0
main ENDP
END main

这样应该就没有语法错误了。注意到,OFFSET关键字用于获取字符串在内存中的偏移量,而MB_OK是MessageBox函数的第四个参数,代表将显示一个OK按钮。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 10:19:57 | 显示全部楼层
根据您提供的代码,MessageBox函数的声明中存在一些语法错误。具体来说,参数名前的数字1应该是无效的。

以下是修正后的代码:

[/code]assembly
.386
.model flat, stdcall
.stack 4096

ExitProcess PROTO, dwExitCode:DWORD
MessageBox PROTO, hwnd:DWORD, pText:DWORD, pCaption:DWORD, uType:DWORD ; 函数的声明

.data
szCaption db 'A MessageBox!',0
szText db 'Hello, World!',0

.code
main PROC
    invoke MessageBox, NULL, offset szText, offset szCaption, MB_OK
    INVOKE ExitProcess, 0
main ENDP
END main
[/code]

在修正后的代码中,我将参数名中的数字1移除,并将其改为更常见的pText和pCaption。此外,我还删除了字符串szText中的中文逗号,并为两个字符串添加了适当的结束符。

希望这样修改后的代码能够解决您遇到的问题。如果您有其他方面的疑问或需要进一步的解释,请随时告诉我,我会乐意帮助您。

回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 09:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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