硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4166|回复: 7
收起左侧

[emWin] GUI_EndDialog()第2个参数问题

[复制链接]

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2016-8-19 17:41:02 | 显示全部楼层 |阅读模式
QQ截图20160819174032.png

这个函数的第2个参数是什么意思呀?
实际用起来,好像用0或1没区别呀
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2016-8-19 19:21:04 | 显示全部楼层
有的时候是有用的 。

当你关闭对话框的时候,你可能需要知道,是OK按钮还是Cancel按钮关闭的这个对话框。你可以用这个参数说明是哪个按钮关闭的对话框。比如,按ok键,关闭对话框,同时存储用户参数;按cancel键,关闭对话框,什么都不做。这样是有区别的。

特别是模式对话框的时候,你可以用对话框建立函数的返回值(就是这个enddialog给出的)来知道哪个按键被按下,后续如何程序如何处理。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-19 21:54:35 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:有的时候是有用的 。

当你关闭对话框的时候,你可能需要知道,是OK按钮还是Cancel按钮关闭的这个对话框。你可以用这个参数说明是哪个按钮关闭的对话框。比如,按ok键,关闭对话框,同时存储用户参数;按cancel键,关闭对话框,什么都不做。这样是有区别的。

特别是模式对话框的 .. (2016-08-19 19:21) 
不是很理解你说的这个什么意思哇。。。

拿你举的这个OK和CANCEL的例子来说。
保存或取消参数,这些都还是要用户写代码来实现吧,emwin内部肯定不会去做。
那通过这个函数的“r”参数传递给emwin有什么用呢。
是哪个按钮关闭对话框,对用户来说并不重要,只要能退出对话框就行。
相应的动作肯定是用户在退出对话框后再写代码实现的。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-19 21:59:52 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:有的时候是有用的 。

当你关闭对话框的时候,你可能需要知道,是OK按钮还是Cancel按钮关闭的这个对话框。你可以用这个参数说明是哪个按钮关闭的对话框。比如,按ok键,关闭对话框,同时存储用户参数;按cancel键,关闭对话框,什么都不做。这样是有区别的。

特别是模式对话框的 .. (2016-08-19 19:21) 
还有一个就是,这个所谓的 r 参考是由GUI_ExecDialogBox的返回的值

关键多半都不会调用这个函数,哪有什么这个函数的返回值呀。


还有就是,怎么会因为这个dialog创建函数的返回值,而知道哪个按键被按下呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-20 09:25:59 | 显示全部楼层
对于你创建的阻塞式对话框,是通过退出函数前在这个函数里面设置,这样就可以设置不同的返回值,比如在这里:
1.jpg
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-20 21:37:47 | 显示全部楼层

回 eric2013 的帖子

eric2013:对于你创建的阻塞式对话框,是通过退出函数前在这个函数里面设置,这样就可以设置不同的返回值,比如在这里:



 (2016-08-20 09:25) 
后来看了下确实是这样,在调用GUI_ExecCreatedDialog()这种阻塞式创建函数时,会返回从GUI_EndDialog()返回的值,也就是GUI_EndDialog(hWin,?)设置的参数值?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-21 09:24:02 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:后来看了下确实是这样,在调用GUI_ExecCreatedDialog()这种阻塞式创建函数时,会返回从GUI_EndDialog()返回的值,也就是GUI_EndDialog(hWin,?)设置的参数值? (2016-08-20 21:37) 
对的。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-22 08:56:54 | 显示全部楼层

回 eric2013 的帖子

eric2013:对的。 (2016-08-21 09:24) 
现在应该是明白了,其实这第二个参数取名叫 r=return就是GUI_ExecCreatedDialog()函数返回值的意思。但还有个问题就是,GUI_ExecCreatedDialog()这个函数为阻塞式的,不能在回调函数中被调用,用来创建对话框。在实际应用中,像询问是否要保存参数这种对话框的创建都是会在回调函数中实现吧,比如在回调函数中的WM_NOTIFY_PARENT消息中创建。那GUI_EndDialog()函数的这个返回值特性应用不是会受很大影响么
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 07:37 , Processed in 0.357798 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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