找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16637|回复: 2
打印 上一主题 下一主题

uistyler对话框的数据传递问题。

[复制链接]
跳转到指定楼层
1
发表于 2004-11-19 19:59:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
现在想把第一个对话框单选列表框中获得的数据传递给第二个对话框。
  
看以前的贴子知道在两个UIstyler对话框之间传递有两种方法:
1.定义全局变量。
    我在第一个对话框头文件中定义int index,想让第二个对话框包含第一个对话框的头文件来调用。可是无论int index放在什么地方都出错。
    在直接利用MFC DLL生成的主程序中建立全局变量,UIstyler文件也不能够访问。
2.利用客户数据传递。
    在第二个对话框中建立函数extern int sx ( int response,int user_data ),却不知道怎么把单选列表获得的数据传过来。
  
还请知道的朋友详细讲一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-11-20 14:12:31 | 只看该作者
1,定义全局变量的方法:
(1)应该在第一个对话框源代码文件中定义全局变量int index;然后在第一个对话框头文件中声明extern int index;然后让第二个对话框源代码文件来调用。
(2)第一种方式是最粗糙实现公有变量的方法,一般不太建议使用,因为无法控制和跟踪。另一个间接方式,在第一个对话框源代码文件中定义全局变量static int index;在声明两个方法extern int ask_index() { return index };和extern void set_index( int input_index ) { index = input_index; }; 然后将此两个方法的声明写在第一个对话框的头文件中,可以让第二个对话框的源代码文件包含使用。
  
2,利用客户数据传递:
你在第二个对话框中建立函数extern int sx ( int response,int user_data ),里面的内容一般是(1)UF_initialize; (2) UF_STYLER_create_dialog; (3) UF_terminate;
在UF_STYLER_create_dialog的第四个参数位置是客户数据位置,通常不使用的情况下,我们放的是NULL。在这里你可以将第一个对话框单选列表的数据通过形参user_data传进来,然后将它的指针放在第四个参数的位置&user_data。
这样在第二个对话框的各个回调函数中,第二个参数都是void *client_data。你可以做一个强制转换就可以得到你需要的数据,如:
int index=(int) *client_data;
3
发表于 2004-11-21 14:28:06 | 只看该作者
谢谢jon_wu 的详细解释。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-26 13:19 , Processed in 0.022761 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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