声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2324|回复: 3

[GUI界面] gui生成的fig图像,为什么双击打开会出错

[复制链接]
发表于 2008-6-5 08:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用gui向导编写了一个程序,用gui向导打开时,运行正常,但是双击保存的.fig文件打开时,命令窗口报错:Attempt to reference field of non-structure array。下面是我编写的一个找错的简单例子untitled1.m:

它有一个可编辑框和一个按钮它们的tag分别为out和sure

(1)untitled1_OpeningFcn中代码如下:

handles.output = hObject;
set(handles.out,'string','output');
% Update handles structure
guidata(hObject, handles);

(2)sure_Callback中代码为:
set(handles.out,'string','output with button ');

运行时编辑框中输出output,点击按钮输出output with button,运行正常。
若双击untitled1.fig,生成可视界面,但编辑框中无文字,点击按钮命令窗口报错:Attempt to reference field of non-structure array

(3)我猜想可能是双击时要调用out_CreateFcn函数,所以在它里面添加代码:
set(handles.out,'string','output with the CreatFcn function');
结果是编辑框中出现output,而且报错:Attempt to reference field of non-structure array

有谁可以帮忙解决一下这个问题,最后能说明一下gui程序的执行过程,如是先执行opening函数还是各个初始化函数,或者有的初始化函数根本就不执行,谢谢
回复
分享到:

使用道具 举报

发表于 2008-6-5 09:25 | 显示全部楼层

回复 楼主 的帖子

一般都是先打开matlab
然后利用matlab打开
 楼主| 发表于 2008-6-5 09:43 | 显示全部楼层
是,打开matlab后,双击current Directory下的.fig文件,会出错。
 楼主| 发表于 2008-6-5 15:30 | 显示全部楼层
今天试了一上午,有了一点收获,写出来和大家分享,如有错误,希望大家可以给以指正。
首先是gui的执行顺序:(1)在gui向导下打开,先执行各个控件的creat函数,执行时再次执行各个控件的creat函数,后是opening函数,之后是响应控件的 操作(2)双击打开.fig文件时,先执行各个控件的creat函数,后响应控件的操作,即不执行opening函数。至于产生上述区别的原因还不知道。

我的程序的错误应该是在gui向导打开时,执行了opening函数,对应opening函数来说,handles.out是它的局部变量,可以使用。而对于out_Creat函数来说它的控件的句柄是hObject,它不知道handles.out是什么,sure_callback更不知道了。所以可以在out_Creat函数中写入handles.out=hObject;guidata(hObject,handles);这样在其它callback函数中引用就没问题了。
说的有些乱了,总之就是在跨函数使用变量时要用handles定义。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 05:08 , Processed in 0.126566 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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