声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2549|回复: 12

[GUI界面] 如何使得控件浮动显示

[复制链接]
发表于 2008-4-15 18:10 | 显示全部楼层 |阅读模式

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

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

x
请教各位:matlab可不可以设计浮动显示的对话框,或者fig图形,工具栏等

我看了下他们的属性好像都不能,还有工具栏也不可以浮动显示,只能固定在一个地方。

我说的浮动就是可以将其拖拽到窗口的任意位置上,并且总是置于顶层显示,而且焦点可以不落在它上面。

[ 本帖最后由 eight 于 2008-4-15 18:31 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-4-15 18:35 | 显示全部楼层
浮动——看看有否与 dock 相关的属性

置顶—— [原创]一个十分简陋的链接修正程序  看这个帖子7楼

评分

1

查看全部评分

发表于 2008-4-15 18:42 | 显示全部楼层
这个估计比较麻烦

   多看看控件属性看能否实现
 楼主| 发表于 2008-4-17 19:25 | 显示全部楼层
好,我先看看,过两天回来反馈
呵呵,这贴子不够14个字,还不让发
发表于 2008-4-17 19:54 | 显示全部楼层
我随便在matlab中搜索就找到了:

Docked WindowStyle

When WindowStyle is set to docked, the figure is docked in the desktop or a document window. When you issue the following command,

    set(figure_handle,'WindowStyle','docked')

MATLAB docks the figure identified by figure_handle and sets the DockControls property to on, if it was off.

评分

1

查看全部评分

 楼主| 发表于 2008-4-17 21:02 | 显示全部楼层
我试过这个dock,它是将fig停靠在matlab窗口上,而不是浮动。
发表于 2008-4-17 21:22 | 显示全部楼层
 楼主| 发表于 2008-4-17 21:36 | 显示全部楼层
那个float类似于多文档操作时候用的吧,我的意思是想实现页面能像暴风影音的窗口那样,可以显示任何窗口的最前面,并且点击其他页面时,它仍显示在任何窗口的最上面。
感觉好像matlab不能实现这样的功能,vc上的工具栏就可以停靠在窗口的任何地方,可matlab的工具栏就不能,我想原因应该如此吧。
发表于 2008-4-17 21:45 | 显示全部楼层
原帖由 rap2009 于 2008-4-17 21:36 发表
那个float类似于多文档操作时候用的吧,我的意思是想实现页面能像暴风影音的窗口那样,可以显示任何窗口的最前面,并且点击其他页面时,它仍显示在任何窗口的最上面。
感觉好像matlab不能实现这样的功能,vc上的工具 ...
工具栏浮动估计比较难,但是窗口置顶用 dll 就可以了,我上面在2楼不是给你提示了吗?工具栏浮动是否也可以用 c 做成 dll 呢?没有研究过,给点思路,你自己动手试试吧

[ 本帖最后由 eight 于 2008-4-17 21:52 编辑 ]
 楼主| 发表于 2008-4-17 21:59 | 显示全部楼层
原帖由 eight 于 2008-4-17 21:45 发表
工具栏浮动估计比较难,但是窗口置顶用 dll 就可以了,我上面在2楼不是给你提示了吗?



你的意思是,你做那个软件页面,非最小化时是置顶显示吗?

我运行一下,没有置顶。我没有装vc,我装了后再试试吧,还有你那个动库是实现置顶的吧,那没有源码啊,我自己试试吧。

[ 本帖最后由 rap2009 于 2008-4-17 22:00 编辑 ]
发表于 2008-4-17 22:06 | 显示全部楼层
原帖由 rap2009 于 2008-4-17 21:59 发表
你的意思是,你做那个软件页面,非最小化时是置顶显示吗?

我运行一下,没有置顶。我没有装vc,我装了后再试试吧,还有你那个动库是实现置顶的吧,那没有源码啊,我自己试试吧。
不会把?我前不久才用完,是置顶的(即总在最前),不需要装vc。你要按照我写的说明文字来下载正确的版本。如果确实不行,那你告诉我你用的 matlab 版本

源码就没有了,其实就两行代码,你到 simwe 论坛搜索一下吧,taohe 老大的作品
——居然让我找到了,哈哈:


  1. /*=================================================================
  2. * mexwndontop ---- makes an MATLAB window always on top
  3. *
  4. * Use this command-line to compile in MATLAB:
  5. * mex mexwndontop.cpp user32.lib
  6. *
  7. * Input ---- A string
  8. * Output ---- None
  9. *
  10. * Created by: taohe for simwe forum
  11. *=================================================================*/
  12. /* $Revision: 1.10 $ */
  13. #include <windows.h>
  14. #include "mex.h"
  15. void mexFunction( int nlhs, mxArray *plhs[],
  16.     int nrhs, const mxArray*prhs[] )
  17.      
  18. {
  19. char *input_buf;
  20. int   buflen,status;
  21.     /* Check for proper number of arguments */
  22. if (nrhs != 1) {
  23. mexErrMsgTxt("One input argument required.");
  24.     } else if (nlhs > 1) {
  25. mexErrMsgTxt("Too many output arguments.");
  26.     }
  27. /* Input must be a string. */
  28.   if (mxIsChar(prhs[0]) != 1)
  29.     mexErrMsgTxt("Input must be a string.");
  30. /* Input must be a row vector. */
  31.   if (mxGetM(prhs[0]) != 1)
  32.     mexErrMsgTxt("Input must be a row vector.");
  33. /* Get the length of the input string. */
  34.   buflen = (mxGetM(prhs[0]) * mxGetN(prhs[0])) + 1;
  35.   /* Allocate memory for input and output strings. */
  36.   input_buf = (char *)mxCalloc(buflen, sizeof(char));
  37.   /* Copy the string data from prhs[0] into a C string
  38.    * input_buf. If the string array contains several rows,
  39.    * they are copied, one column at a time, into one long
  40.    * string array. */
  41.   status = mxGetString(prhs[0], input_buf, buflen);
  42.   if (status != 0)
  43.     mexWarnMsgTxt("Not enough space. String is truncated.");
  44.     /* Do the actual computations in a subroutine */
  45. //mexWarnMsgTxt(input_buf);
  46. HWND hWnd;
  47. hWnd = FindWindow(NULL, input_buf);
  48. SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 1, 1, SWP_NOSIZE | SWP_DRAWFRAME);
  49. return;
  50. }
复制代码

[ 本帖最后由 eight 于 2008-4-17 22:23 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-4-18 10:26 | 显示全部楼层
原帖由 eight 于 2008-4-17 22:06 发表
不会把?我前不久才用完,是置顶的(即总在最前),不需要装vc。你要按照我写的说明文字来下载正确的版本。如果确实不行,那你告诉我你用的 matlab 版本

源码就没有了,其实就两行代码,你到 simwe 论坛搜索一下吧 ...


老八谢谢你,我两个版本都下载了,把两个都解压了,可能后来的6.5版本文件把7.1的覆盖了,所以在执行时,就实现不了置顶了,现在能了,mexwndontop.mexw32这个文件就是你上面代码mex出来的吧,再次感谢了。
发表于 2008-4-18 10:42 | 显示全部楼层
原帖由 rap2009 于 2008-4-18 10:26 发表
mexwndontop.mexw32这个文件就是你上面代码mex出来的吧

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

本版积分规则

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

GMT+8, 2024-9-23 11:15 , Processed in 0.065168 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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