精华内容
下载资源
问答
  • 浮动窗口和可固定窗口的设置revit2014中新增了浮动窗口的功能,为了让用户有一个良好的作图环境,本文将介绍浮动窗口和可固定窗口的设置。1. 可固定窗口可以移动并调整大小,也可使窗口浮动或固定,其中“项目浏览器...

    浮动窗口和可固定窗口的设置

    revit2014中新增了浮动窗口的功能,为了让用户有一个良好的作图环境,本文将介绍浮动窗口和可固定窗口的设置。

    1. 可固定窗口可以移动并调整大小,也可使窗口浮动或固定,其中“项目浏览器”、“属性”选项板、“系统浏览器”、“协调主体”这些窗口都是可固定的,见图1。

    7f53e0195f2f26e3b406d97b64fc171f.png

    2. 固定窗口与相邻的窗口和工具栏共享一个或多个边。 如果移动共享边,这些窗口将更改形状以进行补偿,还可以在屏幕上的任意位置浮动窗口(如有需要),见图2。

    fa0caf007d48372a5dac0995eb5f17e0.png

    3. 取消固定的窗口会与应用程序窗口分离。 用户可根据需要将其围绕一个或多个屏幕进行移动。 这些窗口可以调整大小及进行分组,也可以双击窗口的标题栏对其快速固定和取消固定。

    4. 窗口分组是让多个窗口在屏幕上占据相同空间数量的一种方法。 对窗口进行分组之后,每个窗口都由组底部的选项卡表示,见图3,“项目浏览器”和“属性”选项板已进行分组。

    d9f4afd166f7370b21bb91d23ca9bf9c.png

    对可固定窗口分组:单击标题栏并拖动要添加至另一个窗口或组的窗口标题栏,。将此窗口放在接收窗口或组的标题栏上。 接收窗口的底部会添加一个新的选项卡,其名称即为被拖动窗口的名称。在组中,单击选项卡可显示对应的窗口。

    解组可固定窗口:如有需要,可以对窗口分组或解组,单击要删除的窗口的选项卡并单击该窗口选项卡,并将其拖出分组,放下窗口以取消其分组。

    展开全文
  • Android浮动窗口的实现

    千次阅读 2013-05-25 16:54:03
    1.浮动窗口的实现原理 看到上图的那个小Android图标了吧,它不会被其他组建遮挡,也可以响应用户的点击和拖动事件,它的显示和消失由WindowManager直接管理,它就是Android浮动窗口。Android浮动窗口的实现主要是靠...


    1.浮动窗口的实现原理

    看到上图的那个小Android图标了吧,它不会被其他组建遮挡,也可以响应用户的点击和拖动事件,它的显示和消失由WindowManager直接管理,它就是Android浮动窗口。Android浮动窗口的实现主要是靠WindowManager这个类。通过WindowManager类的addView(),updateViewLayout(),removeView()这几个方法,我们可以直接在Window中添加,更新,移除View。

    2.浮动窗口实现的具体步骤

    1)既然浮动窗口的实现依赖与WindowManager,那么毫无疑问,我们得先拿到WindowManger对象。考虑到浮动窗口通常在应用程序退出后依然显示,所以我们需要在Service中实现浮动窗口的添加和更新,当然别忘了提供给用户一个取消浮动窗口的功能。
    2)定义你要显示的View。可以在布局文件中定义,也可以自定义视图。
    3)设置必要的参数,其中有几个比较重要的参数需要设置,具体请参考下面的代码。
    4)将View添加到Window中,接收并处理事件,更新View。

    5)在Manifest中加入对应的权限。<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    3.浮动窗口实现代码

     package com.spreadst.floatwindow;
     import android.app.Service;
     import android.content.Context;
     import android.content.Intent;
     import android.graphics.PixelFormat;
     import android.os.IBinder;
     import android.util.Log;
     import android.view.Gravity;
     import android.view.LayoutInflater;
     import android.view.MotionEvent;
     import android.view.View;
     import android.view.WindowManager;

     public class FloatWindowService extends Service {

        private static final TAG = "FloatWindowService";

        private WindowManager mWindowManager;
        private WindowManager.LayoutParams mLayoutParams;
        private LayoutInflater mLayoutInflater;
        private View mFloatView;
        private int mCurrentX;
        private int mCurrentY;
        private static int mFloatViewWidth = 50;
        private static int mFloatViewHeight = 80;
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            //初始化WindowManager对象和LayoutInflater对象
            mWindowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
            mLayoutInflater = LayoutInflater.from(this);
        }
        @Override
        public void onStart(Intent intent, int startId) {
            // TODO Auto-generated method stub
            super.onStart(intent, startId);
            Log.i(TAG, "onStart()");
            createView();
        }
        private void createView() {
            // TODO Auto-generated method stub
            //加载布局文件
            mFloatView = mLayoutInflater.inflate(R.layout.main, null);
            //为View设置监听,以便处理用户的点击和拖动
            mFloatView.setOnTouchListener(new OnFloatViewTouchListener());
            /*为View设置参数*/
            mLayoutParams = new WindowManager.LayoutParams();
            //设置View默认的摆放位置
            mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
            //设置window type
            mLayoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
            //设置背景为透明
            mLayoutParams.format = PixelFormat.RGBA_8888;
            //注意该属性的设置很重要,FLAG_NOT_FOCUSABLE使浮动窗口不获取焦点,若不设置该属性,屏幕的其它位置点击无效,应为它们无法获取焦点
            mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
            //设置视图的显示位置,通过WindowManager更新视图的位置其实就是改变(x,y)的值
            mCurrentX = mLayoutParams.x = 50;
            mCurrentY = mLayoutParams.y = 50;
            //设置视图的宽、高
            mLayoutParams.width = 100;
            mLayoutParams.height = 100;
            //将视图添加到Window中
            mWindowManager.addView(mFloatView, mLayoutParams);
        }
        /*由于直接startService(),因此该方法没用*/
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
        /*该方法用来更新视图的位置,其实就是改变(LayoutParams.x,LayoutParams.y)的值*/
        private void updateFloatView() {
            mLayoutParams.x = mCurrentX;
            mLayoutParams.y = mCurrentY;
            mWindowManager.updateViewLayout(mFloatView, mLayoutParams);
        }
        /*处理视图的拖动,这里只对Move事件做了处理,用户也可以对点击事件做处理,例如:点击浮动窗口时,启动应用的主Activity*/
        private class OnFloatViewTouchListener implements View.OnTouchListener {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                Log.i(TAG, "mCurrentX: " + mCurrentX + ",mCurrentY: "
                        + mCurrentY + ",mFloatViewWidth: " + mFloatViewWidth
                        + ",mFloatViewHeight: " + mFloatViewHeight);
                /*
                 * getRawX(),getRawY()这两个方法很重要。通常情况下,我们使用的是getX(),getY()来获得事件的触发点坐标,
                 * 但getX(),getY()获得的是事件触发点相对与视图左上角的坐标;而getRawX(),getRawY()获得的是事件触发点
                 * 相对与屏幕左上角的坐标。由于LayoutParams中的x,y是相对与屏幕的,所以需要使用getRawX(),getRawY()。
                 */
                mCurrentX = (int) event.getRawX() - mFloatViewWidth;
                mCurrentY = (int) event.getRawY() - mFloatViewHeight;
                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN:
                    break;
                case MotionEvent.ACTION_MOVE:
                    updateFloatView();
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                }
                return true;
            }
        }
     }

    4.如何只在Launcher界面显示浮动窗口

    大家应该都熟悉360安全卫士的浮动窗口,它的浮动窗口只会在Launcher界面显示,当用户切到其它界面,浮动窗口自动被移除了。
    要实现该功能,我们就必须知道当前所在的界面,如果只去监听Activity的category,那么我们只能知道什么时候进入Launcher界面了,却无法知道是否离开了Launcher界面。那么360是如何实现该功能呢?大家可以反编译一下它的代码。这里提供一种可行的方法,我们的目前其实很简单,就是要知道当前的Activity是否是Launcher界面的Activity。由于Activity是以堆栈的形式被管理的,因此,只要我们查看栈顶的Activity是否是Launcher的Activity即可。要获取Activity的Task信息,需要在Manifest中添加对应权限,<uses-permission android:name = “android.permission.GET_TASKS”/>。
     private String getTopActivity(Context context) {
         //获取ActivityManager对象
         ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE) ;
         /*
          * 拿到当前正在运行的Task列表,该列表按照最近使用的时间顺序排列,其中的参数表示需要返回的最大列表项数目。
          * 这里我们只需要拿到处于onResume状态的Activity所在的Task。
          */
         List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1) ;
         if(runningTaskInfos != null) {
             //拿到该task中的栈顶Activity
             return (runningTaskInfos.get(0).topActivity).toString() ;
         } else {
             return null;
         }
     }


    展开全文
  • 建个浮动窗口,里面塞个Tree,已经在tree里写好右键菜单,所以想去掉浮动窗口的右键菜单,是用2010 ribbon界面开发的,pOutlookBar->AddControl(&m_tree, _T("目录"), -1, TRUE, dwStyle);其中dwstyle直接...
  • html 浮动窗口

    千次阅读 2015-03-10 10:24:36
    "取消' id='cancelButton' onclick='document.body.removeChild(this.parentNode);'/>"; document.body.appendChild(div); document.all.behaviorValue.focus(); } function saveBehaviorname(obj,id) { ...
    		<input type="text" size="84" id="receiver"/>
    		<input type="button" value="批量输入" οnclick="createInputDialog(this,'1','')" name="riskbehavior"/>	


    function createInputDialog(obj,id,value)
    {  
        var div=document.getElementById("editBehaviorDiv");  
        if(div!=null)  
            document.body.removeChild(div);  
        div = document.createElement("div");   
        div.id="editBehaviorDiv";  
        div.style.position='absolute';  
        var op=getoffset(obj); 
        div.style.top= "100px";  
        div.style.left= (document.body.clientWidth - 374)/2.0 + "px";  
        div.style.zIndex =100;  
        div.style.backgroundColor='#ecf1f6';  
        div.style.border="1px solid #666";  
        //div.className="td1";  
        div.innerHTML="<textarea name='behaviorValue' id='behaviorValue' cols='50' rows='8'>"+value+  
        "</textarea><br/><input type='button' value='修改' οnclick=\"saveBehaviorname(this.parentNode,'"+id+"')\" />"+  
        "<input type='button' value='取消' id='cancelButton' οnclick='document.body.removeChild(this.parentNode);'/>";  
        document.body.appendChild(div);  
        document.all.behaviorValue.focus();  
    }   
    
    function saveBehaviorname(obj,id)
    {
        var behaviorValue = document.all.behaviorValue.value;
        var idsArray = new Array(); //定义一数组 
        idsArray = behaviorValue.split("\n"); //字符分割
        var idsString = "";
        for (i = 0; i < idsArray.length; i++) 
        { 
        	var temp = idsArray[i].Trim();
        	if(temp != null && temp != "")
        	{
        		idsString = idsString + idsArray[i].Trim() + ";"
        	}
        } 
        var str = "";
        for (i = 0; i < idsArray.length; i++) 
        { 
        	str = str + idsArray[i].Trim();
        } 
        document.getElementById('receiver').value = idsString;
        document.body.removeChild(obj);
    }  
    
    function getoffset(e)   
    {   
    	var t=e.offsetTop;   
    	var l=e.offsetLeft;   
    	while(e=e.offsetParent)   
    	{   
       		t+=e.offsetTop;   
       		l+=e.offsetLeft;   
    	}   
    	var rec = new Array(1);   
    	rec[0] = t;   
    	rec[1] = l;   
    	return rec   
    } 

    效果如图:


    展开全文
  • kbgwm,无吮吸浮动窗口管理器 kbgwm是: 浮动/堆叠,如果您想尝试耕作WM,可以尝试 点击焦点,如果您想尝试草率的WM,可以尝试 非父母 sucklessy,要更改配置,只需根据自己的喜好编辑config.h并重新编译 当前...
  • 象flashget、迅雷、BT等都有浮动窗口,能详细地显示下载的详细信息,该类型的窗口有一下几个特点: 窗口无标题栏,窗口的大小跟位图一样 大。 前端显示。 在客户区内按下鼠标左键可以随意拖动窗口的位置。 ...

    简介

    象flashget、迅雷、BT等都有浮动窗口,能详细地显示下载的详细信息,该类型的窗口有一下几个特点:

    1. 窗口无标题栏,窗口的大小跟位图一样 大。
    2. 前端显示。
    3. 在客户区内按下鼠标左键可以随意拖动窗口的位置。
    4. 可以改变窗口的透明度。
    5. 双击可以将主窗口激活,并显示。

    下面就该类型窗口 的各个功能实现予以说明。

    代码的详细说明

    窗口无标题栏,窗口的大小跟位图一样大。建立一个对话框资源,设置为POPUP类型,并取消Title Bar属性。在上面插入一个图片控件,设置为导入的位图。

    	//得到位图
    	CBitmap m_Bitmap;
    	HBITMAP hBitmap = m_Logo.GetBitmap();
    	ASSERT(hBitmap);
    	//得到位图的信息
    	m_Bitmap.Attach(hBitmap);
    	BITMAP bmp;
    	m_Bitmap.GetBitmap(&bmp);
    	//得到位图的大小
    	int nX = bmp.bmWidth;
    	int nY = bmp.bmHeight;
    	//根据位图的大小移动窗口
    	MoveWindow(0,0,nX,nY);
    	m_Logo.MoveWindow(0,0,nX,nY);
    	CenterWindow();

    前端显示

    	//通过SetWindowsPos函数将窗口前端显示。
    	::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);	

    在客户区内按下鼠标左键可以随意拖动窗口的位置。响应WM_HITTEST函数,当鼠标左键按下并在客户区内,返回HTCAPTION,欺骗Windows,达到跟在标题栏拖动窗口一样的效果。

    UINT CFloatWnd::OnNcHitTest(CPoint pt)
    {
    	UINT nHitTest = CDialog::OnNcHitTest(pt);
    
    	if (nHitTest == HTCLIENT && ::GetAsyncKeyState(MK_LBUTTON) < 0) // 如果鼠标左键按下,GetAsyncKeyState函数的返回值小于0
    
    		nHitTest = HTCAPTION;
    
    	return nHitTest;
    }

    改变窗口的透明度。将窗口样式设置为WS_EX_LAYERED,并调用SetLayeredWindowAttributes函数来改变窗口的透明度。WS_EX_LAYERED可能没定义,我们可以直接取值0x80000。

    	//加入WS_EX_LAYERED扩展属性
    	SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
    

    BOOL SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);

    hwnd是要改变的窗口,当dwFlags为LWA_ALPHA(0x2)时,crKey参数没用,bAlpha为透明度,取值在0~255之间。该函数要从User.dll中载入。

    //更新窗口透明度的代码,其中iTransparent为透明度。
    void CFloatWnd::OnUpdateTransparent(int iTransparent)
    {
    	HINSTANCE hInst = LoadLibrary("User32.DLL");
    	if(hInst)
    	{
    		typedef BOOL (WINAPI *SLWA)(HWND,COLORREF,BYTE,DWORD);
    		SLWA pFun = NULL;
    		//取得SetLayeredWindowAttributes函数指针 
    		pFun = (SLWA)GetProcAddress(hInst,"SetLayeredWindowAttributes");
    		if(pFun)
    		{
    			pFun(m_hWnd,0,iTransparent,2);
    		}
    		FreeLibrary(hInst); 
    	}
    }

    双击可以将主窗口激活并显示。由于WM_HITTEST消息的影响,我们双击鼠标的时候产生的是WM_NCLBUTTONDBLCLK消息,而不是WM_LBUTTONDBLCLK消息。

    void CFloatWnd::OnNcLButtonDblClk(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default	
    	CWnd *pParent = GetParent();
    	ASSERT(pParent);
    	//显示窗口
    	if(!pParent->IsWindowVisible())
    		pParent->ShowWindow(SW_SHOW);
    	//置窗口到最前面
    	pParent->SetForegroundWindow();
    
    	CDialog::OnNcLButtonDblClk(nFlags, point);
    }

    关于调节透明度的Slider使用,也写了一些代码,一并贴出来,供大家参考。

    void CMainDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    	// TODO: Add your message handler code here and/or call default
    	//得到Slider的位置
    	int iCurPos = m_Slider.GetPos();	
    	//得到最大值、最小值,及页大小
    	int nMax = m_Slider.GetRangeMax();
    	int nMin = m_Slider.GetRangeMin();
    	int nPageSize = m_Slider.GetPageSize();
    
    	switch(nSBCode)
    	{
    	case SB_LINELEFT:
    		if(iCurPos > nMin)
    			iCurPos --;
    		break;
    	case SB_LINERIGHT:
    		if(iCurPos < nMax)
    			iCurPos ++;
    		break;
    	case SB_PAGELEFT:
    		if(iCurPos > nMin)
    			iCurPos = max(nMin,iCurPos - nPageSize);
    		break;
    	case SB_PAGERIGHT:
    		if(iCurPos < nMax)
    			iCurPos = min(nMax,iCurPos + nPageSize);
    		break;
    	case SB_THUMBTRACK:
    		iCurPos = nPos;
    		break;
    	case SB_THUMBPOSITION:
    		iCurPos = nPos;
    		break;		
    	}
    	//设置Slider位置
    	m_Slider.SetPos(iCurPos);
    	//更新透明度
    	pFloatWnd->OnUpdateTransparent(iCurPos);
    	
    	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
    }

    至于该窗口的右键菜单,窗口的显示与隐藏,程序的退出等简单代码我就不多介绍了。

    该程序在Windows xp sp2和Visual C++6.0下编译调试成功。

    转载于:https://www.cnblogs.com/rogee/archive/2011/03/31/2000456.html

    展开全文
  • android 浮动窗口学习笔记及个人理解(仿360手机助手)
  • 不小心点错了哪里,现在idea得services窗口变成浮动的,非常影响调试,如图 解决: 右键Services——>View Mode——>Undock OK,搞定
  • 问题描述:word窗口最小化还原缩放变成了小的浮动窗口,如下图, 处理方法:处理方法其实很简单,只需要2步,如下: (原因是每次打开的word文档窗口大小具有记忆功能。) 1.鼠标拖动,手动拉伸word窗口边框到...
  • 一直很羡慕QQ的远程协助的画面,由原来吸附在主画面的窗口点击浮动窗口后,独立了!不知道实现的方法,今天测试在编写让窗口包含子窗口的时候实现了。 让窗口包含子窗口的方法:1、首先要建立一个style为下层窗口,...
  • 本文实例讲述了JS实现可缩放、拖动、关闭和最小化的浮动窗口方法。分享给大家供大家参考。具体实现方法如下:代码如下:JS实现可缩放、拖动、关闭和最小化的浮动窗口var zindex=0 //全局变量function dragClass(name,...
  • 1, 浮动窗口注释改进 你是否在eclipse里使用过这样一个功能: 当鼠标移动到有javadoc注释的接口方法时, 会出现一个悬浮窗。框内显示该接口方法的详细javadoc内容。(如果没有显示,请调大eclipse.ini里的最大内...
  • JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例 阅读:2936时间:4 分钟前 这篇文章主要介绍了JS实现可缩放、拖动、关闭和最小化的浮动窗口的方法,实例分析了javascript操作窗口层的技巧,需要的朋友可以...
  • * @brief 浮动窗口实现 * * Detailed description. */ class FloatingWindow { public: /** * @brief Constructor for FloatingWindow. */ FloatingWindow(); /** * @brief Destructor for...
  • } //取消浮动 和 virtual BOOL CanBeClosed() const { return FALSE;} //没有关闭按钮 对于单个独立存在的窗口是好用的,但是一旦调用了AttachToTabWnd()放到同一个选项卡里面之后就不起作用了。 何解嘞?...
  • 1.浮动窗口的实现原理看到上图的那个小Android图标了吧,它不会被其他组建遮挡,也可以响应用户的点击和拖动事件,它的显示和消失由WindowManager直接管理,它就是Android浮动窗口。Android浮动窗口的实现主要是靠...
  • 1.浮动窗口的实现原理看到上图的那个小Android图标了吧,它不会被其他组建遮挡,也可以响应用户的点击和拖动事件,它的显示和消失由WindowManager直接管理,它就是Android浮动窗口。Android浮动窗口的实现主要是靠...
  • <div><input type="submit" id="loginbt" value="登录" />取消" /> <!-- 由静寞小森http://blog.sina.com.cn/u/1586802947 奉献给大家,希望大家交流 --> // JavaScript Document $(document).ready...
  • 这个设置工具栏浮动的 ueditor.config.js修改如下 [code="java"] //autoFloatEnabled //是否保持toolbar的位置不动,默认true ,autoFloatEnabled:false [/code]
  • Android Studio 的工具窗口都可以变成浮动窗口,如果有多个显示器的话,这种模式非常方便。方法如下: 然后就像下图那样,可以拖拽了。如果你不小心关了,没有关系。再次点击工具栏,浮动窗口就回显示在上次关闭...
  • 我在卸载了Pycharm的社区版改用专业版后,发现原本显示图片的figure窗口被放到SciView工具窗口了,但个人还是喜欢原先浮动的那种显示窗口,查了下原本是专业版的Pycharm支持Scientific模式,所以原先的图片显示窗口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,191
精华内容 3,676
关键字:

如何取消浮动窗口