找回密码
 注册
Simdroid-非首页
查看: 1033|回复: 25

【讨论】如何将对话框固定在最前面?

[复制链接]
发表于 2003-11-18 14:07:28 | 显示全部楼层 |阅读模式 来自 上海浦东新区
请问各位:
如何将matlab对话框固定在最前面。因为我在一个figure上进行鼠标操作,需要即时显示一些处理信息。因为此figure的页面已经塞满了,我想创建一个dialog用来显示部分输出信息。问题是如何将此对话框固定在最前面?
欢迎讨论,谢谢!
发表于 2003-11-19 13:09:46 | 显示全部楼层 来自 上海

回复: 【讨论】如何将对话框固定在最前面?

Simdroid开发平台
try this:
msgbox('data to process', 'title', 'modal')
  
Note the parameter: 'modal'
 楼主| 发表于 2003-11-19 14:00:38 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

你的意思是将其设为模式对话框。但是模式对话框是不能将鼠标用于其他界面的操作。而我是希望鼠标在另一个界面操作,而将信息显示在这个对话框上。
  
一个新问题,如何将一个界面最大化,最小化?
谢谢!
发表于 2003-11-19 14:10:06 | 显示全部楼层 来自 上海

回复: 【讨论】如何将对话框固定在最前面?

明白你的意思了,呵呵,有点困难,看看taohe有没有办法。
 楼主| 发表于 2003-11-20 15:01:41 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

有谁知道matlab如何控制figure的消息的啊?
发表于 2003-11-21 07:46:51 | 显示全部楼层 来自 中国

回复: 【讨论】如何将对话框固定在最前面?

Matlab可以调用API函数吗? 可以的话就OK了。
 楼主| 发表于 2003-11-21 11:00:51 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

matlab可以调用API的。
taohe兄:
你知道怎么调用API解决这两个问题吗?
谢谢了!
发表于 2003-11-21 21:48:20 | 显示全部楼层 来自 新加坡

回复: 【讨论】如何将对话框固定在最前面?

调用系统API函数可以通过mex接口,用C/C++或者FORTRAN都可以。不过感觉对你的这个问题没有多少帮助。
  
你的这个问题我从一开始就看到啦,也一直在想,只是没有什么好的办法。
发表于 2003-11-21 22:33:46 | 显示全部楼层 来自 中国

回复: 【讨论】如何将对话框固定在最前面?

SetWindowsPos可以使一个窗口总在最前方,需要获得该窗口的句柄。这样做不可以吗?
发表于 2003-11-21 22:51:48 | 显示全部楼层 来自 新加坡

回复: 【讨论】如何将对话框固定在最前面?

哦,这个我倒没想到,看起来好像是可行的。
 楼主| 发表于 2003-11-21 23:06:48 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

taohe兄,可不可以将这个“可行”变成实施的细节啊。我可是对API一点不懂的,惭愧惭愧。
发表于 2003-11-22 00:05:00 | 显示全部楼层 来自 新加坡

回复: 【讨论】如何将对话框固定在最前面?

刚写了一个简单的mex文件。附件有三个文件:
1. mexwndontop.cpp  ---- 源程序
2. mexwndontop.dll ---- 编译好的mex dll for matlab 6.x,可以直接用
3. mexwndontop.m ---- 可以用help mexwndontop来看用法
  
用法:
  1. plot(rand(10,1));
  2. % 假设这时出来的figure窗口的标题是"Figure No. 1", 那么
  3. mexwndontop('Figure No. 1');
复制代码

  
这样,那个窗口就在最前面啦。好啦,我也要去zzz

本帖子中包含更多资源

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

×

评分

1

查看全部评分

发表于 2003-11-22 09:05:10 | 显示全部楼层 来自 上海

回复: 【讨论】如何将对话框固定在最前面?

不错,支持taohe兄弟原创!
  
希望看到Cwit的试用结果,呵呵。我置顶为精品了。
 楼主| 发表于 2003-11-22 11:59:56 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

taohe兄真的很厉害啊!
这个方法确实很好!
现将测试结果告知大家:
①通过figure的“Name”控制figure置顶;
②置顶后的figure自动位于屏幕的左上角,无论它原来如何定义的位置;
③此函数不能支持figure的中文名字,警告信息如下:Warning not enough space. String is truncated 。
④如果还有其它软件的界面要求置顶,那么置顶优先权交给新置顶的界面,直到它被删除。
⑤如果除置顶外的最上面的figure有“WindowsMotionFcn”设置,那么可以正常执行。但是置顶的界面有“WindowsMotionFcn”设置时情况如何,还没有测试。
当前测试的结果就是这些了,以后有新情况再补上。
另外请教界面最大化也可以用这种方法实现吗?
再次感谢taohe兄!
 楼主| 发表于 2003-11-22 14:06:06 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

关于不能支持中文名字,我想到一个办法,可以在调用这个函数的时候将界面的名字设为临时的英文名称。调用之后再重新设置此界面的“Name”和“Position”。
发表于 2003-12-1 20:51:16 | 显示全部楼层 来自 天津

回复: 【讨论】如何将对话框固定在最前面?

就是嘛,matlab没有提供的东西,可以通过windows API来解决。最大化窗口应该也可以这样的,我对windows API知道一些,可是我不会mex接口,惭愧!惭愧!
 楼主| 发表于 2003-12-1 23:35:47 | 显示全部楼层 来自 上海浦东新区

回复: 【讨论】如何将对话框固定在最前面?

taohe的dll文件,在某些机器上不能用,警告“找不到某个模块”。
发表于 2003-12-2 10:08:49 | 显示全部楼层 来自 安徽马鞍山

回复: 【讨论】如何将对话框固定在最前面?

呵呵,呵呵
发表于 2003-12-10 13:40:13 | 显示全部楼层 来自 天津

回复: 【讨论】如何将对话框固定在最前面?

窗口操作函数 mexwndop(window_title, operation) 支持中文窗口标题
  
http://www.simwe.com/cgi-bin/ut/topic_show.cgi?id=30747&h=1&bpg=1&age=0
发表于 2003-12-15 16:57:34 | 显示全部楼层 来自 福建厦门

回复: 【讨论】如何将对话框固定在最前面?

通过WINDOWS API来操作窗口是个不错的主意.
另外,我觉得还可以通过以下3种方法来设置一个窗口在最前面:
1.当鼠标在某个figure 上操作,需要显示信息时 使用:
uiwai(msgbox(DataString, TitleString) );%DataString为显示的字符串,
                %可以通过sprintf 将数据写到一个字符串中.TitleString 为
                %标题字符串,信息框弹出后,只有关闭它,才可以进行下一步操作;
  
2.figure(hFigure) %hfigure 为希望显示在最前面的图形句柄,数据刷新可以
                        %通过set(hFigure,'propertyname','propertyvalue')进行.
3.建立一个专门负责显示信息的回调函数DisplayInfo,鼠标在figure 上操作,需要显示信息时,调用该回调函数DisplayInfo,信息通过调用参数向DisplayInfo函数传递,形式如: mfilename('DisplayInfo',hFigure, eventdata, handles, DataString)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-14 00:14 , Processed in 0.064724 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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